[adios] 01/07: Upstream release 1.11.0

Alastair McKinstry mckinstry at moszumanska.debian.org
Tue Apr 4 12:09:16 UTC 2017


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository adios.

commit 0c48e5421cc45511653166de865818fb1a3eacbc
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Mon Nov 21 13:09:01 2016 +0000

    Upstream release 1.11.0
---
 CMakeLists.txt                                     |    73 +
 COPYING                                            |    14 +-
 Makefile.in                                        |     5 +-
 NEWS                                               |    21 +
 aclocal.m4                                         |     1 +
 cmake_init                                         |    15 +-
 config.h.in                                        |    12 +
 config/ac_dataspaces.m4                            |    54 +-
 config/ac_dimes.m4                                 |    47 +-
 config/ac_zfp.m4                                   |    83 +
 configure                                          |   839 +-
 configure.ac                                       |    58 +-
 examples/C/CMakeLists.txt                          |     2 +-
 examples/C/Makefile.am                             |     4 +-
 examples/C/Makefile.in                             |    10 +-
 examples/C/arrays/Makefile.in                      |     5 +-
 examples/C/attributes/Makefile.in                  |     5 +-
 examples/C/flexpath_arrays/Makefile.in             |     5 +-
 .../global_range_select/Makefile.in                |     5 +-
 .../C/flexpath_arrays/process_select/Makefile.in   |     5 +-
 examples/C/global-array-time/Makefile.in           |     5 +-
 examples/C/global-array-time/adios_globaltime.c    |    89 +-
 examples/C/global-array-time/adios_globaltime.xml  |     7 +-
 .../C/global-array-time/adios_globaltime_no_xml.c  |     4 +-
 examples/C/global-array/Makefile.in                |     5 +-
 .../global-array/adios_global_aggregate_by_color.c |     2 +-
 examples/C/global-array/adios_global_no_xml.c      |    95 +-
 examples/C/global-array/no_xml_write_byid.c        |     2 +-
 examples/C/icee_arrays/Makefile.in                 |     5 +-
 examples/C/icee_arrays/array/Makefile.in           |     5 +-
 examples/C/icee_arrays/array/adios_write.c         |     2 +-
 examples/C/manual/Makefile.in                      |     5 +-
 examples/C/query/Makefile.in                       |     5 +-
 examples/C/query/write_table.c                     |     2 +-
 examples/C/query/write_vars.c                      |     2 +-
 examples/C/read_all/Makefile.in                    |     5 +-
 examples/C/scalars/Makefile.in                     |     5 +-
 examples/C/schema/Makefile.in                      |     5 +-
 examples/C/schema/rectilinear2d_noxml.c            |     2 +-
 examples/C/schema/structured2d_noxml.c             |     2 +-
 examples/C/schema/tri2d_noxml.c                    |     2 +-
 examples/C/schema/uniform2d_noxml.c                |     2 +-
 examples/C/stat/Makefile.in                        |     5 +-
 examples/C/time_aggregation/CMakeLists.txt         |    24 +
 examples/C/time_aggregation/Makefile.am            |    23 +
 .../C/{attributes => time_aggregation}/Makefile.in |    72 +-
 examples/C/time_aggregation/time_aggregation.c     |   111 +
 examples/C/time_aggregation/time_aggregation.xml   |    45 +
 .../C/time_aggregation/time_aggregation_no_xml.c   |   158 +
 examples/C/transforms/Makefile.in                  |     5 +-
 examples/Fortran/Makefile.in                       |     5 +-
 examples/Fortran/arrays/Makefile.in                |     5 +-
 examples/Fortran/global-array-time/Makefile.in     |     5 +-
 examples/Fortran/global-array/Makefile.in          |     5 +-
 .../Fortran/global-array/adios_global_no_xml.F90   |     3 +-
 .../Fortran/global-array/no_xml_write_byid.F90     |     2 +-
 examples/Fortran/scalars/Makefile.in               |     5 +-
 examples/Fortran/schema/Makefile.in                |     5 +-
 examples/Fortran/schema/rectilinear2d_noxml.F90    |     2 +-
 examples/Fortran/schema/structured2d_noxml.F90     |     2 +-
 examples/Fortran/schema/tri2d_noxml.F90            |     2 +-
 examples/Fortran/schema/tri2d_noxml_seperate.F90   |     4 +-
 examples/Fortran/schema/uniform2d_noxml.F90        |     2 +-
 examples/Makefile.in                               |     5 +-
 runconf                                            |    50 +-
 src/CMakeLists.txt                                 |    69 +-
 src/Makefile.am                                    |    69 +-
 src/Makefile.in                                    |   383 +-
 src/core/adios.c                                   |    77 +-
 src/core/adios_bp_v1.c                             |     1 +
 src/core/adios_bp_v1.h                             |     1 +
 src/core/adios_clock.h                             |     2 +-
 src/core/adios_icee.h                              |     2 +
 src/core/adios_internals.c                         |   741 +-
 src/core/adios_internals.h                         |   116 +-
 src/core/adios_internals_mxml.c                    |   130 +-
 src/core/adios_read.c                              |     3 +-
 src/core/adios_transform_methods.c                 |    59 +
 src/core/adiosf.c                                  |    31 +-
 src/core/adiosf_defs_mod.f90                       |     8 +
 src/core/adiosf_write_mod.f90                      |  6812 +++++-----
 src/core/bp_utils.c                                |     4 +-
 src/core/bp_utils.h                                |     2 +-
 src/core/buffer.c                                  |    12 +
 src/core/common_adios.c                            |   655 +-
 src/core/common_adios.h                            |     2 +-
 src/core/common_read.c                             |    57 +-
 src/core/common_read.h                             |     2 +-
 src/core/flexpath.h                                |     1 +
 src/core/mpidummy.c                                |    22 +
 src/mxml/Makefile.am                               |     2 +-
 src/mxml/Makefile.in                               |     7 +-
 src/public/adios.h                                 |    24 +-
 src/public/adios_error.h                           |     1 +
 src/public/adios_query.h                           |    15 +
 src/public/adios_read_v2.h                         |    17 +-
 src/public/adios_transform_methods.h               |    25 +
 src/public/adios_types.h                           |     9 +
 src/public/adios_version.h                         |     6 +-
 src/public/mpidummy.h                              |    10 +-
 src/query/common_query.c                           |    58 +
 src/read/read_flexpath.c                           |    83 +-
 src/read/read_icee.c                               |   323 +-
 src/transforms/Makefile.plugins                    |     4 +
 src/transforms/adios_transform_zfp_common.h        |   235 +
 src/transforms/adios_transform_zfp_read.c          |   223 +
 src/transforms/adios_transform_zfp_write.c         |   268 +
 src/transforms/transform_plugins.h                 |     1 +
 src/write/adios_dataspaces.c                       |     2 +-
 src/write/adios_flexpath.c                         |   138 +-
 src/write/adios_icee.c                             |   300 +-
 src/write/adios_mpi.c                              |    32 +-
 src/write/adios_mpi_amr.c                          |    89 +-
 src/write/adios_mpi_lustre.c                       |     3 -
 src/write/adios_posix.c                            |    12 +-
 src/write/adios_var_merge.c                        |     7 +-
 src/zfp/CMakeLists.txt                             |    40 +
 src/zfp/Makefile.am                                |    61 +
 src/{mxml => zfp}/Makefile.in                      |   296 +-
 src/zfp/zfp-0.5.0/API                              |   439 +
 src/zfp/zfp-0.5.0/Config                           |    49 +
 src/zfp/zfp-0.5.0/FAQ                              |   371 +
 src/zfp/zfp-0.5.0/LICENSE                          |    57 +
 src/zfp/zfp-0.5.0/Makefile                         |    16 +
 src/zfp/zfp-0.5.0/README                           |   422 +
 src/zfp/zfp-0.5.0/VERSIONS                         |   161 +
 src/zfp/zfp-0.5.0/array/cache.h                    |   224 +
 src/zfp/zfp-0.5.0/array/memory.h                   |    42 +
 src/zfp/zfp-0.5.0/array/zfparray.h                 |   105 +
 src/zfp/zfp-0.5.0/array/zfparray1.h                |   243 +
 src/zfp/zfp-0.5.0/array/zfparray2.h                |   273 +
 src/zfp/zfp-0.5.0/array/zfparray3.h                |   284 +
 src/zfp/zfp-0.5.0/array/zfpcodec.h                 |    17 +
 src/zfp/zfp-0.5.0/array/zfpcodecd.h                |   149 +
 src/zfp/zfp-0.5.0/array/zfpcodecf.h                |   149 +
 src/zfp/zfp-0.5.0/examples/Makefile                |    35 +
 src/zfp/zfp-0.5.0/examples/array2d.h               |    25 +
 src/zfp/zfp-0.5.0/examples/diffusion.cpp           |   107 +
 src/zfp/zfp-0.5.0/examples/fields.c                | 12201 +++++++++++++++++
 src/zfp/zfp-0.5.0/examples/fields.h                |    20 +
 src/zfp/zfp-0.5.0/examples/pgm.c                   |   112 +
 src/zfp/zfp-0.5.0/examples/simple.c                |    99 +
 src/zfp/zfp-0.5.0/examples/speed.c                 |   136 +
 src/zfp/zfp-0.5.0/examples/testzfp.cpp             |   705 +
 src/zfp/zfp-0.5.0/examples/zfp.c                   |   480 +
 src/zfp/zfp-0.5.0/inc/bitstream.h                  |    87 +
 src/zfp/zfp-0.5.0/inc/macros.h                     |     7 +
 src/zfp/zfp-0.5.0/inc/system.h                     |    20 +
 src/zfp/zfp-0.5.0/inc/types.h                      |    30 +
 src/zfp/zfp-0.5.0/inc/zfp.h                        |   549 +
 src/zfp/zfp-0.5.0/src/Makefile                     |    21 +
 src/zfp/zfp-0.5.0/src/bitstream.c                  |     4 +
 src/zfp/zfp-0.5.0/src/block1.h                     |     1 +
 src/zfp/zfp-0.5.0/src/block2.h                     |     1 +
 src/zfp/zfp-0.5.0/src/block3.h                     |     1 +
 src/zfp/zfp-0.5.0/src/decode1d.c                   |    10 +
 src/zfp/zfp-0.5.0/src/decode1f.c                   |    10 +
 src/zfp/zfp-0.5.0/src/decode2d.c                   |    10 +
 src/zfp/zfp-0.5.0/src/decode2f.c                   |    10 +
 src/zfp/zfp-0.5.0/src/decode3d.c                   |    10 +
 src/zfp/zfp-0.5.0/src/decode3f.c                   |    10 +
 src/zfp/zfp-0.5.0/src/encode1d.c                   |    10 +
 src/zfp/zfp-0.5.0/src/encode1f.c                   |    10 +
 src/zfp/zfp-0.5.0/src/encode2d.c                   |    10 +
 src/zfp/zfp-0.5.0/src/encode2f.c                   |    10 +
 src/zfp/zfp-0.5.0/src/encode3d.c                   |    10 +
 src/zfp/zfp-0.5.0/src/encode3f.c                   |    10 +
 src/zfp/zfp-0.5.0/src/inline/bitstream.c           |   410 +
 src/zfp/zfp-0.5.0/src/inline/inline.h              |    12 +
 src/zfp/zfp-0.5.0/src/template/codec.h             |     3 +
 src/zfp/zfp-0.5.0/src/template/codec1.c            |    11 +
 src/zfp/zfp-0.5.0/src/template/codec2.c            |    39 +
 src/zfp/zfp-0.5.0/src/template/codec3.c            |    97 +
 src/zfp/zfp-0.5.0/src/template/compress.c          |   104 +
 src/zfp/zfp-0.5.0/src/template/decode.c            |   165 +
 src/zfp/zfp-0.5.0/src/template/decode1.c           |    55 +
 src/zfp/zfp-0.5.0/src/template/decode2.c           |    62 +
 src/zfp/zfp-0.5.0/src/template/decode3.c           |    70 +
 src/zfp/zfp-0.5.0/src/template/decompress.c        |   104 +
 src/zfp/zfp-0.5.0/src/template/encode.c            |   216 +
 src/zfp/zfp-0.5.0/src/template/encode1.c           |    55 +
 src/zfp/zfp-0.5.0/src/template/encode2.c           |    65 +
 src/zfp/zfp-0.5.0/src/template/encode3.c           |    77 +
 src/zfp/zfp-0.5.0/src/template/template.h          |    12 +
 src/zfp/zfp-0.5.0/src/traitsd.h                    |    11 +
 src/zfp/zfp-0.5.0/src/traitsf.h                    |    17 +
 src/zfp/zfp-0.5.0/src/zfp.c                        |   719 +
 tests/C/Makefile.in                                |     5 +-
 tests/C/fgr_tests/Makefile.in                      |     5 +-
 tests/C/flexpath_tests/1D_arr_global/Makefile.in   |     5 +-
 tests/C/flexpath_tests/1D_arr_global/reader.c      |     6 +-
 .../flexpath_tests/1D_arr_global_noxml/Makefile.in |     5 +-
 .../C/flexpath_tests/1D_arr_global_noxml/writer.c  |     4 +-
 tests/C/flexpath_tests/Makefile.in                 |     5 +-
 .../flexpath_tests/global_range_select/Makefile.in |     5 +-
 tests/C/flexpath_tests/maya_append/Makefile.in     |     5 +-
 tests/C/flexpath_tests/maya_append/writer.c        |     2 +-
 tests/C/flexpath_tests/maya_noxml/Makefile.in      |     5 +-
 tests/C/flexpath_tests/maya_noxml/writer.c         |     2 +-
 tests/C/flexpath_tests/scalar/Makefile.in          |     5 +-
 tests/C/flexpath_tests/scalar/writer.c             |     2 +-
 tests/C/query/Makefile.in                          |     5 +-
 tests/C/query/alacrity/Makefile.in                 |     5 +-
 tests/C/query/common/Makefile.in                   |     5 +-
 tests/C/query/fastbit/Makefile.in                  |     5 +-
 tests/Fortran/Makefile.in                          |     5 +-
 tests/Makefile.in                                  |     5 +-
 tests/bp_read/Makefile.in                          |     5 +-
 tests/genarray/Makefile.in                         |     5 +-
 tests/suite/Makefile.in                            |     5 +-
 tests/suite/programs/Makefile.in                   |     5 +-
 tests/suite/programs/big_file.c                    |     2 +-
 tests/suite/programs/blocks.c                      |     2 +-
 tests/suite/programs/connect_to_space_subset.c     |     2 +-
 tests/suite/programs/examples/Makefile.in          |     5 +-
 .../suite/programs/examples/attributes/Makefile.in |     5 +-
 .../programs/examples/global_array/Makefile.in     |     5 +-
 .../examples/global_array/global_array_F.xml       |     2 +-
 .../global_array_aggregate_by_color_C.c            |     2 +-
 .../global_array/global_array_write_byid_noxml_C.c |     2 +-
 .../global_array_write_byid_noxml_F.F90            |     2 +-
 .../global_array/global_array_write_noxml_C.c      |     2 +-
 .../global_array/global_array_write_noxml_F.F90    |     2 +-
 .../examples/global_array_time/Makefile.am         |     2 +-
 .../examples/global_array_time/Makefile.in         |     7 +-
 .../global_array_time/global_array_time_aggr_C.xml |     3 +-
 .../global_array_time/global_array_time_write_C.c  |    84 +-
 .../programs/examples/local_array/Makefile.in      |     5 +-
 tests/suite/programs/examples/scalars/Makefile.in  |     5 +-
 .../programs/examples/scalars/scalars_read_C.c     |    28 +-
 .../programs/examples/scalars/scalars_read_F.F90   |    30 +-
 tests/suite/programs/many_vars.c                   |     2 +-
 tests/suite/programs/reuse_dim.c                   |     2 +-
 tests/suite/programs/selections.c                  |     2 +-
 tests/suite/programs/steps_write.c                 |     2 +-
 tests/suite/reference/attributes_bpls.txt          |     2 +-
 tests/suite/reference/global_array_no_xml_bpls.txt |     2 +-
 .../suite/reference/global_array_no_xml_f_bpls.txt |     2 +-
 tests/suite/reference/global_array_time_bpls.txt   |     4 +-
 tests/suite/reference/local_array_C_bpls.txt       |     4 +-
 tests/suite/reference/no_xml_write_byid_bpls.txt   |     2 +-
 tests/suite/reference/no_xml_write_byid_f_bpls.txt |     2 +-
 tests/suite/test.sh                                |    17 +-
 tests/suite/tests/01_scalars.sh                    |     4 +-
 tests/suite/tests/05_global_array_time.sh          |    53 +-
 tests/suite/tests/19_query.sh                      |     9 +-
 tests/test_src/CMakeLists.txt                      |     2 +-
 tests/test_src/Makefile.am                         |    12 +-
 tests/test_src/Makefile.in                         |   105 +-
 tests/test_src/array_attribute.c                   |   327 +
 tests/test_src/group_free_test.c                   |     2 +-
 tests/test_src/query_minmax.c                      |     2 +-
 tests/test_src/read_points_2d.c                    |     2 +-
 tests/test_src/read_points_3d.c                    |   774 --
 utils/Makefile.in                                  |     5 +-
 utils/adios_lint/Makefile.in                       |     5 +-
 utils/adios_list_methods/Makefile.in               |     5 +-
 utils/adios_list_methods/adios_list_methods.c      |   425 +-
 utils/bp2ascii/Makefile.in                         |     5 +-
 utils/bp2bp/Makefile.in                            |     5 +-
 utils/bp2h5/Makefile.in                            |     5 +-
 utils/bp2h5/bp2h5.c                                |     8 +-
 utils/bp2ncd/Makefile.in                           |     5 +-
 utils/bpdiff/Makefile.in                           |     5 +-
 utils/bpdump/Makefile.in                           |     5 +-
 utils/bpls/Makefile.in                             |     5 +-
 utils/bpmeta/Makefile.in                           |     5 +-
 utils/bprecover/Makefile.in                        |     5 +-
 utils/bpsplit/Makefile.in                          |     5 +-
 utils/fastbit/Makefile.in                          |     5 +-
 utils/gpp/CMakeLists.txt                           |     3 +-
 utils/gpp/Makefile.am                              |     7 +-
 utils/gpp/Makefile.in                              |    62 +-
 utils/gpp/gpp.py                                   |     9 +-
 utils/gpp/gpp.py.in                                |     7 +
 utils/skel/CMakeLists.txt                          |    31 +-
 utils/skel/Makefile.am                             |     2 +-
 utils/skel/Makefile.in                             |     7 +-
 .../skel/bin/{set_method.sh => skel_set_method.sh} |     0
 utils/skel/etc/Makefile.in                         |     5 +-
 utils/skel/etc/templates/Makefile.default.tpl      |     2 +-
 utils/skel/etc/templates/submit_jaguar.tpl         |     2 +-
 utils/skel/etc/templates/submit_nautilus.tmpl      |     2 +-
 utils/skel/etc/templates/submit_nautilus.tpl       |     2 +-
 utils/skel/etc/templates/submit_sith.tmpl          |     2 +-
 utils/skel/etc/templates/submit_sith.tpl           |     2 +-
 utils/skel/src/Makefile.in                         |     5 +-
 utils/skeldump/Makefile.in                         |     5 +-
 utils/skeldump/skeldump.c                          |     2 +-
 wrappers/java/CMakeLists.txt                       |     6 +-
 wrappers/java/gov/ornl/ccs/Adios.java              |     8 +-
 wrappers/java/gov_ornl_ccs_Adios.cxx               |    40 +-
 wrappers/java/test/AdiosNoxmlTest.java             |    14 +-
 wrappers/numpy/adios.cpp                           | 12949 +++++++++++-------
 wrappers/numpy/adios.pyx                           |   288 +-
 wrappers/numpy/adios_mpi.cpp                       | 13041 ++++++++++++-------
 wrappers/numpy/adios_mpi.pyx                       |   288 +-
 wrappers/numpy/build-and-install.sh                |    14 +
 wrappers/numpy/doc/source/build.rst                |    24 +-
 wrappers/numpy/src/__init__.py                     |     2 +-
 wrappers/numpy/src_mpi/__init__.py                 |     2 +-
 wrappers/numpy/test/test_adios_writer_unittest.py  |    43 +
 wrappers/numpy/tests/test_adios_attribute.py       |     3 +-
 wrappers/numpy/tests/test_adios_mpi_writer.py      |    18 +-
 wrappers/numpy/tests/test_adios_writer.py          |    15 +-
 305 files changed, 46943 insertions(+), 15799 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 954d132..30bcb04 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -547,6 +547,26 @@ elseif(DEFINED ENV{ALACRITY})
   endif()
 endif()
 
+if(DEFINED ENV{ZFP_DIR})
+  if("$ENV{ZFP_DIR}" STREQUAL "")
+    set(ZFP OFF CACHE BOOL "")
+  else()
+    set(ZFP ON CACHE BOOL "")
+    set(ZFP_DIR "$ENV{ZFP_DIR}")
+  endif()
+elseif(DEFINED ENV{ZFP})
+  if("$ENV{ZFP}" STREQUAL "")
+    set(ZFP OFF CACHE BOOL "")
+  else()
+    set(ZFP ON CACHE BOOL "")
+    set(ZFP_DIR "$ENV{ZFP}")
+  endif()
+else()
+    set(BUILD_ZFP ON CACHE BOOL "")
+    set(ZFP ON CACHE BOOL "")
+    set(ZFP_DIR ${PROJECT_SOURCE_DIR}/src/zfp/zfp-0.5.0)
+endif()
+
 
 ###################### end of external library is used(ON) or not (OFF) ##############################
 
@@ -1321,6 +1341,27 @@ if(ALACRITY)
   endif()
 endif()
 
+set(HAVE_ZFP 0)
+if(ZFP)
+  find_path(ZFP_INCLUDE_DIR NAMES zfp.h PATHS ${ZFP_DIR}/inc ${ZFP_DIR}/include)
+  if(ZFP_INCLUDE_DIR)
+    set(HAVE_ZFP_H 1)
+  endif()
+  if (BUILD_ZFP)
+    set(HAVE_ZFP 1)
+    set(ZFP_CPPFLAGS "${MACRODEFFLAG}ZFP -I${ZFP_INCLUDE_DIR}")
+    message(STATUS "ZFP will be built for ADIOS in ./src/zfp")
+  else(BUILD_ZFP)
+    find_library(ZFP_LIBS NAMES zfp PATHS ${ZFP_DIR}/lib)
+    if(ZFP_INCLUDE_DIR AND ZFP_LIBS)
+      set(HAVE_ZFP 1)
+      set(ZFP_CPPFLAGS "${MACRODEFFLAG}ZFP -I${ZFP_INCLUDE_DIR}")
+    endif()
+    message(STATUS "ZFP will be used from ${ZFP_DIR}")
+  endif(BUILD_ZFP)
+else(ZFP)
+  message(STATUS "ZFP is turned off")
+endif(ZFP)
 
 # Define to 1 if your C compiler doesn't accept -c and -o together.
 
@@ -1718,6 +1759,18 @@ if(HAVE_ALACRITY)
   set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${ALACRITY_LIBS})
 endif()
 
+if(HAVE_ZFP)
+  set(ADIOSLIB_CPPFLAGS "${ADIOSLIB_CPPFLAGS} ${ZFP_CPPFLAGS}")
+  set(ADIOSLIB_LDADD ${ADIOSLIB_LDADD} ${ZFP_LIBS})
+  set(ADIOSLIB_SEQ_CPPFLAGS "${ADIOSLIB_SEQ_CPPFLAGS} ${ZFP_CPPFLAGS}")
+  set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${ZFP_LIBS})
+  set(ADIOSLIB_INT_CPPFLAGS "${ADIOSLIB_INT_CPPFLAGS} ${ZFP_CPPFLAGS}")
+  set(ADIOSLIB_INT_LDADD ${ADIOSLIB_INT_LDADD} ${ZFP_LIBS})
+  set(ADIOSREADLIB_CPPFLAGS "${ADIOSREADLIB_CPPFLAGS} ${ZFP_CPPFLAGS}")
+  set(ADIOSREADLIB_LDADD ${ADIOSREADLIB_LDADD} ${ZFP_LIBS})
+  set(ADIOSREADLIB_SEQ_CPPFLAGS "${ADIOSREADLIB_SEQ_CPPFLAGS} ${ZFP_CPPFLAGS}")
+  set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${ZFP_LIBS})
+endif()
 
 if(HAVE_FASTBIT)
   set(ADIOSLIB_CPPFLAGS "${ADIOSLIB_CPPFLAGS} -DFASTBIT ${FASTBIT_CPPFLAGS}")
@@ -1787,6 +1840,14 @@ if (NOT BUILD_MXML)
   set(ADIOSLIB_INT_LDADD ${ADIOSLIB_INT_LDADD} ${MXML_LIBS})
 endif()
 
+if (NOT BUILD_ZFP)
+  set(ADIOSLIB_LDADD     ${ADIOSLIB_LDADD}     ${ZFP_LIBS})
+  set(ADIOSLIB_SEQ_LDADD ${ADIOSLIB_SEQ_LDADD} ${ZFP_LIBS})
+  set(ADIOSLIB_INT_LDADD ${ADIOSLIB_INT_LDADD} ${ZFP_LIBS})
+  set(ADIOSREADLIB_LDADD ${ADIOSREADLIB_LDADD} ${ZFP_LIBS})
+  set(ADIOSREADLIB_SEQ_LDADD ${ADIOSREADLIB_SEQ_LDADD} ${ZFP_LIBS})
+endif()
+
 add_subdirectory(src)
 add_subdirectory(utils)
 add_subdirectory(tests)
@@ -2056,6 +2117,18 @@ else()
   message("  - No ALACRITY to build ALACRITY transform & query method")
 endif()
 
+if(BUILD_ZFP)
+  message("  - ZFP is built with ADIOS")
+elseif (HAVE_ZFP)
+    message("  - ZFP")
+    message("      - ZFP_CPPFLAGS = ${ZFP_CPPFLAGS}")
+    message("      - ZFP_LIBS = ${ZFP_LIBS}")
+    message("")
+else()
+    message("  - No ZFP to build ZFP transform method")
+endif()
+
+
 if(HAVE_BGQ)
   message("  - BGQ METHOD is enabled")
 else()
diff --git a/COPYING b/COPYING
index a827741..d06403d 100644
--- a/COPYING
+++ b/COPYING
@@ -26,9 +26,17 @@ Additional BSD Notice
 
 Note about Mini-XML
 ===================
-The mxml/mxml-2.9 subdirectory contains the unmodified code of Mini-XML 2.9 which is otherwise freely accessible from
+The src/mxml/mxml-2.9 subdirectory contains the unmodified code of Mini-XML 2.9 which is otherwise freely accessible from
    http://www.msweet.org/projects.php/Mini-XML
 The author of that open source software is Michael Sweet
-The mxml-2.9 library comes with the LGPL v2 license, see mxml/mxml-2.9/COPYING
-ADIOS can be linked with a pre-installed mxml library otherwise it will build the libmxml.a library from this included source.
+The mxml-2.9 library comes with the LGPL v2 license, see src/mxml/mxml-2.9/COPYING
+ADIOS can be linked with a pre-installed mxml library otherwise it will build mxml from this included source.
+
+Note about ZFP
+===================
+The src/zfp/zfp-0.5.0 subdirectory contains the unmodified code of ZFP which is otherwise freely accessible from
+  http://computation.llnl.gov/projects/floating-point-compression
+The author of that open source software is Peter Lindstrom
+The zfp library comes with a BSD license, see src/zfp/zfp-0.5.0/COPYING
+ADIOS can be linked with a pre-installed zfp library otherwise it will build zfp from this included source.
 
diff --git a/Makefile.in b/Makefile.in
index 38e526b..0b884d9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -128,7 +128,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -486,6 +486,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/NEWS b/NEWS
index af13359..020f86c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,26 @@
+1.11.0 Release November 2016
+    - Time aggregation (temporal aggregation of an output in memory)
+      see adios_set_time_aggregation() or the <time-aggregation> element in the XML syntax.
+    - ZFP lossy compression transform method
+    - Python wrapper includes functions for:
+        - Selecting transforms and time aggregation: adios_set_transform()
+        - Time aggregation: adios_set_time_aggregation()
+        - Set maximum buffer size used by any ADIOS group: adios_set_max_buffer_size()
+    - Collect min/max statistics only by default
+      adios_declare_group() last argument type changed to be an option for statistics. 
+      Options are: adios_stat_no, adios_stat_minmax, adios_stat_full, and adios_stat_default, which is minmax
+    - Added functions to C API to detect available methods in the ADIOS installation
+        adios.h: adios_available_write_methods()
+        adios_read.h: adios_available_read_methods()
+        adios_transform_methods.h: adios_available_transform_methods()
+        adios_query.h: adios_available_query_methods()
+    - Performance bug in MPI_AGGREGATE method in 1.9/1.10 fixed 
+    - fix: bug building with hdf5 1.10
+
 1.10.0 Release July 2016
+    - Updated Query API and Minmax, FastBit and Alacrity query methods
     - Fortran API for inquiring selections
+    - ADIOS builds without first installing Mini-XML separately
     - bprecover utility
       - recover a BP file which has a damaged index data
     - adios_group_size() optional now
diff --git a/aclocal.m4 b/aclocal.m4
index 877a246..84c17eb 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1446,6 +1446,7 @@ m4_include([config/ac_pami.m4])
 m4_include([config/ac_phdf5.m4])
 m4_include([config/ac_portals.m4])
 m4_include([config/ac_szip.m4])
+m4_include([config/ac_zfp.m4])
 m4_include([config/ac_zlib.m4])
 m4_include([config/acx_mpi.m4])
 m4_include([config/acx_pthread.m4])
diff --git a/cmake_init b/cmake_init
index 5f77d1c..9a0b60c 100755
--- a/cmake_init
+++ b/cmake_init
@@ -528,16 +528,17 @@ elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ];
         echo "Configure using clang"
     fi
     # The rest is common for all
-    export CC=/usr/local/bin/mpicc
-    export FC=/usr/local/bin/mpif90
-    export CXX=/usr/local/bin/mpicxx
+    # The rest is common for all
+    export CC=mpicc #/usr/local/bin/mpicc
+    export FC=mpif90 #/usr/local/bin/mpif90
+    export CXX=mpicxx #/usr/local/bin/mpicxx
     export CFLAGS="-g -Wall -DO_LARGEFILE=0 -fno-common" 
     export BUILD_WRITE=ON
     export BUILD_FORTRAN=ON
     export adios_timers=ON
     export INSTALL_PREFIX="/opt/adios"
-    export PAR_HDF5_DIR=/usr/local
-    export PAR_HDF5_LIBS="-L/usr/local/lib -lhdf5_hl -lhdf5 -lm"
+#export PAR_HDF5_DIR=/usr/local
+#export PAR_HDF5_LIBS="-L/usr/local/lib -lhdf5_hl -lhdf5 -lm"
     unset SEQ_HDF5_DIR
     unset SEQ_HDF5_LIBS
     unset SEQ_NC_DIR
@@ -609,7 +610,7 @@ elif [ `hostname | cut -c 1-9` == "PC0098504" ]; then
     export CC=mpicc
     export CXX=mpicxx
     export FC=mpif90
-    export INSTALL_PREFIX="/opt/adios/1.10"
+    export INSTALL_PREFIX="/opt/adios"
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-g -O0 -fPIC -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast"
     export LDFLAGS="-lpthread"
@@ -626,7 +627,7 @@ elif [ `hostname | cut -c 1-7` == "adiosVM" ]; then
     export CC=mpicc
     export CXX=mpicxx
     export FC=mpif90
-    export INSTALL_PREFIX="/opt/adios/1.10"
+    export INSTALL_PREFIX="/opt/adios/1.11"
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-g -O0 -fPIC -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast"
     export BZIP2_DIR="/usr/lib"
diff --git a/config.h.in b/config.h.in
index 1c33776..418eb3d 100644
--- a/config.h.in
+++ b/config.h.in
@@ -44,6 +44,9 @@
 /* Define to 1 if you have the <bzlib.h> header file. */
 #undef HAVE_BZLIB_H
 
+/* Define to 1 if the system has the type `clockid_t'. */
+#undef HAVE_CLOCKID_T
+
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
@@ -278,12 +281,21 @@
 /* Define to 1 if you have the <szlib.h> header file. */
 #undef HAVE_SZLIB_H
 
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
 /* Define to 1 if you have the `vsnprintf' function. */
 #undef HAVE_VSNPRINTF
 
+/* Define if you have ZFP. */
+#undef HAVE_ZFP
+
+/* Define to 1 if you have the <zfp.h> header file. */
+#undef HAVE_ZFP_H
+
 /* Define if you have ZLIB. */
 #undef HAVE_ZLIB
 
diff --git a/config/ac_dataspaces.m4 b/config/ac_dataspaces.m4
index 823e304..038c072 100644
--- a/config/ac_dataspaces.m4
+++ b/config/ac_dataspaces.m4
@@ -35,6 +35,11 @@ if test "x$with_dataspaces" == "xno"; then
 
    AM_CONDITIONAL(HAVE_DATASPACES,false)
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   AC_MSG_NOTICE([    DataSpaces does not build without MPI])
+   AM_CONDITIONAL(HAVE_DATASPACES,false)
+
 else
 
     dnl allow args --with-dataspaces incdir and --with-dataspaces-libdir
@@ -81,6 +86,7 @@ else
             ac_dataspaces_ok=no
     fi
 
+    save_CC="$CC"
     save_CPPFLAGS="$CPPFLAGS"
     save_LIBS="$LIBS"
     save_LDFLAGS="$LDFLAGS"
@@ -94,9 +100,10 @@ else
     dnl else
     dnl     LIBS="$LIBS -ldspaces -ldscommon -ldart"
     dnl fi
-    LIBS="$LIBS -ldspaces -ldscommon -ldart"
+    LIBS="-ldspaces -ldscommon -ldart $LIBS"
     LDFLAGS="$LDFLAGS $DATASPACES_LDFLAGS"
     CPPFLAGS="$CPPFLAGS $DATASPACES_CPPFLAGS"
+    CC="$MPICC"
     
     if test -z "${HAVE_DATASPACES_TRUE}"; then
             AC_CHECK_HEADERS(dataspaces.h,
@@ -106,43 +113,26 @@ else
     
     if test -z "${HAVE_DATASPACES_TRUE}"; then
         # Check for the DataSpaces library and headers
-        if test "x${ac_portals_lib_ok}" == "xyes"; then 
-            AC_TRY_COMPILE([#include "dataspaces.h"],
-                    [int err; err = dspaces_init(1,1,0,"");],
-                    [DATASPACES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DATASPACES,false)])
-        elif test "x${ac_infiniband_lib_ok}" == "xyes"; then 
-            AC_TRY_COMPILE([#include "dataspaces.h"],
-                    [int err; err = dspaces_init(1,1,0,"");],
-                    [DATASPACES_LIBS="-ldspaces -ldscommon -ldart -lrdmacm"],
-                    [AM_CONDITIONAL(HAVE_DATASPACES,false)])
-        elif test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then 
-            AC_TRY_COMPILE([#include "dataspaces.h"],
+        AC_MSG_CHECKING([if dataspaces code can be compiled and linked])
+        dnl if test "x${ac_portals_lib_ok}" == "xyes"; then 
+        dnl elif test "x${ac_infiniband_lib_ok}" == "xyes"; then 
+        dnl elif test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then 
+	    dnl elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
+	    dnl elif test "x${ac_pami_lib_ok}" == "xyes"; then
+        dnl else
+        dnl fi
+            AC_TRY_LINK([#include "dataspaces.h"],
                     [int err; err = dspaces_init(1,1,0,"");],
-                    [DATASPACES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DATASPACES,false)])
-	elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-            AC_TRY_COMPILE([#include "dataspaces.h"],
-                    [int err; err = dspaces_init(1,1,0,"");],
-                    [DATASPACES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DATASPACES,false)])
-	elif test "x${ac_pami_lib_ok}" == "xyes"; then
-            AC_TRY_COMPILE([#include "dataspaces.h"],
-                    [int err; err = dspaces_init(1,1,0,"");],
-                    [DATASPACES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DATASPACES,false)])
-        else
-            dnl Now TCP is working #AM_CONDITIONAL(HAVE_DATASPACES,false)
-            AC_TRY_COMPILE([#include "dataspaces.h"],
-                    [int err; err = dspaces_init(1,1,0,"");],
-                    [DATASPACES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DATASPACES,false)])
-        fi
+                    [AC_MSG_RESULT(yes)
+                     DATASPACES_LIBS="-ldspaces -ldscommon -ldart"],
+                    [AC_MSG_RESULT(no)
+                     AM_CONDITIONAL(HAVE_DATASPACES,false)])
     fi
 
     LIBS="$save_LIBS"
     LDFLAGS="$save_LDFLAGS"
     CPPFLAGS="$save_CPPFLAGS"
+    CC="$save_CC"
     
     AC_SUBST(DATASPACES_LIBS)
     AC_SUBST(DATASPACES_LDFLAGS)
diff --git a/config/ac_dimes.m4 b/config/ac_dimes.m4
index e677dfa..0929822 100644
--- a/config/ac_dimes.m4
+++ b/config/ac_dimes.m4
@@ -32,6 +32,11 @@ if test "x$with_dimes" == "xno"; then
 
    AM_CONDITIONAL(HAVE_DIMES,false)
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   AC_MSG_NOTICE([    Dimes does not build without MPI])
+   AM_CONDITIONAL(HAVE_DIMES,false)
+
 else
 
     dnl allow args --with-dimes incdir and --with-dimes-libdir
@@ -78,6 +83,7 @@ else
             ac_dimes_ok=no
     fi
 
+    save_CC="$CC"
     save_CPPFLAGS="$CPPFLAGS"
     save_LIBS="$LIBS"
     save_LDFLAGS="$LDFLAGS"
@@ -85,13 +91,12 @@ else
         dnl LIBS="$LIBS -ldart2 -lspaces"
 	echo "DIMES currently NOT supported for Cray Portals!"
 	AM_CONDITIONAL(HAVE_DIMES, false)
-    elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-        LIBS="$LIBS -ldspaces -ldscommon -ldart"
     else
-        LIBS="$LIBS -ldspaces -ldscommon -ldart"
+        LIBS="-ldspaces -ldscommon -ldart $LIBS"
     fi
     LDFLAGS="$LDFLAGS $DIMES_LDFLAGS"
     CPPFLAGS="$CPPFLAGS $DIMES_CPPFLAGS"
+    CC="$MPICC"
     
     if test -z "${HAVE_DIMES_TRUE}"; then
             AC_CHECK_HEADERS(dimes_interface.h,
@@ -100,35 +105,27 @@ else
     fi
     
     if test -z "${HAVE_DIMES_TRUE}"; then
+        AC_MSG_CHECKING([if dimes code can be compiled and linked])
         # Check for the DataSpaces/DIMES library and headers
-        if test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then 
-            AC_TRY_LINK([#include "dimes_interface.h"],
-                    [int err; dimes_put_sync_all();],
-                    [DIMES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DIMES,false)])
-	elif test "x${ac_infiniband_lib_ok}" == "xyes"; then 
-            AC_TRY_COMPILE([#include "dimes_interface.h"],
+        dnl if test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then 
+	    dnl elif test "x${ac_infiniband_lib_ok}" == "xyes"; then 
+	    dnl elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
+	    dnl elif test "x${ac_pami_lib_ok}" == "xyes"; then
+           AC_TRY_LINK([#include "dimes_interface.h"],
                     [int err; dimes_put_sync_all();],
-                    [DIMES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DIMES,false)])
-	elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-            AC_TRY_COMPILE([#include "dimes_interface.h"],
-                    [int err; dimes_put_sync_all();],
-                    [DIMES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DIMES,false)])
-	elif test "x${ac_pami_lib_ok}" == "xyes"; then
-            AC_TRY_COMPILE([#include "dimes_interface.h"],
-                    [int err; dimes_put_sync_all();],
-                    [DIMES_LIBS="-ldspaces -ldscommon -ldart"],
-                    [AM_CONDITIONAL(HAVE_DIMES,false)])
-        else
-            AM_CONDITIONAL(HAVE_DIMES,false)
-        fi
+                    [AC_MSG_RESULT(yes)
+                     DIMES_LIBS="-ldspaces -ldscommon -ldart"],
+                    [AC_MSG_RESULT(no)
+                     AM_CONDITIONAL(HAVE_DIMES,false)])
+        dnl else
+            dnl AM_CONDITIONAL(HAVE_DIMES,false)
+        dnl fi
     fi
  
     LIBS="$save_LIBS"
     LDFLAGS="$save_LDFLAGS"
     CPPFLAGS="$save_CPPFLAGS"
+    CC="$save_CC"
     
     AC_SUBST(DIMES_LIBS)
     AC_SUBST(DIMES_LDFLAGS)
diff --git a/config/ac_zfp.m4 b/config/ac_zfp.m4
new file mode 100644
index 0000000..13fcff5
--- /dev/null
+++ b/config/ac_zfp.m4
@@ -0,0 +1,83 @@
+#
+#
+# AC_ZFP
+#
+#
+#
+dnl @synopsis AC_ZFP
+dnl
+dnl This macro tests if ZFP is to be used.
+dnl Use in C code:
+dnl     #ifdef ZFP
+dnl     #include "zfp.h"
+dnl     #endif
+dnl
+dnl @version 0.1
+dnl @author Eric Suchyta
+dnl
+
+AC_DEFUN([AC_ZFP],[
+
+AC_MSG_NOTICE([=== checking for ZFP ===])
+AM_CONDITIONAL(HAVE_ZFP,true)
+AM_CONDITIONAL(BUILD_ZFP,false)
+
+
+AC_ARG_WITH(zfp,
+        [  --with-zfp=DIR      Location of ZFP library],
+        [],
+        [with_zfp=builtin])
+
+
+if test "x$with_zfp" == "xno"; then
+   AM_CONDITIONAL(HAVE_ZFP,false)
+
+elif test "x$with_zfp" == "xbuiltin"; then
+   AM_CONDITIONAL(BUILD_ZFP,true)
+
+else
+    save_CPPFLAGS="$CPPFLAGS"
+    save_LIBS="$LIBS"
+    save_LDFLAGS="$LDFLAGS"
+
+
+	if test -z "${ZFP_LIBS}"; then
+		ZFP_LIBS="-lzfp"
+	fi
+
+	if test -z "${ZFP_LDFLAGS}"; then
+		ZFP_LDFLAGS="-L$with_zfp/lib"
+	fi
+
+	if test -z "${ZFP_CPPFLAGS}"; then
+		ZFP_CPPFLAGS="-I$with_zfp/inc"
+	fi
+
+
+    LIBS="$LIBS $ZFP_LIBS"
+    LDFLAGS="$LDFLAGS $ZFP_LDFLAGS"
+    CPPFLAGS="$CPPFLAGS $ZFP_CPPFLAGS"
+
+    if test -z "${HAVE_ZFP_TRUE}"; then
+           AC_CHECK_HEADERS(zfp.h, , [AM_CONDITIONAL(HAVE_ZFP,false)])
+    fi
+
+    LIBS="$save_LIBS"
+    LDFLAGS="$save_LDFLAGS"
+    CPPFLAGS="$save_CPPFLAGS"
+
+    AC_SUBST(ZFP_LIBS)
+    AC_SUBST(ZFP_LDFLAGS)
+    AC_SUBST(ZFP_CPPFLAGS)
+
+    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+    if test -z "${HAVE_ZFP_TRUE}"; then
+            ifelse([$1], , [AC_DEFINE(HAVE_ZFP,1,[Define if you have ZFP.])], [$1])
+            :
+    else
+            $2
+            :
+    fi
+fi
+])
+dnl AC_ZFP
diff --git a/configure b/configure
index f0ae781..7046e44 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.ac Revision.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for adios 1.10.0.
+# Generated by GNU Autoconf 2.69 for adios 1.11.0.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -588,8 +588,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='adios'
 PACKAGE_TARNAME='adios'
-PACKAGE_VERSION='1.10.0'
-PACKAGE_STRING='adios 1.10.0'
+PACKAGE_VERSION='1.11.0'
+PACKAGE_STRING='adios 1.11.0'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -681,6 +681,13 @@ ADIOS_TIMERS_FALSE
 ADIOS_TIMERS_TRUE
 RESEARCH_TRANSPORTS_FALSE
 RESEARCH_TRANSPORTS_TRUE
+ZFP_CPPFLAGS
+ZFP_LDFLAGS
+ZFP_LIBS
+BUILD_ZFP_FALSE
+BUILD_ZFP_TRUE
+HAVE_ZFP_FALSE
+HAVE_ZFP_TRUE
 HAVE_BGQ_FALSE
 HAVE_BGQ_TRUE
 FASTBIT_LIBS
@@ -1068,6 +1075,7 @@ with_aplod
 with_alacrity
 with_fastbit
 with_bgq
+with_zfp
 enable_research_transports
 enable_timers
 enable_timer_events
@@ -1632,7 +1640,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 adios 1.10.0 to adapt to many kinds of systems.
+\`configure' configures adios 1.11.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1702,7 +1710,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of adios 1.10.0:";;
+     short | recursive ) echo "Configuration of adios 1.11.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1811,6 +1819,7 @@ Optional Packages:
   --with-alacrity=DIR      Location of ALACRITY library
   --with-fastbit=DIR      Location of the FastBit library
   --with-bgq 	Whether to enable BGQ method or not
+  --with-zfp=DIR      Location of ZFP library
 
 Some influential environment variables:
   CC          C compiler command
@@ -1899,7 +1908,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-adios configure 1.10.0
+adios configure 1.11.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2693,7 +2702,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 adios $as_me 1.10.0, which was
+It was created by adios $as_me 1.11.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3562,7 +3571,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='adios'
- VERSION='1.10.0'
+ VERSION='1.11.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -21542,6 +21551,30 @@ fi
 done
 
 
+for ac_header in time.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_time_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_TIME_H 1
+_ACEOF
+
+fi
+
+done
+
+ac_fn_c_check_type "$LINENO" "clockid_t" "ac_cv_type_clockid_t" "#include <time.h>
+"
+if test "x$ac_cv_type_clockid_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_CLOCKID_T 1
+_ACEOF
+
+
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5
 $as_echo_n "checking for preprocessor stringizing operator... " >&6; }
 if ${ac_cv_c_stringize+:} false; then :
@@ -25467,6 +25500,19 @@ else
 fi
 
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:     DataSpaces does not build without MPI" >&5
+$as_echo "$as_me:     DataSpaces does not build without MPI" >&6;}
+    if false; then
+  HAVE_DATASPACES_TRUE=
+  HAVE_DATASPACES_FALSE='#'
+else
+  HAVE_DATASPACES_TRUE='#'
+  HAVE_DATASPACES_FALSE=
+fi
+
+
 else
 
 
@@ -25510,12 +25556,14 @@ fi
             ac_dataspaces_ok=no
     fi
 
+    save_CC="$CC"
     save_CPPFLAGS="$CPPFLAGS"
     save_LIBS="$LIBS"
     save_LDFLAGS="$LDFLAGS"
-                                            LIBS="$LIBS -ldspaces -ldscommon -ldart"
+                                            LIBS="-ldspaces -ldscommon -ldart $LIBS"
     LDFLAGS="$LDFLAGS $DATASPACES_LDFLAGS"
     CPPFLAGS="$CPPFLAGS $DATASPACES_CPPFLAGS"
+    CC="$MPICC"
 
     if test -z "${HAVE_DATASPACES_TRUE}"; then
             for ac_header in dataspaces.h
@@ -25543,140 +25591,9 @@ done
 
     if test -z "${HAVE_DATASPACES_TRUE}"; then
         # Check for the DataSpaces library and headers
-        if test "x${ac_portals_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dataspaces.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; err = dspaces_init(1,1,0,"");
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DATASPACES_TRUE=
-  HAVE_DATASPACES_FALSE='#'
-else
-  HAVE_DATASPACES_TRUE='#'
-  HAVE_DATASPACES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        elif test "x${ac_infiniband_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dataspaces.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; err = dspaces_init(1,1,0,"");
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DATASPACES_LIBS="-ldspaces -ldscommon -ldart -lrdmacm"
-else
-   if false; then
-  HAVE_DATASPACES_TRUE=
-  HAVE_DATASPACES_FALSE='#'
-else
-  HAVE_DATASPACES_TRUE='#'
-  HAVE_DATASPACES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        elif test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dataspaces.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; err = dspaces_init(1,1,0,"");
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DATASPACES_TRUE=
-  HAVE_DATASPACES_FALSE='#'
-else
-  HAVE_DATASPACES_TRUE='#'
-  HAVE_DATASPACES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-	elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dataspaces.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; err = dspaces_init(1,1,0,"");
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DATASPACES_TRUE=
-  HAVE_DATASPACES_FALSE='#'
-else
-  HAVE_DATASPACES_TRUE='#'
-  HAVE_DATASPACES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-	elif test "x${ac_pami_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if dataspaces code can be compiled and linked" >&5
+$as_echo_n "checking if dataspaces code can be compiled and linked... " >&6; }
+                        	    	                                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dataspaces.h"
 #ifdef FC_DUMMY_MAIN
@@ -25695,43 +25612,14 @@ int err; err = dspaces_init(1,1,0,"");
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DATASPACES_TRUE=
-  HAVE_DATASPACES_FALSE='#'
-else
-  HAVE_DATASPACES_TRUE='#'
-  HAVE_DATASPACES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        else
-                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dataspaces.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; err = dspaces_init(1,1,0,"");
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+                     DATASPACES_LIBS="-ldspaces -ldscommon -ldart"
 else
-   if false; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                      if false; then
   HAVE_DATASPACES_TRUE=
   HAVE_DATASPACES_FALSE='#'
 else
@@ -25740,13 +25628,14 @@ else
 fi
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
     fi
 
     LIBS="$save_LIBS"
     LDFLAGS="$save_LDFLAGS"
     CPPFLAGS="$save_CPPFLAGS"
+    CC="$save_CC"
 
 
 
@@ -25797,6 +25686,19 @@ else
 fi
 
 
+elif test -z "${HAVE_MPI_FALSE}"; then
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}:     Dimes does not build without MPI" >&5
+$as_echo "$as_me:     Dimes does not build without MPI" >&6;}
+    if false; then
+  HAVE_DIMES_TRUE=
+  HAVE_DIMES_FALSE='#'
+else
+  HAVE_DIMES_TRUE='#'
+  HAVE_DIMES_FALSE=
+fi
+
+
 else
 
 
@@ -25840,6 +25742,7 @@ fi
             ac_dimes_ok=no
     fi
 
+    save_CC="$CC"
     save_CPPFLAGS="$CPPFLAGS"
     save_LIBS="$LIBS"
     save_LDFLAGS="$LDFLAGS"
@@ -25853,13 +25756,12 @@ else
   HAVE_DIMES_FALSE=
 fi
 
-    elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-        LIBS="$LIBS -ldspaces -ldscommon -ldart"
     else
-        LIBS="$LIBS -ldspaces -ldscommon -ldart"
+        LIBS="-ldspaces -ldscommon -ldart $LIBS"
     fi
     LDFLAGS="$LDFLAGS $DIMES_LDFLAGS"
     CPPFLAGS="$CPPFLAGS $DIMES_CPPFLAGS"
+    CC="$MPICC"
 
     if test -z "${HAVE_DIMES_TRUE}"; then
             for ac_header in dimes_interface.h
@@ -25886,9 +25788,10 @@ done
     fi
 
     if test -z "${HAVE_DIMES_TRUE}"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if dimes code can be compiled and linked" >&5
+$as_echo_n "checking if dimes code can be compiled and linked... " >&6; }
         # Check for the DataSpaces/DIMES library and headers
-        if test -z "${HAVE_CRAY_PMI_TRUE}" -a -z "${HAVE_CRAY_UGNI_TRUE}"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+        	    	    	               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "dimes_interface.h"
 #ifdef FC_DUMMY_MAIN
@@ -25908,9 +25811,13 @@ int err; dimes_put_sync_all();
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  DIMES_LIBS="-ldspaces -ldscommon -ldart"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+                     DIMES_LIBS="-ldspaces -ldscommon -ldart"
 else
-   if false; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                      if false; then
   HAVE_DIMES_TRUE=
   HAVE_DIMES_FALSE='#'
 else
@@ -25921,120 +25828,12 @@ fi
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-	elif test "x${ac_infiniband_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dimes_interface.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; dimes_put_sync_all();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DIMES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DIMES_TRUE=
-  HAVE_DIMES_FALSE='#'
-else
-  HAVE_DIMES_TRUE='#'
-  HAVE_DIMES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-	elif test "x${ac_dcmf_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dimes_interface.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; dimes_put_sync_all();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DIMES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DIMES_TRUE=
-  HAVE_DIMES_FALSE='#'
-else
-  HAVE_DIMES_TRUE='#'
-  HAVE_DIMES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-	elif test "x${ac_pami_lib_ok}" == "xyes"; then
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "dimes_interface.h"
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int err; dimes_put_sync_all();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  DIMES_LIBS="-ldspaces -ldscommon -ldart"
-else
-   if false; then
-  HAVE_DIMES_TRUE=
-  HAVE_DIMES_FALSE='#'
-else
-  HAVE_DIMES_TRUE='#'
-  HAVE_DIMES_FALSE=
-fi
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        else
-             if false; then
-  HAVE_DIMES_TRUE=
-  HAVE_DIMES_FALSE='#'
-else
-  HAVE_DIMES_TRUE='#'
-  HAVE_DIMES_FALSE=
-fi
-
-        fi
-    fi
+                                fi
 
     LIBS="$save_LIBS"
     LDFLAGS="$save_LDFLAGS"
     CPPFLAGS="$save_CPPFLAGS"
+    CC="$save_CC"
 
 
 
@@ -26897,11 +26696,11 @@ fi
 
 search_list="$datatap_dir/thin_ib.h $datatap_dir/lib/thin_ib.h $datatap_dir/include/thin_ib.h $search_list /usr/include/thin_ib.h /usr/local/include/thin_ib.h /opt/ibpbio/include/thin_ib.h /opt/misc/include/thin_ib.h /opt/misc/include/$cercs_cv_archive/thin_ib.h"
 tmp_search_results=""
-echo "configure:26900: searching for $search_list " >&5
+echo "configure:26699: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:26904: first found $tmp_search_results " >&5
+	echo "configure:26703: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -26989,11 +26788,11 @@ fi
 
 search_list="$datatap_dir/libibclient.la $datatap_dir/lib/libibclient.la $datatap_dir/include/libibclient.la $search_list /usr/lib/libibclient.la /usr/local/lib/libibclient.la /opt/ibpbio/lib/libibclient.la /opt/misc/lib/libibclient.la /opt/misc/lib/$cercs_cv_archive/libibclient.la"
 tmp_search_results=""
-echo "configure:26992: searching for $search_list " >&5
+echo "configure:26791: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:26996: first found $tmp_search_results " >&5
+	echo "configure:26795: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27062,11 +26861,11 @@ else
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:27065: searching for $search_list " >&5
+echo "configure:26864: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27069: first found $tmp_search_results " >&5
+	echo "configure:26868: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27104,11 +26903,11 @@ else
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:27107: searching for $search_list " >&5
+echo "configure:26906: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27111: first found $tmp_search_results " >&5
+	echo "configure:26910: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27232,11 +27031,11 @@ fi
 
 search_list="$datatap_dir/ffs.h $datatap_dir/lib/ffs.h $datatap_dir/include/ffs.h $search_list /usr/include/ffs.h /usr/local/include/ffs.h /opt/ffs/include/ffs.h /opt/misc/include/ffs.h /opt/misc/include/$cercs_cv_archive/ffs.h"
 tmp_search_results=""
-echo "configure:27235: searching for $search_list " >&5
+echo "configure:27034: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27239: first found $tmp_search_results " >&5
+	echo "configure:27038: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27324,11 +27123,11 @@ fi
 
 search_list="$datatap_dir/libffs.la $datatap_dir/lib/libffs.la $datatap_dir/include/libffs.la $search_list /usr/lib/libffs.la /usr/local/lib/libffs.la /opt/ffs/lib/libffs.la /opt/misc/lib/libffs.la /opt/misc/lib/$cercs_cv_archive/libffs.la"
 tmp_search_results=""
-echo "configure:27327: searching for $search_list " >&5
+echo "configure:27126: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27331: first found $tmp_search_results " >&5
+	echo "configure:27130: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27397,11 +27196,11 @@ else
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:27400: searching for $search_list " >&5
+echo "configure:27199: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27404: first found $tmp_search_results " >&5
+	echo "configure:27203: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27439,11 +27238,11 @@ else
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:27442: searching for $search_list " >&5
+echo "configure:27241: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27446: first found $tmp_search_results " >&5
+	echo "configure:27245: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27567,11 +27366,11 @@ fi
 
 search_list="$datatap_dir/gen_thread.h $datatap_dir/lib/gen_thread.h $datatap_dir/include/gen_thread.h $search_list /usr/include/gen_thread.h /usr/local/include/gen_thread.h /opt/gen_thread/include/gen_thread.h /opt/misc/include/gen_thread.h /opt/misc/include/$cercs_cv_archive/gen_thread.h"
 tmp_search_results=""
-echo "configure:27570: searching for $search_list " >&5
+echo "configure:27369: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27574: first found $tmp_search_results " >&5
+	echo "configure:27373: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27659,11 +27458,11 @@ fi
 
 search_list="$datatap_dir/libgen_thread.la $datatap_dir/lib/libgen_thread.la $datatap_dir/include/libgen_thread.la $search_list /usr/lib/libgen_thread.la /usr/local/lib/libgen_thread.la /opt/gen_thread/lib/libgen_thread.la /opt/misc/lib/libgen_thread.la /opt/misc/lib/$cercs_cv_archive/libgen_thread.la"
 tmp_search_results=""
-echo "configure:27662: searching for $search_list " >&5
+echo "configure:27461: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27666: first found $tmp_search_results " >&5
+	echo "configure:27465: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27732,11 +27531,11 @@ else
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:27735: searching for $search_list " >&5
+echo "configure:27534: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27739: first found $tmp_search_results " >&5
+	echo "configure:27538: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27774,11 +27573,11 @@ else
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:27777: searching for $search_list " >&5
+echo "configure:27576: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27781: first found $tmp_search_results " >&5
+	echo "configure:27580: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -27925,11 +27724,11 @@ fi
 
 search_list="$datatap_dir/thin_portal.h $datatap_dir/lib/thin_portal.h $datatap_dir/include/thin_portal.h $search_list /usr/include/thin_portal.h /usr/local/include/thin_portal.h /opt/ptlpbio/include/thin_portal.h /opt/misc/include/thin_portal.h /opt/misc/include/$cercs_cv_archive/thin_portal.h"
 tmp_search_results=""
-echo "configure:27928: searching for $search_list " >&5
+echo "configure:27727: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:27932: first found $tmp_search_results " >&5
+	echo "configure:27731: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28017,11 +27816,11 @@ fi
 
 search_list="$datatap_dir/libptlclient.a $datatap_dir/lib/libptlclient.a $datatap_dir/include/libptlclient.a $search_list /usr/lib/libptlclient.a /usr/local/lib/libptlclient.a /opt/ptlpbio/lib/libptlclient.a /opt/misc/lib/libptlclient.a /opt/misc/lib/$cercs_cv_archive/libptlclient.a"
 tmp_search_results=""
-echo "configure:28020: searching for $search_list " >&5
+echo "configure:27819: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28024: first found $tmp_search_results " >&5
+	echo "configure:27823: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28090,11 +27889,11 @@ else
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:28093: searching for $search_list " >&5
+echo "configure:27892: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28097: first found $tmp_search_results " >&5
+	echo "configure:27896: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28132,11 +27931,11 @@ else
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:28135: searching for $search_list " >&5
+echo "configure:27934: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28139: first found $tmp_search_results " >&5
+	echo "configure:27938: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28288,11 +28087,11 @@ fi
 
 search_list="$datatap_dir/thin_ib.h $datatap_dir/lib/thin_ib.h $datatap_dir/include/thin_ib.h $search_list /usr/include/thin_ib.h /usr/local/include/thin_ib.h /opt/ibpbio/include/thin_ib.h /opt/misc/include/thin_ib.h /opt/misc/include/$cercs_cv_archive/thin_ib.h"
 tmp_search_results=""
-echo "configure:28291: searching for $search_list " >&5
+echo "configure:28090: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28295: first found $tmp_search_results " >&5
+	echo "configure:28094: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28380,11 +28179,11 @@ fi
 
 search_list="$datatap_dir/libibclient.la $datatap_dir/lib/libibclient.la $datatap_dir/include/libibclient.la $search_list /usr/lib/libibclient.la /usr/local/lib/libibclient.la /opt/ibpbio/lib/libibclient.la /opt/misc/lib/libibclient.la /opt/misc/lib/$cercs_cv_archive/libibclient.la"
 tmp_search_results=""
-echo "configure:28383: searching for $search_list " >&5
+echo "configure:28182: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28387: first found $tmp_search_results " >&5
+	echo "configure:28186: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28453,11 +28252,11 @@ else
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:28456: searching for $search_list " >&5
+echo "configure:28255: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28460: first found $tmp_search_results " >&5
+	echo "configure:28259: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28495,11 +28294,11 @@ else
 
 search_list="$PWD/../ibpbio $PWD/../../ibpbio $PWD/../../../ibpbio"
 tmp_search_results=""
-echo "configure:28498: searching for $search_list " >&5
+echo "configure:28297: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28502: first found $tmp_search_results " >&5
+	echo "configure:28301: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28623,11 +28422,11 @@ fi
 
 search_list="$datatap_dir/ffs.h $datatap_dir/lib/ffs.h $datatap_dir/include/ffs.h $search_list /usr/include/ffs.h /usr/local/include/ffs.h /opt/ffs/include/ffs.h /opt/misc/include/ffs.h /opt/misc/include/$cercs_cv_archive/ffs.h"
 tmp_search_results=""
-echo "configure:28626: searching for $search_list " >&5
+echo "configure:28425: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28630: first found $tmp_search_results " >&5
+	echo "configure:28429: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28715,11 +28514,11 @@ fi
 
 search_list="$datatap_dir/libffs.la $datatap_dir/lib/libffs.la $datatap_dir/include/libffs.la $search_list /usr/lib/libffs.la /usr/local/lib/libffs.la /opt/ffs/lib/libffs.la /opt/misc/lib/libffs.la /opt/misc/lib/$cercs_cv_archive/libffs.la"
 tmp_search_results=""
-echo "configure:28718: searching for $search_list " >&5
+echo "configure:28517: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28722: first found $tmp_search_results " >&5
+	echo "configure:28521: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28788,11 +28587,11 @@ else
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:28791: searching for $search_list " >&5
+echo "configure:28590: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28795: first found $tmp_search_results " >&5
+	echo "configure:28594: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28830,11 +28629,11 @@ else
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:28833: searching for $search_list " >&5
+echo "configure:28632: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28837: first found $tmp_search_results " >&5
+	echo "configure:28636: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -28958,11 +28757,11 @@ fi
 
 search_list="$datatap_dir/gen_thread.h $datatap_dir/lib/gen_thread.h $datatap_dir/include/gen_thread.h $search_list /usr/include/gen_thread.h /usr/local/include/gen_thread.h /opt/gen_thread/include/gen_thread.h /opt/misc/include/gen_thread.h /opt/misc/include/$cercs_cv_archive/gen_thread.h"
 tmp_search_results=""
-echo "configure:28961: searching for $search_list " >&5
+echo "configure:28760: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:28965: first found $tmp_search_results " >&5
+	echo "configure:28764: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29050,11 +28849,11 @@ fi
 
 search_list="$datatap_dir/libgen_thread.la $datatap_dir/lib/libgen_thread.la $datatap_dir/include/libgen_thread.la $search_list /usr/lib/libgen_thread.la /usr/local/lib/libgen_thread.la /opt/gen_thread/lib/libgen_thread.la /opt/misc/lib/libgen_thread.la /opt/misc/lib/$cercs_cv_archive/libgen_thread.la"
 tmp_search_results=""
-echo "configure:29053: searching for $search_list " >&5
+echo "configure:28852: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29057: first found $tmp_search_results " >&5
+	echo "configure:28856: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29123,11 +28922,11 @@ else
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:29126: searching for $search_list " >&5
+echo "configure:28925: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29130: first found $tmp_search_results " >&5
+	echo "configure:28929: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29165,11 +28964,11 @@ else
 
 search_list="$PWD/../gen_thread $PWD/../../gen_thread $PWD/../../../gen_thread"
 tmp_search_results=""
-echo "configure:29168: searching for $search_list " >&5
+echo "configure:28967: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29172: first found $tmp_search_results " >&5
+	echo "configure:28971: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29316,11 +29115,11 @@ fi
 
 search_list="$datatap_dir/thin_portal.h $datatap_dir/lib/thin_portal.h $datatap_dir/include/thin_portal.h $search_list /usr/include/thin_portal.h /usr/local/include/thin_portal.h /opt/ptlpbio/include/thin_portal.h /opt/misc/include/thin_portal.h /opt/misc/include/$cercs_cv_archive/thin_portal.h"
 tmp_search_results=""
-echo "configure:29319: searching for $search_list " >&5
+echo "configure:29118: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29323: first found $tmp_search_results " >&5
+	echo "configure:29122: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29408,11 +29207,11 @@ fi
 
 search_list="$datatap_dir/libptlclient.a $datatap_dir/lib/libptlclient.a $datatap_dir/include/libptlclient.a $search_list /usr/lib/libptlclient.a /usr/local/lib/libptlclient.a /opt/ptlpbio/lib/libptlclient.a /opt/misc/lib/libptlclient.a /opt/misc/lib/$cercs_cv_archive/libptlclient.a"
 tmp_search_results=""
-echo "configure:29411: searching for $search_list " >&5
+echo "configure:29210: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29415: first found $tmp_search_results " >&5
+	echo "configure:29214: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29481,11 +29280,11 @@ else
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:29484: searching for $search_list " >&5
+echo "configure:29283: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29488: first found $tmp_search_results " >&5
+	echo "configure:29287: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29523,11 +29322,11 @@ else
 
 search_list="$PWD/../ptlpbio $PWD/../../ptlpbio $PWD/../../../ptlpbio"
 tmp_search_results=""
-echo "configure:29526: searching for $search_list " >&5
+echo "configure:29325: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29530: first found $tmp_search_results " >&5
+	echo "configure:29329: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29728,11 +29527,11 @@ fi
 
 search_list="$datatap_dir/evpath.h $datatap_dir/lib/evpath.h $datatap_dir/include/evpath.h $search_list /usr/include/evpath.h /usr/local/include/evpath.h /opt/evpath/include/evpath.h /opt/misc/include/evpath.h /opt/misc/include/$cercs_cv_archive/evpath.h"
 tmp_search_results=""
-echo "configure:29731: searching for $search_list " >&5
+echo "configure:29530: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29735: first found $tmp_search_results " >&5
+	echo "configure:29534: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29820,11 +29619,11 @@ fi
 
 search_list="$datatap_dir/libevpath.a $datatap_dir/lib/libevpath.a $datatap_dir/include/libevpath.a $search_list /usr/lib/libevpath.a /usr/local/lib/libevpath.a /opt/evpath/lib/libevpath.a /opt/misc/lib/libevpath.a /opt/misc/lib/$cercs_cv_archive/libevpath.a"
 tmp_search_results=""
-echo "configure:29823: searching for $search_list " >&5
+echo "configure:29622: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29827: first found $tmp_search_results " >&5
+	echo "configure:29626: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29893,11 +29692,11 @@ else
 
 search_list="$PWD/../evpath $PWD/../../evpath $PWD/../../../evpath"
 tmp_search_results=""
-echo "configure:29896: searching for $search_list " >&5
+echo "configure:29695: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29900: first found $tmp_search_results " >&5
+	echo "configure:29699: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -29935,11 +29734,11 @@ else
 
 search_list="$PWD/../evpath $PWD/../../evpath $PWD/../../../evpath"
 tmp_search_results=""
-echo "configure:29938: searching for $search_list " >&5
+echo "configure:29737: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:29942: first found $tmp_search_results " >&5
+	echo "configure:29741: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30063,11 +29862,11 @@ fi
 
 search_list="$datatap_dir/ffs.h $datatap_dir/lib/ffs.h $datatap_dir/include/ffs.h $search_list /usr/include/ffs.h /usr/local/include/ffs.h /opt/ffs/include/ffs.h /opt/misc/include/ffs.h /opt/misc/include/$cercs_cv_archive/ffs.h"
 tmp_search_results=""
-echo "configure:30066: searching for $search_list " >&5
+echo "configure:29865: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30070: first found $tmp_search_results " >&5
+	echo "configure:29869: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30155,11 +29954,11 @@ fi
 
 search_list="$datatap_dir/libffs.a $datatap_dir/lib/libffs.a $datatap_dir/include/libffs.a $search_list /usr/lib/libffs.a /usr/local/lib/libffs.a /opt/ffs/lib/libffs.a /opt/misc/lib/libffs.a /opt/misc/lib/$cercs_cv_archive/libffs.a"
 tmp_search_results=""
-echo "configure:30158: searching for $search_list " >&5
+echo "configure:29957: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30162: first found $tmp_search_results " >&5
+	echo "configure:29961: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30228,11 +30027,11 @@ else
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:30231: searching for $search_list " >&5
+echo "configure:30030: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30235: first found $tmp_search_results " >&5
+	echo "configure:30034: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30270,11 +30069,11 @@ else
 
 search_list="$PWD/../ffs $PWD/../../ffs $PWD/../../../ffs"
 tmp_search_results=""
-echo "configure:30273: searching for $search_list " >&5
+echo "configure:30072: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30277: first found $tmp_search_results " >&5
+	echo "configure:30076: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30398,11 +30197,11 @@ fi
 
 search_list="$datatap_dir/atl.h $datatap_dir/lib/atl.h $datatap_dir/include/atl.h $search_list /usr/include/atl.h /usr/local/include/atl.h /opt/atl/include/atl.h /opt/misc/include/atl.h /opt/misc/include/$cercs_cv_archive/atl.h"
 tmp_search_results=""
-echo "configure:30401: searching for $search_list " >&5
+echo "configure:30200: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30405: first found $tmp_search_results " >&5
+	echo "configure:30204: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30490,11 +30289,11 @@ fi
 
 search_list="$datatap_dir/libatl.a $datatap_dir/lib/libatl.a $datatap_dir/include/libatl.a $search_list /usr/lib/libatl.a /usr/local/lib/libatl.a /opt/atl/lib/libatl.a /opt/misc/lib/libatl.a /opt/misc/lib/$cercs_cv_archive/libatl.a"
 tmp_search_results=""
-echo "configure:30493: searching for $search_list " >&5
+echo "configure:30292: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30497: first found $tmp_search_results " >&5
+	echo "configure:30296: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30563,11 +30362,11 @@ else
 
 search_list="$PWD/../atl $PWD/../../atl $PWD/../../../atl"
 tmp_search_results=""
-echo "configure:30566: searching for $search_list " >&5
+echo "configure:30365: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30570: first found $tmp_search_results " >&5
+	echo "configure:30369: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30605,11 +30404,11 @@ else
 
 search_list="$PWD/../atl $PWD/../../atl $PWD/../../../atl"
 tmp_search_results=""
-echo "configure:30608: searching for $search_list " >&5
+echo "configure:30407: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30612: first found $tmp_search_results " >&5
+	echo "configure:30411: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30733,11 +30532,11 @@ fi
 
 search_list="$datatap_dir/dill.h $datatap_dir/lib/dill.h $datatap_dir/include/dill.h $search_list /usr/include/dill.h /usr/local/include/dill.h /opt/dill/include/dill.h /opt/misc/include/dill.h /opt/misc/include/$cercs_cv_archive/dill.h"
 tmp_search_results=""
-echo "configure:30736: searching for $search_list " >&5
+echo "configure:30535: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30740: first found $tmp_search_results " >&5
+	echo "configure:30539: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30825,11 +30624,11 @@ fi
 
 search_list="$datatap_dir/libdill.a $datatap_dir/lib/libdill.a $datatap_dir/include/libdill.a $search_list /usr/lib/libdill.a /usr/local/lib/libdill.a /opt/dill/lib/libdill.a /opt/misc/lib/libdill.a /opt/misc/lib/$cercs_cv_archive/libdill.a"
 tmp_search_results=""
-echo "configure:30828: searching for $search_list " >&5
+echo "configure:30627: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30832: first found $tmp_search_results " >&5
+	echo "configure:30631: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30898,11 +30697,11 @@ else
 
 search_list="$PWD/../dill $PWD/../../dill $PWD/../../../dill"
 tmp_search_results=""
-echo "configure:30901: searching for $search_list " >&5
+echo "configure:30700: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30905: first found $tmp_search_results " >&5
+	echo "configure:30704: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -30940,11 +30739,11 @@ else
 
 search_list="$PWD/../dill $PWD/../../dill $PWD/../../../dill"
 tmp_search_results=""
-echo "configure:30943: searching for $search_list " >&5
+echo "configure:30742: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:30947: first found $tmp_search_results " >&5
+	echo "configure:30746: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31068,11 +30867,11 @@ fi
 
 search_list="$datatap_dir/cercs_env.h $datatap_dir/lib/cercs_env.h $datatap_dir/include/cercs_env.h $search_list /usr/include/cercs_env.h /usr/local/include/cercs_env.h /opt/cercs_env/include/cercs_env.h /opt/misc/include/cercs_env.h /opt/misc/include/$cercs_cv_archive/cercs_env.h"
 tmp_search_results=""
-echo "configure:31071: searching for $search_list " >&5
+echo "configure:30870: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:31075: first found $tmp_search_results " >&5
+	echo "configure:30874: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31160,11 +30959,11 @@ fi
 
 search_list="$datatap_dir/libcercs_env.a $datatap_dir/lib/libcercs_env.a $datatap_dir/include/libcercs_env.a $search_list /usr/lib/libcercs_env.a /usr/local/lib/libcercs_env.a /opt/cercs_env/lib/libcercs_env.a /opt/misc/lib/libcercs_env.a /opt/misc/lib/$cercs_cv_archive/libcercs_env.a"
 tmp_search_results=""
-echo "configure:31163: searching for $search_list " >&5
+echo "configure:30962: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:31167: first found $tmp_search_results " >&5
+	echo "configure:30966: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31233,11 +31032,11 @@ else
 
 search_list="$PWD/../cercs_env $PWD/../../cercs_env $PWD/../../../cercs_env"
 tmp_search_results=""
-echo "configure:31236: searching for $search_list " >&5
+echo "configure:31035: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:31240: first found $tmp_search_results " >&5
+	echo "configure:31039: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -31275,11 +31074,11 @@ else
 
 search_list="$PWD/../cercs_env $PWD/../../cercs_env $PWD/../../../cercs_env"
 tmp_search_results=""
-echo "configure:31278: searching for $search_list " >&5
+echo "configure:31077: searching for $search_list " >&5
 for tmp_search_value in $search_list; do
    if test -r $tmp_search_value; then
 	tmp_search_results=$tmp_search_value
-	echo "configure:31282: first found $tmp_search_results " >&5
+	echo "configure:31081: first found $tmp_search_results " >&5
 	break
    fi
 done
@@ -32284,6 +32083,147 @@ $as_echo "#define HAVE_BGQ 1" >>confdefs.h
 fi
 
 
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: === checking for ZFP ===" >&5
+$as_echo "$as_me: === checking for ZFP ===" >&6;}
+ if true; then
+  HAVE_ZFP_TRUE=
+  HAVE_ZFP_FALSE='#'
+else
+  HAVE_ZFP_TRUE='#'
+  HAVE_ZFP_FALSE=
+fi
+
+ if false; then
+  BUILD_ZFP_TRUE=
+  BUILD_ZFP_FALSE='#'
+else
+  BUILD_ZFP_TRUE='#'
+  BUILD_ZFP_FALSE=
+fi
+
+
+
+
+# Check whether --with-zfp was given.
+if test "${with_zfp+set}" = set; then :
+  withval=$with_zfp;
+else
+  with_zfp=builtin
+fi
+
+
+
+if test "x$with_zfp" == "xno"; then
+    if false; then
+  HAVE_ZFP_TRUE=
+  HAVE_ZFP_FALSE='#'
+else
+  HAVE_ZFP_TRUE='#'
+  HAVE_ZFP_FALSE=
+fi
+
+
+elif test "x$with_zfp" == "xbuiltin"; then
+    if true; then
+  BUILD_ZFP_TRUE=
+  BUILD_ZFP_FALSE='#'
+else
+  BUILD_ZFP_TRUE='#'
+  BUILD_ZFP_FALSE=
+fi
+
+
+else
+    save_CPPFLAGS="$CPPFLAGS"
+    save_LIBS="$LIBS"
+    save_LDFLAGS="$LDFLAGS"
+
+
+	if test -z "${ZFP_LIBS}"; then
+		ZFP_LIBS="-lzfp"
+	fi
+
+	if test -z "${ZFP_LDFLAGS}"; then
+		ZFP_LDFLAGS="-L$with_zfp/lib"
+	fi
+
+	if test -z "${ZFP_CPPFLAGS}"; then
+		ZFP_CPPFLAGS="-I$with_zfp/inc"
+	fi
+
+
+    LIBS="$LIBS $ZFP_LIBS"
+    LDFLAGS="$LDFLAGS $ZFP_LDFLAGS"
+    CPPFLAGS="$CPPFLAGS $ZFP_CPPFLAGS"
+
+    if test -z "${HAVE_ZFP_TRUE}"; then
+           for ac_header in zfp.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "zfp.h" "ac_cv_header_zfp_h" "$ac_includes_default"
+if test "x$ac_cv_header_zfp_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ZFP_H 1
+_ACEOF
+
+else
+   if false; then
+  HAVE_ZFP_TRUE=
+  HAVE_ZFP_FALSE='#'
+else
+  HAVE_ZFP_TRUE='#'
+  HAVE_ZFP_FALSE=
+fi
+
+fi
+
+done
+
+    fi
+
+    LIBS="$save_LIBS"
+    LDFLAGS="$save_LDFLAGS"
+    CPPFLAGS="$save_CPPFLAGS"
+
+
+
+
+
+    # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+    if test -z "${HAVE_ZFP_TRUE}"; then
+
+$as_echo "#define HAVE_ZFP 1" >>confdefs.h
+
+            :
+    else
+
+            :
+    fi
+fi
+
+if test -z "${BUILD_ZFP_TRUE}"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Build the included ZFP source. Use --without-zfp to turn this off, --with-zfp=path to use an external library." >&5
+$as_echo "$as_me: Build the included ZFP source. Use --without-zfp to turn this off, --with-zfp=path to use an external library." >&6;}
+     if true; then
+  HAVE_ZFP_TRUE=
+  HAVE_ZFP_FALSE='#'
+else
+  HAVE_ZFP_TRUE='#'
+  HAVE_ZFP_FALSE=
+fi
+
+    ZFP_CPPFLAGS="${CPPFLAGS} -I\$(top_srcdir)/src/zfp/zfp-0.5.0/inc"
+    ZFP_BUILD_LDFLAGS=
+    ZFP_LDFLAGS=
+    ZFP_LIBS=
+
+
+
+fi
+
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -32512,6 +32452,10 @@ esac
 
 ADIOSLIB_EXTRA_CPPFLAGS="${MACRODEFFLAG}_FILE_OFFSET_BITS=64 ${MACRODEFFLAG}_LARGEFILE_SOURCE ${MACRODEFFLAG}_LARGEFILE64_SOURCE ${MACRODEFFLAG}_GNU_SOURCE ${MXML_CPPFLAGS}"
 ADIOSLIB_EXTRA_LDFLAGS="${MXML_BUILD_LDFLAGS}"
+if test -z "${HAVE_ZFP_TRUE}"; then
+    ADIOSLIB_EXTRA_CPPFLAGS="${ADIOSLIB_EXTRA_CPPFLAGS} ${MACRODEFFLAG}ZFP ${ZFP_CPPFLAGS}"
+    ADIOSLIB_EXTRA_LDFLAGS="${ADIOSLIB_EXTRA_LDFLAGS} ${ZFP_BUILD_LDFLAGS}"
+fi
 ADIOSLIB_CPPFLAGS=
 ADIOSLIB_CFLAGS=
 ADIOSLIB_LDFLAGS="${MXML_LDFLAGS}"
@@ -32857,6 +32801,18 @@ if test -z "${HAVE_SZIP_TRUE}"; then
     ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${SZIP_LDFLAGS}"
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${SZIP_LIBS}"
 fi
+if test -z "${HAVE_ZFP_TRUE}"; then
+    ADIOSLIB_LDFLAGS="${ADIOSLIB_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSLIB_LDADD="${ADIOSLIB_LDADD} ${ZFP_LIBS}"
+    ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${ZFP_LIBS}"
+    ADIOSLIB_INT_LDFLAGS="${ADIOSLIB_INT_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSLIB_INT_LDADD="${ADIOSLIB_INT_LDADD} ${ZFP_LIBS}"
+    ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${ZFP_LIBS}"
+    ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${ZFP_LIBS}"
+fi
 if test -z "${HAVE_ISOBAR_TRUE}"; then
     ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DISOBAR ${ISOBAR_CPPFLAGS}"
     ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${ISOBAR_CFLAGS}"
@@ -33025,12 +32981,7 @@ fi
 #fi
 #AC_DEFINE_UNQUOTED(VERSION_SVNREV, "${SVNVERSION}", [svn revision number])
 
-
-if test -z "${BUILD_MXML_TRUE}" -a -z "${BUILD_WRITE_TRUE}"; then
-    ac_config_files="$ac_config_files src/mxml/Makefile"
-
-fi
-ac_config_files="$ac_config_files Makefile src/Makefile tests/Makefile tests/test_src/Makefile tests/C/Makefile tests/C/flexpath_tests/Makefile tests/C/flexpath_tests/1D_arr_global/Makefile tests/C/flexpath_tests/1D_arr_global_noxml/Makefile tests/C/flexpath_tests/global_range_select/Makefile tests/C/flexpath_tests/maya_noxml/Makefile tests/C/flexpath_tests/maya_append/Makefile tests/C/flexpath_tests/scalar/Makefile tests/C/fgr_tests/Makefile tests/C/query/Makefile tests/C/query/common/M [...]
+ac_config_files="$ac_config_files Makefile src/Makefile src/zfp/Makefile src/mxml/Makefile tests/Makefile tests/test_src/Makefile tests/C/Makefile tests/C/flexpath_tests/Makefile tests/C/flexpath_tests/1D_arr_global/Makefile tests/C/flexpath_tests/1D_arr_global_noxml/Makefile tests/C/flexpath_tests/global_range_select/Makefile tests/C/flexpath_tests/maya_noxml/Makefile tests/C/flexpath_tests/maya_append/Makefile tests/C/flexpath_tests/scalar/Makefile tests/C/fgr_tests/Makefile tests/C/qu [...]
 
 
 
@@ -33447,34 +33398,6 @@ if test -z "${HAVE_DATASPACES_TRUE}" && test -z "${HAVE_DATASPACES_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_DATASPACES\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_DATASPACES_TRUE}" && test -z "${HAVE_DATASPACES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DATASPACES_TRUE}" && test -z "${HAVE_DATASPACES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DATASPACES_TRUE}" && test -z "${HAVE_DATASPACES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DATASPACES_TRUE}" && test -z "${HAVE_DATASPACES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DATASPACES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DIMES_TRUE}" && test -z "${HAVE_DIMES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DIMES_TRUE}" && test -z "${HAVE_DIMES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_DIMES_TRUE}" && test -z "${HAVE_DIMES_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_DIMES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${HAVE_DIMES_TRUE}" && test -z "${HAVE_DIMES_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_DIMES\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -33687,6 +33610,30 @@ if test -z "${HAVE_BGQ_TRUE}" && test -z "${HAVE_BGQ_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_BGQ\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_ZFP_TRUE}" && test -z "${HAVE_ZFP_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ZFP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_ZFP_TRUE}" && test -z "${BUILD_ZFP_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_ZFP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_ZFP_TRUE}" && test -z "${HAVE_ZFP_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ZFP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_ZFP_TRUE}" && test -z "${BUILD_ZFP_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_ZFP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_ZFP_TRUE}" && test -z "${HAVE_ZFP_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ZFP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_ZFP_TRUE}" && test -z "${HAVE_ZFP_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ZFP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${RESEARCH_TRANSPORTS_TRUE}" && test -z "${RESEARCH_TRANSPORTS_FALSE}"; then
   as_fn_error $? "conditional \"RESEARCH_TRANSPORTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -34136,7 +34083,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by adios $as_me 1.10.0, which was
+This file was extended by adios $as_me 1.11.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -34202,7 +34149,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-adios config.status 1.10.0
+adios config.status 1.11.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -34801,9 +34748,10 @@ do
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "src/mxml/Makefile") CONFIG_FILES="$CONFIG_FILES src/mxml/Makefile" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "src/zfp/Makefile") CONFIG_FILES="$CONFIG_FILES src/zfp/Makefile" ;;
+    "src/mxml/Makefile") CONFIG_FILES="$CONFIG_FILES src/mxml/Makefile" ;;
     "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
     "tests/test_src/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test_src/Makefile" ;;
     "tests/C/Makefile") CONFIG_FILES="$CONFIG_FILES tests/C/Makefile" ;;
@@ -34869,6 +34817,7 @@ do
     "examples/C/schema/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/schema/Makefile" ;;
     "examples/C/transforms/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/transforms/Makefile" ;;
     "examples/C/query/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/query/Makefile" ;;
+    "examples/C/time_aggregation/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/time_aggregation/Makefile" ;;
     "examples/Fortran/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Fortran/Makefile" ;;
     "examples/Fortran/scalars/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Fortran/scalars/Makefile" ;;
     "examples/Fortran/arrays/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Fortran/arrays/Makefile" ;;
@@ -36772,6 +36721,18 @@ else
     echo "  - No SZIP to build SZIP transform method"
 fi
 
+if test -z "${BUILD_ZFP_TRUE}"; then
+    echo "  - ZFP is built with ADIOS";
+elif test -z "${HAVE_ZFP_TRUE}"; then
+    echo "  - ZFP";
+    echo "      - ZFP_CPPFLAGS = $ZFP_CPPFLAGS";
+    echo "      - ZFP_LDFLAGS = $ZFP_LDFLAGS";
+    echo "      - ZFP_LIBS = $ZFP_LIBS";
+    echo
+else
+    echo "  - No ZFP to build ZFP transform method"
+fi
+
 if test -z "${HAVE_ISOBAR_TRUE}"; then
     echo "  - ISOBAR";
     echo "      - ISOBAR_CFLAGS = $ISOBAR_CFLAGS";
diff --git a/configure.ac b/configure.ac
index 0bccc02..58d0516 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([adios], [1.10.0])
+AC_INIT([adios], [1.11.0])
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(config)
@@ -72,6 +72,9 @@ AC_SEARCH_LIBS([nanosleep], [rt])
 AC_SEARCH_LIBS([clock_gettime], [rt])
 AC_CHECK_FUNCS([nanosleep gettimeofday clock_gettime clock_get_time strncpy strerror])
 
+AC_CHECK_HEADERS([time.h])
+AC_CHECK_TYPES([clockid_t], [], [], [[#include <time.h>]])
+
 AC_C_STRINGIZE
 dnl generates HAVE_STRINGIZE
 AC_FUNC_STRTOLD
@@ -177,6 +180,24 @@ AC_ALACRITY
 AC_FASTBIT
 AC_BGQ
 
+
+AC_ZFP
+dnl ZFP is included in the source, so we build it unless a) explicitely disabled by --without-zfp
+dnl or b) an external zfp lib is provided by --with-zfp=path
+dnl config/ac_zfp.m4 sets BUILD_ZFP if none of the above options were given
+if test -z "${BUILD_ZFP_TRUE}"; then
+    AC_MSG_NOTICE([Build the included ZFP source. Use --without-zfp to turn this off, --with-zfp=path to use an external library.])
+    AM_CONDITIONAL(HAVE_ZFP,true)
+    ZFP_CPPFLAGS="${CPPFLAGS} -I\$(top_srcdir)/src/zfp/zfp-0.5.0/inc"
+    ZFP_BUILD_LDFLAGS=
+    ZFP_LDFLAGS=
+    ZFP_LIBS=
+    AC_SUBST(ZFP_CPPFLAGS)
+    AC_SUBST(ZFP_LIBS)
+    AC_SUBST(ZFP_LDFLAGS)
+fi
+
+
 AC_LANG(C)
 
 
@@ -300,6 +321,10 @@ dnl adios_config will contain flags for users' code linking based on these flags
 dnl EXTRA flags are used for compiling adios stuff, which need not go into adios_config for user codes
 ADIOSLIB_EXTRA_CPPFLAGS="${MACRODEFFLAG}_FILE_OFFSET_BITS=64 ${MACRODEFFLAG}_LARGEFILE_SOURCE ${MACRODEFFLAG}_LARGEFILE64_SOURCE ${MACRODEFFLAG}_GNU_SOURCE ${MXML_CPPFLAGS}"
 ADIOSLIB_EXTRA_LDFLAGS="${MXML_BUILD_LDFLAGS}"
+if test -z "${HAVE_ZFP_TRUE}"; then
+    ADIOSLIB_EXTRA_CPPFLAGS="${ADIOSLIB_EXTRA_CPPFLAGS} ${MACRODEFFLAG}ZFP ${ZFP_CPPFLAGS}"
+    ADIOSLIB_EXTRA_LDFLAGS="${ADIOSLIB_EXTRA_LDFLAGS} ${ZFP_BUILD_LDFLAGS}"
+fi
 ADIOSLIB_CPPFLAGS=
 ADIOSLIB_CFLAGS=
 ADIOSLIB_LDFLAGS="${MXML_LDFLAGS}"
@@ -661,6 +686,18 @@ if test -z "${HAVE_SZIP_TRUE}"; then
     ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${SZIP_LDFLAGS}"
     ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${SZIP_LIBS}"
 fi
+if test -z "${HAVE_ZFP_TRUE}"; then
+    ADIOSLIB_LDFLAGS="${ADIOSLIB_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSLIB_LDADD="${ADIOSLIB_LDADD} ${ZFP_LIBS}"
+    ADIOSLIB_SEQ_LDFLAGS="${ADIOSLIB_SEQ_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSLIB_SEQ_LDADD="${ADIOSLIB_SEQ_LDADD} ${ZFP_LIBS}"
+    ADIOSLIB_INT_LDFLAGS="${ADIOSLIB_INT_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSLIB_INT_LDADD="${ADIOSLIB_INT_LDADD} ${ZFP_LIBS}"
+    ADIOSREADLIB_LDFLAGS="${ADIOSREADLIB_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSREADLIB_LDADD="${ADIOSREADLIB_LDADD} ${ZFP_LIBS}"
+    ADIOSREADLIB_SEQ_LDFLAGS="${ADIOSREADLIB_SEQ_LDFLAGS} ${ZFP_LDFLAGS}"
+    ADIOSREADLIB_SEQ_LDADD="${ADIOSREADLIB_SEQ_LDADD} ${ZFP_LIBS}"
+fi
 if test -z "${HAVE_ISOBAR_TRUE}"; then
     ADIOSLIB_CPPFLAGS="${ADIOSLIB_CPPFLAGS} -DISOBAR ${ISOBAR_CPPFLAGS}"
     ADIOSLIB_CFLAGS="${ADIOSLIB_CFLAGS} ${ISOBAR_CFLAGS}"
@@ -821,12 +858,10 @@ AC_SUBST(VERSION_MICRO)
 #fi
 #AC_DEFINE_UNQUOTED(VERSION_SVNREV, "${SVNVERSION}", [svn revision number])
 
-
-if test -z "${BUILD_MXML_TRUE}" -a -z "${BUILD_WRITE_TRUE}"; then
-    AC_CONFIG_FILES([src/mxml/Makefile])
-fi
 AC_CONFIG_FILES([Makefile
                  src/Makefile
+                 src/zfp/Makefile
+                 src/mxml/Makefile
                  tests/Makefile
                  tests/test_src/Makefile
                  tests/C/Makefile
@@ -892,6 +927,7 @@ AC_CONFIG_FILES([Makefile
                  examples/C/schema/Makefile
                  examples/C/transforms/Makefile
                  examples/C/query/Makefile
+                 examples/C/time_aggregation/Makefile
                  examples/Fortran/Makefile
                  examples/Fortran/scalars/Makefile
                  examples/Fortran/arrays/Makefile
@@ -1220,6 +1256,18 @@ else
     echo "  - No SZIP to build SZIP transform method"
 fi
 
+if test -z "${BUILD_ZFP_TRUE}"; then
+    echo "  - ZFP is built with ADIOS";
+elif test -z "${HAVE_ZFP_TRUE}"; then
+    echo "  - ZFP";
+    echo "      - ZFP_CPPFLAGS = $ZFP_CPPFLAGS";
+    echo "      - ZFP_LDFLAGS = $ZFP_LDFLAGS";
+    echo "      - ZFP_LIBS = $ZFP_LIBS";
+    echo
+else
+    echo "  - No ZFP to build ZFP transform method"
+fi
+
 if test -z "${HAVE_ISOBAR_TRUE}"; then
     echo "  - ISOBAR";
     echo "      - ISOBAR_CFLAGS = $ISOBAR_CFLAGS";
diff --git a/examples/C/CMakeLists.txt b/examples/C/CMakeLists.txt
index 96e0efe..0977110 100644
--- a/examples/C/CMakeLists.txt
+++ b/examples/C/CMakeLists.txt
@@ -11,4 +11,4 @@ add_subdirectory(flexpath_arrays)
 add_subdirectory(transforms)
 add_subdirectory(query)
 add_subdirectory(icee_arrays)
-#SUBDIRS=scalars arrays attributes manual global-array global-array-time read_all stat schema
+add_subdirectory(time_aggregation)
diff --git a/examples/C/Makefile.am b/examples/C/Makefile.am
index 6a1dd28..3c99eb3 100644
--- a/examples/C/Makefile.am
+++ b/examples/C/Makefile.am
@@ -1 +1,3 @@
-SUBDIRS=scalars arrays attributes manual global-array global-array-time read_all stat schema flexpath_arrays transforms query icee_arrays
+SUBDIRS=scalars arrays attributes manual global-array global-array-time \
+		read_all stat schema flexpath_arrays transforms query icee_arrays \
+		time_aggregation
diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in
index 41c1ab6..aa15858 100644
--- a/examples/C/Makefile.in
+++ b/examples/C/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -474,7 +477,10 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = scalars arrays attributes manual global-array global-array-time read_all stat schema flexpath_arrays transforms query icee_arrays
+SUBDIRS = scalars arrays attributes manual global-array global-array-time \
+		read_all stat schema flexpath_arrays transforms query icee_arrays \
+		time_aggregation
+
 all: all-recursive
 
 .SUFFIXES:
diff --git a/examples/C/arrays/Makefile.in b/examples/C/arrays/Makefile.in
index 038632f..38a4f10 100644
--- a/examples/C/arrays/Makefile.in
+++ b/examples/C/arrays/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/attributes/Makefile.in b/examples/C/attributes/Makefile.in
index 068dd53..630593b 100644
--- a/examples/C/attributes/Makefile.in
+++ b/examples/C/attributes/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -416,6 +416,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/flexpath_arrays/Makefile.in b/examples/C/flexpath_arrays/Makefile.in
index cca5534..2fbf59c 100644
--- a/examples/C/flexpath_arrays/Makefile.in
+++ b/examples/C/flexpath_arrays/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/flexpath_arrays/global_range_select/Makefile.in b/examples/C/flexpath_arrays/global_range_select/Makefile.in
index dec52ef..a546771 100644
--- a/examples/C/flexpath_arrays/global_range_select/Makefile.in
+++ b/examples/C/flexpath_arrays/global_range_select/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/flexpath_arrays/process_select/Makefile.in b/examples/C/flexpath_arrays/process_select/Makefile.in
index ca807e9..d955394 100644
--- a/examples/C/flexpath_arrays/process_select/Makefile.in
+++ b/examples/C/flexpath_arrays/process_select/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/global-array-time/Makefile.in b/examples/C/global-array-time/Makefile.in
index 3469949..831b477 100644
--- a/examples/C/global-array-time/Makefile.in
+++ b/examples/C/global-array-time/Makefile.in
@@ -112,7 +112,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -445,6 +445,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/global-array-time/adios_globaltime.c b/examples/C/global-array-time/adios_globaltime.c
index f9077f0..70782b8 100644
--- a/examples/C/global-array-time/adios_globaltime.c
+++ b/examples/C/global-array-time/adios_globaltime.c
@@ -11,48 +11,49 @@
 #include "adios.h"
 int main (int argc, char ** argv) 
 {
-	char        filename [256];
-	int         rank, size, i, it;
-	int         NX = 10;
-        // NY = 1 for testing purpose
-	int         NY = 1; 
-	double      t[NX];
-	double      p[NY];
-
-	/* ADIOS variables declarations for matching gwrite_temperature.ch */
-	uint64_t    adios_groupsize, adios_totalsize;
-	int64_t     adios_handle;
-	MPI_Comm    comm=MPI_COMM_WORLD;
- 
-	MPI_Init (&argc, &argv);
-	MPI_Comm_rank (MPI_COMM_WORLD, &rank);
-	MPI_Comm_size (comm, &size);
-
-	adios_init ("adios_globaltime.xml", comm);
-    	strcpy (filename, "adios_globaltime.bp");
-    	for (it =1; it <= 13; it++) {
-
-        	for (i = 0; i < NX; i++)
-            		t[i] = it*100.0 + rank*NX + i;
-
-        	for (i = 0; i < NY; i++)
-            		p[i] = it*1000.0 + rank*NY + i;
-		
-                if (it==1)
-		    adios_open (&adios_handle, "restart", filename, "w", comm);
-                else
-		    adios_open (&adios_handle, "restart", filename, "a", comm);
-
-        	#include "gwrite_restart.ch"
-        	adios_close (adios_handle);
-		MPI_Barrier (comm);
-                //if (rank==0) printf("Timestep %d written\n", it+1);
- 	}
-	MPI_Barrier (comm);
-        //if (rank==0) printf("Finalize adios\n");
-    	adios_finalize (rank);
-
-        //if (rank==0) printf("Finalize MPI\n");
-    	MPI_Finalize ();
-	return 0;
+    char        filename [256], fname[256];
+    int         rank, size, i, it;
+    int         NX = 10;
+    // NY = 1 for testing purpose
+    int         NY = 1; 
+    double      t[NX];
+    double      p[NY];
+
+    /* ADIOS variables declarations for matching gwrite_temperature.ch */
+    uint64_t    adios_groupsize, adios_totalsize;
+    int64_t     adios_handle;
+    MPI_Comm    comm=MPI_COMM_WORLD;
+
+    MPI_Init (&argc, &argv);
+    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
+    MPI_Comm_size (comm, &size);
+
+    adios_init ("adios_globaltime.xml", comm);
+    strcpy (filename, "adios_globaltime.bp");
+    for (it = 1; it <= 13; it++) {
+
+        for (i = 0; i < NX; i++)
+            t[i] = it*100.0 + rank*NX + i;
+
+        for (i = 0; i < NY; i++)
+            p[i] = it*1000.0 + rank*NY + i;
+
+        if (it==1)
+            adios_open (&adios_handle, "restart", filename, "w", comm);
+        else
+            adios_open (&adios_handle, "restart", filename, "a", comm);
+
+#       include "gwrite_restart.ch"
+
+        adios_close (adios_handle);
+        MPI_Barrier (comm);
+        if (rank==0) printf("Timestep %d written\n", it);
+    }
+    MPI_Barrier (comm);
+    //if (rank==0) printf("Finalize adios\n");
+    adios_finalize (rank);
+
+    //if (rank==0) printf("Finalize MPI\n");
+    MPI_Finalize ();
+    return 0;
 }
diff --git a/examples/C/global-array-time/adios_globaltime.xml b/examples/C/global-array-time/adios_globaltime.xml
index a0d308d..ad737a6 100644
--- a/examples/C/global-array-time/adios_globaltime.xml
+++ b/examples/C/global-array-time/adios_globaltime.xml
@@ -19,7 +19,12 @@
         type="string"/>
   </adios-group>
 
-  <method group="restart" method="MPI"/>
+  <method group="restart" method="MPI">verbose=3</method>
+  <time-aggregation group="restart" buffer-size=0/>
+
+  <!--
+  <method group="restart" method="MPI_AGGREGATE">num_aggregators=1;num_ost=1</method>
+  -->
 
   <buffer max-size-MB="1"/>
 
diff --git a/examples/C/global-array-time/adios_globaltime_no_xml.c b/examples/C/global-array-time/adios_globaltime_no_xml.c
index 54cb924..b897292 100644
--- a/examples/C/global-array-time/adios_globaltime_no_xml.c
+++ b/examples/C/global-array-time/adios_globaltime_no_xml.c
@@ -76,10 +76,12 @@ int main (int argc, char ** argv)
         int64_t       m_adios_group;
         int64_t       m_adios_file;
 
-        adios_declare_group (&m_adios_group, "restart", "", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "restart", "", adios_stat_default);
         adios_select_method (m_adios_group, "MPI", "", "");
         //adios_select_method (m_adios_group, "MPI_AGGREGATE", "num_ost=2;num_aggregators=2;aggregation_type=2;verbose=3", "");
 
+        adios_set_time_aggregation (m_adios_group, 32000, 0);
+
         adios_define_var (m_adios_group, "NX"
                      ,"", adios_integer
                      ,0, 0, 0);
diff --git a/examples/C/global-array/Makefile.in b/examples/C/global-array/Makefile.in
index b6a7e0d..117611d 100644
--- a/examples/C/global-array/Makefile.in
+++ b/examples/C/global-array/Makefile.in
@@ -114,7 +114,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -508,6 +508,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/global-array/adios_global_aggregate_by_color.c b/examples/C/global-array/adios_global_aggregate_by_color.c
index 45a4ded..3408ff2 100644
--- a/examples/C/global-array/adios_global_aggregate_by_color.c
+++ b/examples/C/global-array/adios_global_aggregate_by_color.c
@@ -55,7 +55,7 @@ int main (int argc, char ** argv)
         int64_t       m_adios_group;
         int64_t       m_adios_file;
 
-        adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
 
         // split into 2 groups 
         color = (rank % 2 == 0 ? 0 : 1);
diff --git a/examples/C/global-array/adios_global_no_xml.c b/examples/C/global-array/adios_global_no_xml.c
index 3c6c18e..7f5f37a 100644
--- a/examples/C/global-array/adios_global_no_xml.c
+++ b/examples/C/global-array/adios_global_no_xml.c
@@ -20,6 +20,7 @@
 */
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <inttypes.h>
 #include <string.h>
 #include "mpi.h"
@@ -34,8 +35,8 @@ int main (int argc, char ** argv)
 {
 	char        filename [256];
 	int         rank, size, i, block;
-	int         NX = 100, Global_bounds, Offsets; 
-	double      t[NX];
+	int         NX = 10000000, Global_bounds, Offsets;
+	double     *t;
 	int         sub_blocks = 3;
 	int64_t     var_ids[sub_blocks];
 	MPI_Comm    comm = MPI_COMM_WORLD;
@@ -47,81 +48,83 @@ int main (int argc, char ** argv)
 	MPI_Comm_rank (comm, &rank);
 	MPI_Comm_size (comm, &size);
 
-        Global_bounds = sub_blocks * NX * size;
+	t = (double *) malloc (NX * sizeof(double));
+	Global_bounds = sub_blocks * NX * size;
 
 	strcpy (filename, "adios_global_no_xml.bp");
 
 	adios_init_noxml (comm);
-        adios_set_max_buffer_size (10);
+	adios_set_max_buffer_size (sub_blocks*NX*sizeof(double)/1048576 + 2);
 
-        int64_t       m_adios_group;
-        int64_t       m_adios_file;
+	int64_t       m_adios_group;
+	int64_t       m_adios_file;
 
-        adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
-        adios_select_method (m_adios_group, "MPI", "", "");
+	adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
+	adios_select_method (m_adios_group, "MPI", "verbose=3", "");
 
 
-        adios_define_var (m_adios_group, "NX"
+	adios_define_var (m_adios_group, "NX"
 			,"", adios_integer
 			,0, 0, 0);
-   
+
 	adios_define_var (m_adios_group, "Global_bounds"
 			,"", adios_integer
 			,0, 0, 0);
 
-        for (i=0;i<sub_blocks;i++) {
-   
-           adios_define_var (m_adios_group, "Offsets"
-                        ,"", adios_integer
-                        ,0, 0, 0);
-   
-           var_ids[i] = adios_define_var (m_adios_group, "temperature"
-                        ,"", adios_double
-                        ,"NX", "Global_bounds", "Offsets");
-           adios_set_transform (var_ids[i], "identity");
-
-           /* This is here just for test and will cause errors.
-            * adios_expected_var_size() does not work here because the definition of the variable depends
-            * on the "NX" dimension variable and it's value known to adios only after adios_write("NX")
-            */
-           /*
+	for (i=0;i<sub_blocks;i++) {
+
+		adios_define_var (m_adios_group, "Offsets"
+				,"", adios_integer
+				,0, 0, 0);
+
+		var_ids[i] = adios_define_var (m_adios_group, "temperature"
+				,"", adios_double
+				,"NX", "Global_bounds", "Offsets");
+		adios_set_transform (var_ids[i], "identity");
+
+		/* This is here just for test and will cause errors.
+		 * adios_expected_var_size() does not work here because the definition of the variable depends
+		 * on the "NX" dimension variable and it's value known to adios only after adios_write("NX")
+		 */
+		/*
            uint64_t varsize = adios_expected_var_size(var_ids[i]);
            fprintf (stderr, "Temperature block %d is %" PRIu64 " bytes\n", i, varsize);
-           */
+		 */
+
+	}
 
-        }
-   
-        adios_open (&m_adios_file, "restart", filename, "w", comm);
+	adios_open (&m_adios_file, "restart", filename, "w", comm);
 
-        adios_groupsize = sub_blocks * (4 + 4 + 4 + NX * 8);
+	adios_groupsize = sub_blocks * (4 + 4 + 4 + NX * 8);
 
-        adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize);
+	adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize);
 	adios_write(m_adios_file, "NX", (void *) &NX);
 	adios_write(m_adios_file, "Global_bounds", (void *) &Global_bounds);
-/* now we will write the data for each sub block */
-        for (block=0;block<sub_blocks;block++) {
+	/* now we will write the data for each sub block */
+	for (block=0;block<sub_blocks;block++) {
 
-           Offsets = rank * sub_blocks * NX + block*NX;
-           adios_write(m_adios_file, "Offsets", (void *) &Offsets);
+		Offsets = rank * sub_blocks * NX + block*NX;
+		adios_write(m_adios_file, "Offsets", (void *) &Offsets);
 
-           for (i = 0; i < NX; i++)
-               t[i] = Offsets + i;
+		for (i = 0; i < NX; i++)
+			t[i] = Offsets + i;
 
-           /*  This is here just for fun */
-           uint64_t varsize = adios_expected_var_size(var_ids[block]);
-           /* adios_expected_var_size() works here because NX's value is known by adios at this point */
-           fprintf (stderr, "Temperature block %d is %" PRIu64 " bytes\n", block, varsize);
+		/*  This is here just for fun */
+		uint64_t varsize = adios_expected_var_size(var_ids[block]);
+		/* adios_expected_var_size() works here because NX's value is known by adios at this point */
+		fprintf (stderr, "Temperature block %d is %" PRIu64 " bytes\n", block, varsize);
 
 
-           adios_write(m_adios_file, "temperature", t);
-        }
+		adios_write(m_adios_file, "temperature", t);
+	}
 
-        adios_close (m_adios_file);
+	adios_close (m_adios_file);
 
-        MPI_Barrier (comm);
+	MPI_Barrier (comm);
 
 	adios_finalize (rank);
 
+	free (t);
 	MPI_Finalize ();
 	return 0;
 }
diff --git a/examples/C/global-array/no_xml_write_byid.c b/examples/C/global-array/no_xml_write_byid.c
index 7c5c9e3..b036900 100644
--- a/examples/C/global-array/no_xml_write_byid.c
+++ b/examples/C/global-array/no_xml_write_byid.c
@@ -63,7 +63,7 @@ int main (int argc, char ** argv)
     int64_t       m_adios_file;
     int64_t       var_ids[nblocks];
 
-    adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
     for (i = 0; i < nblocks; i++)
diff --git a/examples/C/icee_arrays/Makefile.in b/examples/C/icee_arrays/Makefile.in
index 4fd096c..da03f1b 100644
--- a/examples/C/icee_arrays/Makefile.in
+++ b/examples/C/icee_arrays/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/icee_arrays/array/Makefile.in b/examples/C/icee_arrays/array/Makefile.in
index ecb7cf0..7c95530 100644
--- a/examples/C/icee_arrays/array/Makefile.in
+++ b/examples/C/icee_arrays/array/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/icee_arrays/array/adios_write.c b/examples/C/icee_arrays/array/adios_write.c
index d5e3999..fd98a20 100644
--- a/examples/C/icee_arrays/array/adios_write.c
+++ b/examples/C/icee_arrays/array/adios_write.c
@@ -135,7 +135,7 @@ int main (int argc, char ** argv)
     int64_t       m_adios_group;
     int64_t       m_adios_file;
 
-    adios_declare_group (&m_adios_group, "restart", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "restart", "", adios_stat_default);
     adios_select_method (m_adios_group, adios_write_method, initstring, "");
 
     adios_define_var (m_adios_group, "NX"
diff --git a/examples/C/manual/Makefile.in b/examples/C/manual/Makefile.in
index b979909..094fe39 100644
--- a/examples/C/manual/Makefile.in
+++ b/examples/C/manual/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -433,6 +433,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/query/Makefile.in b/examples/C/query/Makefile.in
index 80b2950..8dbcb88 100644
--- a/examples/C/query/Makefile.in
+++ b/examples/C/query/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -431,6 +431,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/query/write_table.c b/examples/C/query/write_table.c
index beaebba..339cb09 100644
--- a/examples/C/query/write_table.c
+++ b/examples/C/query/write_table.c
@@ -95,7 +95,7 @@ int main (int argc, char ** argv)
 	adios_init_noxml (comm);
 	adios_set_max_buffer_size (1);
 
-	adios_declare_group (&g, "table", "", adios_flag_yes);
+	adios_declare_group (&g, "table", "", adios_stat_default);
 	adios_select_method (g, "POSIX", "", "");
 
 	sprintf (dimstr, "%d,%d", NX, NY);
diff --git a/examples/C/query/write_vars.c b/examples/C/query/write_vars.c
index 64b04bd..f49885c 100644
--- a/examples/C/query/write_vars.c
+++ b/examples/C/query/write_vars.c
@@ -74,7 +74,7 @@ int main (int argc, char ** argv)
 	adios_init_noxml (comm);
 	adios_set_max_buffer_size (1);
 
-	adios_declare_group (&g, "vars", "", adios_flag_yes);
+	adios_declare_group (&g, "vars", "", adios_stat_default);
 	adios_select_method (g, "POSIX", "", "");
 
 	Tid = adios_define_var (g, "T" ,"", adios_double, dimstr, dimstr, "0,0");
diff --git a/examples/C/read_all/Makefile.in b/examples/C/read_all/Makefile.in
index 101a6fb..dc80a3f 100644
--- a/examples/C/read_all/Makefile.in
+++ b/examples/C/read_all/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/scalars/Makefile.in b/examples/C/scalars/Makefile.in
index 638587c..87dded8 100644
--- a/examples/C/scalars/Makefile.in
+++ b/examples/C/scalars/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -425,6 +425,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/schema/Makefile.in b/examples/C/schema/Makefile.in
index a555630..1da114b 100644
--- a/examples/C/schema/Makefile.in
+++ b/examples/C/schema/Makefile.in
@@ -112,7 +112,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -475,6 +475,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/schema/rectilinear2d_noxml.c b/examples/C/schema/rectilinear2d_noxml.c
index 057a3ed..22702a9 100644
--- a/examples/C/schema/rectilinear2d_noxml.c
+++ b/examples/C/schema/rectilinear2d_noxml.c
@@ -121,7 +121,7 @@ int main (int argc, char ** argv)
 	adios_init_noxml (comm);
     adios_set_max_buffer_size (50);
 
-    adios_declare_group (&m_adios_group, "rectilinear2d", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "rectilinear2d", "", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
     adios_define_var (m_adios_group, "nx_global"
diff --git a/examples/C/schema/structured2d_noxml.c b/examples/C/schema/structured2d_noxml.c
index 0eb03d1..4347cbc 100644
--- a/examples/C/schema/structured2d_noxml.c
+++ b/examples/C/schema/structured2d_noxml.c
@@ -122,7 +122,7 @@ int main (int argc, char ** argv)
 	adios_init_noxml (comm);
     adios_set_max_buffer_size (50);
 
-    adios_declare_group (&m_adios_group, "structured2d", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "structured2d", "", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
     adios_define_var (m_adios_group, "nx_global"
diff --git a/examples/C/schema/tri2d_noxml.c b/examples/C/schema/tri2d_noxml.c
index 2bfa37a..568a2c3 100644
--- a/examples/C/schema/tri2d_noxml.c
+++ b/examples/C/schema/tri2d_noxml.c
@@ -244,7 +244,7 @@ int main (int argc, char ** argv)
 	adios_init_noxml (comm);
     adios_set_max_buffer_size (50);
 
-    adios_declare_group (&m_adios_group, "tri2d", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "tri2d", "", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
     adios_define_var (m_adios_group, "nx_global"
diff --git a/examples/C/schema/uniform2d_noxml.c b/examples/C/schema/uniform2d_noxml.c
index b8d408d..e90d76a 100644
--- a/examples/C/schema/uniform2d_noxml.c
+++ b/examples/C/schema/uniform2d_noxml.c
@@ -115,7 +115,7 @@ int main (int argc, char ** argv)
 	adios_init_noxml (comm);
     adios_set_max_buffer_size (50);
 
-    adios_declare_group (&m_adios_group, "uniform2d", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "uniform2d", "", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
     adios_define_var (m_adios_group, "nx_global"
diff --git a/examples/C/stat/Makefile.in b/examples/C/stat/Makefile.in
index 8587a04..88f3573 100644
--- a/examples/C/stat/Makefile.in
+++ b/examples/C/stat/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/C/time_aggregation/CMakeLists.txt b/examples/C/time_aggregation/CMakeLists.txt
new file mode 100644
index 0000000..1176b0b
--- /dev/null
+++ b/examples/C/time_aggregation/CMakeLists.txt
@@ -0,0 +1,24 @@
+include_directories(${PROJECT_SOURCE_DIR}/src/public)
+include_directories(${PROJECT_SOURCE_DIR}/src)
+include_directories(${PROJECT_SOURCE_DIR}/examples/C/time_aggregation)
+include_directories(${PROJECT_BINARY_DIR}/src/public)
+link_directories(${PROJECT_BINARY_DIR}/examples/C/time_aggregation)
+
+add_executable(time_aggregation time_aggregation.c)
+target_link_libraries(time_aggregation adios ${ADIOSLIB_LDADD})
+
+add_executable(time_aggregation_no_xml time_aggregation_no_xml.c)
+target_link_libraries(time_aggregation_no_xml adios ${ADIOSLIB_LDADD})
+
+set (PROGS time_aggregation time_aggregation_no_xml)
+foreach (PROG ${PROGS} )
+  if(MPI_COMPILE_FLAGS)
+    set_target_properties(${PROG} PROPERTIES COMPILE_FLAGS "${MPI_C_COMPILE_FLAGS}")
+  endif()
+  if(MPI_LINK_FLAGS)
+    set_target_properties(${PROG} PROPERTIES LINK_FLAGS "${MPI_C_LINK_FLAGS}")
+  endif()
+  target_link_libraries(${PROG} adios ${MPI_C_LIBRARIES})
+endforeach()
+
+file(COPY time_aggregation.xml DESTINATION ${PROJECT_BINARY_DIR}/examples/C/time_aggregation)
diff --git a/examples/C/time_aggregation/Makefile.am b/examples/C/time_aggregation/Makefile.am
new file mode 100644
index 0000000..fb03fef
--- /dev/null
+++ b/examples/C/time_aggregation/Makefile.am
@@ -0,0 +1,23 @@
+AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS += -I$(top_builddir)/src/public -I$(top_srcdir)/src -I$(top_srcdir)/src/public
+
+AUTOMAKE_OPTIONS = no-dependencies
+
+all-local:
+	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/*.xml $(builddir)
+
+noinst_PROGRAMS = time_aggregation time_aggregation_no_xml
+
+time_aggregation_SOURCES = time_aggregation.c
+time_aggregation_LDADD = $(top_builddir)/src/libadios.a
+time_aggregation_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+time_aggregation_LDADD += $(ADIOSLIB_LDADD)
+
+time_aggregation_no_xml_SOURCES = time_aggregation_no_xml.c
+time_aggregation_no_xml_LDADD = $(top_builddir)/src/libadios.a
+time_aggregation_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+time_aggregation_no_xml_LDADD += $(ADIOSLIB_LDADD)
+
+CLEANFILES = *.bp
+CC=$(MPICC)
+EXTRA_DIST = time_aggregation.xml
diff --git a/examples/C/attributes/Makefile.in b/examples/C/time_aggregation/Makefile.in
similarity index 90%
copy from examples/C/attributes/Makefile.in
copy to examples/C/time_aggregation/Makefile.in
index 068dd53..4a32703 100644
--- a/examples/C/attributes/Makefile.in
+++ b/examples/C/time_aggregation/Makefile.in
@@ -78,8 +78,9 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-noinst_PROGRAMS = attributes_write$(EXEEXT) attributes_read$(EXEEXT)
-subdir = examples/C/attributes
+noinst_PROGRAMS = time_aggregation$(EXEEXT) \
+	time_aggregation_no_xml$(EXEEXT)
+subdir = examples/C/time_aggregation
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
@@ -109,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -125,27 +126,29 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_attributes_read_OBJECTS = attributes_read.$(OBJEXT)
-attributes_read_OBJECTS = $(am_attributes_read_OBJECTS)
+am_time_aggregation_OBJECTS = time_aggregation.$(OBJEXT)
+time_aggregation_OBJECTS = $(am_time_aggregation_OBJECTS)
 am__DEPENDENCIES_1 =
-attributes_read_DEPENDENCIES = $(top_builddir)/src/libadiosread.a \
+time_aggregation_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-attributes_read_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+time_aggregation_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(attributes_read_LDFLAGS) $(LDFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS) $(time_aggregation_LDFLAGS) $(LDFLAGS) \
 	-o $@
-am_attributes_write_OBJECTS = attributes_write.$(OBJEXT)
-attributes_write_OBJECTS = $(am_attributes_write_OBJECTS)
-attributes_write_DEPENDENCIES = $(top_builddir)/src/libadios.a \
+am_time_aggregation_no_xml_OBJECTS =  \
+	time_aggregation_no_xml.$(OBJEXT)
+time_aggregation_no_xml_OBJECTS =  \
+	$(am_time_aggregation_no_xml_OBJECTS)
+time_aggregation_no_xml_DEPENDENCIES = $(top_builddir)/src/libadios.a \
 	$(am__DEPENDENCIES_1)
-attributes_write_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+time_aggregation_no_xml_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(attributes_write_LDFLAGS) $(LDFLAGS) \
-	-o $@
+	$(AM_CFLAGS) $(CFLAGS) $(time_aggregation_no_xml_LDFLAGS) \
+	$(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -179,8 +182,10 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(attributes_read_SOURCES) $(attributes_write_SOURCES)
-DIST_SOURCES = $(attributes_read_SOURCES) $(attributes_write_SOURCES)
+SOURCES = $(time_aggregation_SOURCES) \
+	$(time_aggregation_no_xml_SOURCES)
+DIST_SOURCES = $(time_aggregation_SOURCES) \
+	$(time_aggregation_no_xml_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -416,6 +421,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -480,16 +488,16 @@ top_srcdir = @top_srcdir@
 AM_CPPFLAGS = $(all_includes) -I$(top_builddir)/src/public \
 	-I$(top_srcdir)/src -I$(top_srcdir)/src/public
 AUTOMAKE_OPTIONS = no-dependencies
-attributes_write_SOURCES = attributes_write.c
-attributes_write_LDADD = $(top_builddir)/src/libadios.a \
+time_aggregation_SOURCES = time_aggregation.c
+time_aggregation_LDADD = $(top_builddir)/src/libadios.a \
+	$(ADIOSLIB_LDADD)
+time_aggregation_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+time_aggregation_no_xml_SOURCES = time_aggregation_no_xml.c
+time_aggregation_no_xml_LDADD = $(top_builddir)/src/libadios.a \
 	$(ADIOSLIB_LDADD)
-attributes_write_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
-attributes_read_SOURCES = attributes_read.c
-attributes_read_LDADD = $(top_builddir)/src/libadiosread.a \
-	$(ADIOSREADLIB_LDADD)
-attributes_read_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
+time_aggregation_no_xml_LDFLAGS = $(ADIOSLIB_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 CLEANFILES = *.bp
-EXTRA_DIST = attributes.xml gwrite_temperature.ch gread_temperature.ch
+EXTRA_DIST = time_aggregation.xml
 all: all-am
 
 .SUFFIXES:
@@ -503,9 +511,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/C/attributes/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/C/time_aggregation/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/C/attributes/Makefile
+	  $(AUTOMAKE) --gnu examples/C/time_aggregation/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -534,13 +542,13 @@ clean-noinstPROGRAMS:
 	echo " rm -f" $$list; \
 	rm -f $$list
 
-attributes_read$(EXEEXT): $(attributes_read_OBJECTS) $(attributes_read_DEPENDENCIES) $(EXTRA_attributes_read_DEPENDENCIES) 
-	@rm -f attributes_read$(EXEEXT)
-	$(AM_V_CCLD)$(attributes_read_LINK) $(attributes_read_OBJECTS) $(attributes_read_LDADD) $(LIBS)
+time_aggregation$(EXEEXT): $(time_aggregation_OBJECTS) $(time_aggregation_DEPENDENCIES) $(EXTRA_time_aggregation_DEPENDENCIES) 
+	@rm -f time_aggregation$(EXEEXT)
+	$(AM_V_CCLD)$(time_aggregation_LINK) $(time_aggregation_OBJECTS) $(time_aggregation_LDADD) $(LIBS)
 
-attributes_write$(EXEEXT): $(attributes_write_OBJECTS) $(attributes_write_DEPENDENCIES) $(EXTRA_attributes_write_DEPENDENCIES) 
-	@rm -f attributes_write$(EXEEXT)
-	$(AM_V_CCLD)$(attributes_write_LINK) $(attributes_write_OBJECTS) $(attributes_write_LDADD) $(LIBS)
+time_aggregation_no_xml$(EXEEXT): $(time_aggregation_no_xml_OBJECTS) $(time_aggregation_no_xml_DEPENDENCIES) $(EXTRA_time_aggregation_no_xml_DEPENDENCIES) 
+	@rm -f time_aggregation_no_xml$(EXEEXT)
+	$(AM_V_CCLD)$(time_aggregation_no_xml_LINK) $(time_aggregation_no_xml_OBJECTS) $(time_aggregation_no_xml_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
diff --git a/examples/C/time_aggregation/time_aggregation.c b/examples/C/time_aggregation/time_aggregation.c
new file mode 100644
index 0000000..9ea4ccc
--- /dev/null
+++ b/examples/C/time_aggregation/time_aggregation.c
@@ -0,0 +1,111 @@
+/* 
+ * ADIOS is freely available under the terms of the BSD license described
+ * in the COPYING file in the top level directory of this source distribution.
+ *
+ * Copyright (c) 2008 - 2009.  UT-BATTELLE, LLC. All rights reserved.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "mpi.h"
+#include "adios.h"
+
+const int  NX = 10;
+const int  NY = 5;
+const char diagfilename[] = "diag.bp";
+const char diag2filename[] = "diag2.bp";
+const char ckptfilename[] = "ckpt.bp";
+
+const MPI_Comm comm = MPI_COMM_WORLD;
+int rank, size;
+
+void write_diag (int step, double * p)
+{
+    int64_t     adios_handle;
+    if (rank==0) printf("    write diagnostics\n");
+
+    if (step==1)
+        adios_open (&adios_handle, "diagnostics", diagfilename, "w", comm);
+    else
+        adios_open (&adios_handle, "diagnostics", diagfilename, "a", comm);
+
+    adios_write (adios_handle, "NY", &NY);
+    adios_write (adios_handle, "size", &size);
+    adios_write (adios_handle, "rank", &rank);
+    adios_write (adios_handle, "pressure", p);
+
+    adios_close (adios_handle);
+}
+
+void write_diag2 (int step, double * t)
+{
+    int64_t     adios_handle;
+    if (rank==0) printf("    write diag2\n");
+
+    if (step==1)
+        adios_open (&adios_handle, "diag2", diag2filename, "w", comm);
+    else
+        adios_open (&adios_handle, "diag2", diag2filename, "a", comm);
+
+    adios_write (adios_handle, "size", &size);
+    adios_write (adios_handle, "rank", &rank);
+    adios_write (adios_handle, "t0", t);
+
+    adios_close (adios_handle);
+}
+
+void write_checkpoint (int step, double * p, double *t)
+{
+    int64_t     adios_handle;
+    if (rank==0) printf("    Checkpointing at step %d\n", step);
+    adios_open (&adios_handle, "checkpoint", ckptfilename, "w", comm);
+    adios_write (adios_handle, "NX", &NX);
+    adios_write (adios_handle, "NY", &NY);
+    adios_write (adios_handle, "size", &size);
+    adios_write (adios_handle, "rank", &rank);
+    adios_write (adios_handle, "step", &step);
+    adios_write (adios_handle, "temperature", t);
+    adios_write (adios_handle, "pressure", p);
+    adios_close (adios_handle);
+}
+
+int main (int argc, char ** argv) 
+{
+
+    int         i, it;
+    double      t[NX];
+    double      p[NY];
+
+    MPI_Init (&argc, &argv);
+    MPI_Comm_rank (comm, &rank);
+    MPI_Comm_size (comm, &size);
+
+    adios_init ("time_aggregation.xml", comm);
+
+
+    for (it = 1; it <= 100; it++)
+    {
+        if (rank==0) printf("Timestep %d...\n", it);
+
+        for (i = 0; i < NX; i++)
+            t[i] = it*1000.0 + rank*NX + i;
+
+        for (i = 0; i < NY; i++)
+            p[i] = it*1000.0 + rank*NY + i;
+
+        write_diag(it, p);
+        write_diag2(it, t);
+
+        if ( it%30 == 0) {
+            write_checkpoint(it, p, t);
+        }
+
+        MPI_Barrier (comm);
+        if (rank==0) printf("    step completed\n");
+    }
+
+    MPI_Barrier (comm);
+    adios_finalize (rank);
+    MPI_Finalize ();
+    return 0;
+}
diff --git a/examples/C/time_aggregation/time_aggregation.xml b/examples/C/time_aggregation/time_aggregation.xml
new file mode 100644
index 0000000..ae994df
--- /dev/null
+++ b/examples/C/time_aggregation/time_aggregation.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<adios-config host-language="C">
+
+  <adios-group name="checkpoint">
+      <var name="NX" type="integer"/>
+      <var name="NY" type="integer"/>
+      <var name="size" type="integer"/>
+      <var name="rank" type="integer"/>
+      <var name="step" type="integer"/>
+
+      <global-bounds dimensions="size,NX" offsets="rank,0">
+          <var name="temperature" gwrite="t" type="double" dimensions="1,NX"/>
+      </global-bounds>
+
+      <global-bounds dimensions="size,NY" offsets="rank,0">
+          <var name="pressure" gwrite="p" type="double" dimensions="1,NY"/>
+      </global-bounds>
+  </adios-group> <!-- checkpoint -->
+
+  <adios-group name="diagnostics">
+      <var name="NY" type="integer"/>
+      <var name="size" type="integer"/>
+      <var name="rank" type="integer"/>
+      <global-bounds dimensions="size,NY" offsets="rank,0">
+          <var name="pressure" gwrite="p" type="double" dimensions="1,NY"/>
+      </global-bounds>
+  </adios-group> <!-- diagnostics -->
+
+  <adios-group name="diag2">
+      <var name="size" type="integer"/>
+      <var name="rank" type="integer"/>
+      <global-bounds dimensions="size,1" offsets="rank,0">
+          <var name="t0" gwrite="temperature[0]" type="double" dimensions="1,1"/>
+      </global-bounds>
+  </adios-group> <!-- diagnostics -->
+
+  <method group="checkpoint" method="MPI">verbose=3</method>
+  <method group="diagnostics" method="MPI">verbose=3</method>
+  <method group="diag2" method="MPI">verbose=3</method>
+  
+  <time-aggregation group="diagnostics" buffer-size=12000 sync-with-group="checkpoint"/>
+  <time-aggregation group="diag2" buffer-size=32000 sync-with-group="checkpoint"/>
+
+</adios-config>
+
diff --git a/examples/C/time_aggregation/time_aggregation_no_xml.c b/examples/C/time_aggregation/time_aggregation_no_xml.c
new file mode 100644
index 0000000..c14e854
--- /dev/null
+++ b/examples/C/time_aggregation/time_aggregation_no_xml.c
@@ -0,0 +1,158 @@
+/* 
+ * ADIOS is freely available under the terms of the BSD license described
+ * in the COPYING file in the top level directory of this source distribution.
+ *
+ * Copyright (c) 2008 - 2009.  UT-BATTELLE, LLC. All rights reserved.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "mpi.h"
+#include "adios.h"
+
+const int  NX = 10;
+const int  NY = 5;
+const char diagfilename[] = "diag.bp";
+const char diag2filename[] = "diag2.bp";
+const char ckptfilename[] = "ckpt.bp";
+
+const MPI_Comm comm = MPI_COMM_WORLD;
+int rank, size;
+
+void write_diag (int step, double * p)
+{
+    int64_t     adios_handle;
+    if (rank==0) printf("    write diagnostics\n");
+
+    if (step==1)
+        adios_open (&adios_handle, "diagnostics", diagfilename, "w", comm);
+    else
+        adios_open (&adios_handle, "diagnostics", diagfilename, "a", comm);
+
+    adios_write (adios_handle, "NY", &NY);
+    adios_write (adios_handle, "size", &size);
+    adios_write (adios_handle, "rank", &rank);
+    adios_write (adios_handle, "pressure", p);
+
+    adios_close (adios_handle);
+}
+
+void write_diag2 (int step, double * t)
+{
+    int64_t     adios_handle;
+    if (rank==0) printf("    write diag2\n");
+
+    if (step==1)
+        adios_open (&adios_handle, "diag2", diag2filename, "w", comm);
+    else
+        adios_open (&adios_handle, "diag2", diag2filename, "a", comm);
+
+    adios_write (adios_handle, "size", &size);
+    adios_write (adios_handle, "rank", &rank);
+    adios_write (adios_handle, "t0", t);
+
+    adios_close (adios_handle);
+}
+
+void write_checkpoint (int step, double * p, double *t)
+{
+    int64_t     adios_handle;
+    if (rank==0) printf("    Checkpointing at step %d\n", step);
+    adios_open (&adios_handle, "checkpoint", ckptfilename, "w", comm);
+    adios_write (adios_handle, "NX", &NX);
+    adios_write (adios_handle, "NY", &NY);
+    adios_write (adios_handle, "size", &size);
+    adios_write (adios_handle, "rank", &rank);
+    adios_write (adios_handle, "step", &step);
+    adios_write (adios_handle, "temperature", t);
+    adios_write (adios_handle, "pressure", p);
+    adios_close (adios_handle);
+}
+
+void define_groups ()
+{
+    int64_t  g_diag, g_diag2, g_ckpt;
+
+    // Group diagnosis
+    adios_declare_group (&g_diag, "diagnostics", "", adios_stat_default);
+    adios_define_var (g_diag, "NY",  "", adios_integer, 0, 0, 0);
+    adios_define_var (g_diag, "size","", adios_integer, 0, 0, 0);
+    adios_define_var (g_diag, "rank","", adios_integer, 0, 0, 0);
+    int64_t var_p = adios_define_var (g_diag, "pressure", "", adios_double,
+                                       "1,NY", "size,NY", "rank,0");
+    adios_set_transform (var_p, "none");
+
+
+    // Group diag2
+    adios_declare_group (&g_diag2, "diag2", "", adios_stat_default);
+    adios_define_var (g_diag2, "size","", adios_integer, 0, 0, 0);
+    adios_define_var (g_diag2, "rank","", adios_integer, 0, 0, 0);
+    int64_t var_t0 = adios_define_var (g_diag2, "t0", "", adios_double,
+                                       "1,1", "size,1", "rank,0");
+    adios_set_transform (var_t0, "none");
+
+
+    // Group checkpoint
+    adios_declare_group (&g_ckpt, "checkpoint", "", adios_stat_default);
+    adios_define_var (g_ckpt, "NX",  "", adios_integer, 0, 0, 0);
+    adios_define_var (g_ckpt, "NY",  "", adios_integer, 0, 0, 0);
+    adios_define_var (g_ckpt, "size","", adios_integer, 0, 0, 0);
+    adios_define_var (g_ckpt, "rank","", adios_integer, 0, 0, 0);
+    adios_define_var (g_ckpt, "step","", adios_integer, 0, 0, 0);
+    adios_define_var (g_ckpt, "temperature", "", adios_double,
+                      "1,NX", "size,NX", "rank,0");
+    adios_define_var (g_ckpt, "pressure", "", adios_double,
+                      "1,NY", "size,NY", "rank,0");
+
+
+    adios_select_method (g_diag,  "MPI", "verbose=3", "");
+    adios_select_method (g_diag2, "MPI", "verbose=3", "");
+    adios_select_method (g_ckpt,  "MPI", "verbose=3", "");
+    //adios_select_method (m_ckpt, "MPI_AGGREGATE", "num_ost=2;num_aggregators=2;aggregation_type=2;verbose=3", "");
+
+    adios_set_time_aggregation (g_diag, 12000, g_ckpt);
+    adios_set_time_aggregation (g_diag2, 32000, g_ckpt);
+}
+
+int main (int argc, char ** argv) 
+{
+
+    int         i, it;
+    double      t[NX];
+    double      p[NY];
+
+    MPI_Init (&argc, &argv);
+    MPI_Comm_rank (comm, &rank);
+    MPI_Comm_size (comm, &size);
+
+    adios_init_noxml (comm);
+    adios_set_max_buffer_size (10);
+    define_groups();
+
+
+    for (it = 1; it <= 100; it++)
+    {
+        if (rank==0) printf("Timestep %d...\n", it);
+
+        for (i = 0; i < NX; i++)
+            t[i] = it*1000.0 + rank*NX + i;
+
+        for (i = 0; i < NY; i++)
+            p[i] = it*1000.0 + rank*NY + i;
+
+        write_diag(it, p);
+        write_diag2(it, t);
+
+        if ( it%30 == 0) {
+            write_checkpoint(it, p, t);
+        }
+
+        MPI_Barrier (comm);
+        if (rank==0) printf("    step completed\n");
+    }
+
+    MPI_Barrier (comm);
+    adios_finalize (rank);
+    MPI_Finalize ();
+    return 0;
+}
diff --git a/examples/C/transforms/Makefile.in b/examples/C/transforms/Makefile.in
index 646f0b9..8c45625 100644
--- a/examples/C/transforms/Makefile.in
+++ b/examples/C/transforms/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -434,6 +434,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/Makefile.in b/examples/Fortran/Makefile.in
index f04f53e..1f966d5 100644
--- a/examples/Fortran/Makefile.in
+++ b/examples/Fortran/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/arrays/Makefile.in b/examples/Fortran/arrays/Makefile.in
index 65c8cb3..fc96393 100644
--- a/examples/Fortran/arrays/Makefile.in
+++ b/examples/Fortran/arrays/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -411,6 +411,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/global-array-time/Makefile.in b/examples/Fortran/global-array-time/Makefile.in
index 9ee2fa0..9a444da 100644
--- a/examples/Fortran/global-array-time/Makefile.in
+++ b/examples/Fortran/global-array-time/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -405,6 +405,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/global-array/Makefile.in b/examples/Fortran/global-array/Makefile.in
index 979a347..a576d12 100644
--- a/examples/Fortran/global-array/Makefile.in
+++ b/examples/Fortran/global-array/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -423,6 +423,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/global-array/adios_global_no_xml.F90 b/examples/Fortran/global-array/adios_global_no_xml.F90
index a170488..63e98b8 100644
--- a/examples/Fortran/global-array/adios_global_no_xml.F90
+++ b/examples/Fortran/global-array/adios_global_no_xml.F90
@@ -37,8 +37,9 @@ program adios_global
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (10) 
 
-    call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
+    call adios_declare_group (m_adios_group, "restart", "iter", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
+    call adios_set_time_aggregation (m_adios_group, 32000_8, 0_8, adios_err);
 
     ! This example doesn't use varid during writing.
     ! So we simply put 'varid' everywhere.
diff --git a/examples/Fortran/global-array/no_xml_write_byid.F90 b/examples/Fortran/global-array/no_xml_write_byid.F90
index 485f8d6..ec3789a 100644
--- a/examples/Fortran/global-array/no_xml_write_byid.F90
+++ b/examples/Fortran/global-array/no_xml_write_byid.F90
@@ -43,7 +43,7 @@ program no_xml_write_byid
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (10) 
 
-    call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
+    call adios_declare_group (m_adios_group, "restart", "iter", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     G = 2 * NX * size
diff --git a/examples/Fortran/scalars/Makefile.in b/examples/Fortran/scalars/Makefile.in
index d16e41d..9e8ddf1 100644
--- a/examples/Fortran/scalars/Makefile.in
+++ b/examples/Fortran/scalars/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -411,6 +411,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/schema/Makefile.in b/examples/Fortran/schema/Makefile.in
index c7a37bd..795c3d8 100644
--- a/examples/Fortran/schema/Makefile.in
+++ b/examples/Fortran/schema/Makefile.in
@@ -111,7 +111,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -442,6 +442,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/examples/Fortran/schema/rectilinear2d_noxml.F90 b/examples/Fortran/schema/rectilinear2d_noxml.F90
index 7bd9da8..55a06fc 100644
--- a/examples/Fortran/schema/rectilinear2d_noxml.F90
+++ b/examples/Fortran/schema/rectilinear2d_noxml.F90
@@ -123,7 +123,7 @@ program rectilinear2d_f_noxml
 
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (50) 
-    call adios_declare_group (m_adios_group, "rectilinear2d", "", 1, adios_err)
+    call adios_declare_group (m_adios_group, "rectilinear2d", "", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     ! This example doesn't use varid during writing.
diff --git a/examples/Fortran/schema/structured2d_noxml.F90 b/examples/Fortran/schema/structured2d_noxml.F90
index eb4dc2f..3e0509e 100644
--- a/examples/Fortran/schema/structured2d_noxml.F90
+++ b/examples/Fortran/schema/structured2d_noxml.F90
@@ -128,7 +128,7 @@ program structured2d_f_noxml
 
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (50) 
-    call adios_declare_group (m_adios_group, "structured2d", "", 1, adios_err)
+    call adios_declare_group (m_adios_group, "structured2d", "", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     ! This example doesn't use varid during writing.
diff --git a/examples/Fortran/schema/tri2d_noxml.F90 b/examples/Fortran/schema/tri2d_noxml.F90
index d470adc..2d85ebc 100644
--- a/examples/Fortran/schema/tri2d_noxml.F90
+++ b/examples/Fortran/schema/tri2d_noxml.F90
@@ -222,7 +222,7 @@ program tri2d_f_noxml
 
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (10) 
-    call adios_declare_group (m_adios_group, "tri2d", "", 1, adios_err)
+    call adios_declare_group (m_adios_group, "tri2d", "", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     ! This example doesn't use varid during writing.
diff --git a/examples/Fortran/schema/tri2d_noxml_seperate.F90 b/examples/Fortran/schema/tri2d_noxml_seperate.F90
index 5806f6e..0e490ba 100644
--- a/examples/Fortran/schema/tri2d_noxml_seperate.F90
+++ b/examples/Fortran/schema/tri2d_noxml_seperate.F90
@@ -229,7 +229,7 @@ program tri2d_f_noxml
     !!
     !! Define the Data group
     !!
-    call adios_declare_group (data_group, "tri2d", "", 1, adios_err)
+    call adios_declare_group (data_group, "tri2d", "", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (data_group, "MPI", "", "", adios_err)
 
     ! This example doesn't use varid during writing.
@@ -299,7 +299,7 @@ program tri2d_f_noxml
     !!
     !! Define the Mesh group
     !!
-    call adios_declare_group (mesh_group, "trimesh", "", 1, adios_err)
+    call adios_declare_group (mesh_group, "trimesh", "", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (mesh_group, "MPI", "", "", adios_err)
     call adios_define_var (mesh_group, "npoints" &
                 ,"", adios_integer &
diff --git a/examples/Fortran/schema/uniform2d_noxml.F90 b/examples/Fortran/schema/uniform2d_noxml.F90
index af0d2d8..50098c5 100644
--- a/examples/Fortran/schema/uniform2d_noxml.F90
+++ b/examples/Fortran/schema/uniform2d_noxml.F90
@@ -117,7 +117,7 @@ program uniform2d_f_noxml
 
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (50) 
-    call adios_declare_group (m_adios_group, "uniform2d", "", 1, adios_err)    
+    call adios_declare_group (m_adios_group, "uniform2d", "", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     ! This example doesn't use varid during writing.
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 3f495ec..f1633ca 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/runconf b/runconf
index d497636..25629a7 100755
--- a/runconf
+++ b/runconf
@@ -152,7 +152,7 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
     module unload pgi gcc intel pathscale
     module unload python
     module load PE-$TARGET
-    module load python
+    #module load python
     # Use both seq hdf5 (for utils) and 
     #   parallel hdf5 (for PHDF5 method)
     module load hdf5/1.8.11
@@ -174,7 +174,10 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
     #module unload netcdf
     #module load szip
     #module load bzip2
-    #module load dataspaces/1.4.0
+    module load dataspaces/1.6.1
+    module load flexpath/stable
+    module load alacrity/1.0.0
+    module load fastbit/svn
     export MPICC=mpicc
     export MPICXX=mpiCC
     export MPIFC=mpif90
@@ -182,12 +185,10 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
         export CC=pgcc
         export CXX=pgCC
         export FC=pgf90
-        WITHFLEX="--with-flexpath=/ccs/proj/e2e/chaos/sith/$TARGET"
     elif [ "$TARGET" == "gnu" ]; then
         export CC=gcc
         export CXX=g++
         export FC=gfortran
-        WITHFLEX="--with-flexpath=/ccs/proj/e2e/chaos/sith/$TARGET"
     elif [ "$TARGET" == "intel" ]; then
         export CC=icc
         export CXX=icpc
@@ -201,11 +202,16 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK" 
     export CFLAGS="-g -fPIC" 
     $SRCDIR/configure --prefix=/ccs/proj/e2e/${USER}/ADIOS/rhea.$TARGET \
-        --config-cache \
         --disable-maintainer-mode \
         --enable-dependency-tracking \
         --enable-research-transports \
         --with-lustre \
+        --with-dataspaces=$DATASPACES_DIR \
+        --with-flexpath=$FLEXPATH_DIR \
+        --with-alacrity=$ALACRITY_DIR \
+        --with-zlib \
+        --with-bzip2 \
+        --with-fastbit=$FASTBIT_DIR \
         #--with-hdf5=${SEQ_HDF5_DIR} \
         #--with-hdf5-libs="${SEQ_HDF5_CLIB}" \
         #--with-phdf5=${PAR_HDF5_DIR} \
@@ -214,10 +220,6 @@ elif [ `hostname | cut -c 1-4` == "rhea" ]; then
         #--with-netcdf-libs="${SEQ_NC_CLIB}" \
         #--with-nc4par=${PAR_NC_DIR} \
         #--with-nc4par-libs="${PAR_NC_CLIB}" \
-        #--with-zlib \
-        #--with-bzip2=$BZIP2_DIR \
-        #--with-dataspaces=$DATASPACES_DIR \
-        #$WITHFLEX \
         #--with-aplod=/ccs/proj/e2e/ncsu/sith.gnu \
         #--with-isobar=/ccs/proj/e2e/ncsu/sith.gnu \
         #--with-fgr=/ccs/proj/e2e/qliu/tap \
@@ -342,9 +344,12 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
     export CXX=CC
     if [ "$TARGET" == "pgi" ]; then
         # FASTBIT needs libstdc++ and -pgcpplibs flag
-        export LDFLAGS="-pgcpplibs" 
+        export LDFLAGS="-pgc++libs" 
         #export EXTRA_LIBS="/opt/gcc/4.9.0/snos/lib64/libstdc++.a"
+        export EXTRA_CFLAGS="-fast"
         #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/titan/$target-cpu"
+        module load flexpath/stable
+        WITHFLEX="--with-flexpath=$FLEXPATH_DIR"
     elif [ "$TARGET" == "gnu" ]; then
         #export CC=gcc
         #export FC=gfortran
@@ -359,6 +364,7 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
         # FASTBIT needs libstdc++
         WITHFASTBIT="--with-fastbit=$FASTBIT_DIR"
         #export EXTRA_LIBS="${GCC_PATH}/snos/lib64/libstdc++.a"
+        export EXTRA_CFLAGS="-Ofast"
         #DATASPACES_DIR="/ccs/proj/e2e/dataspaces/titan/$TARGET"
     elif [ "$TARGET" == "cray" ]; then
         export EXTRA_CFLAGS="-h gnu"
@@ -373,7 +379,7 @@ elif [ `hostname | cut -c 1-5` == "titan" ]; then
     #export CC=mpicc
     #export FC=mpif90
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK -DDART_DO_VERSIONING" 
-    export CFLAGS="-fPIC -g -O2 ${EXTRA_CFLAGS}" 
+    export CFLAGS="-fPIC -g ${EXTRA_CFLAGS}" 
     LIBS="$EXTRA_LIBS" ${SRCDIR}/configure --prefix=/ccs/proj/e2e/${USER}/ADIOS/xk6.$TARGET \
     --enable-dependency-tracking \
     --disable-maintainer-mode \
@@ -424,8 +430,8 @@ elif [ `hostname | cut -c 1-4` == "eos-" ]; then
       module unload papi
       module unload pmi
       if [ "$TARGET" == "pgi" ]; then
-          # NSSI needs -pgcpplibs flag 
-          export LDFLAGS="-pgcpplibs" 
+          # NSSI needs -pgc++libs flag 
+          export LDFLAGS="-pgc++libs" 
           unset EXTRA_LIBS 
       elif [ "$TARGET" == "gnu" ]; then
           # NSSI needs libstdc++
@@ -481,7 +487,7 @@ elif [ `hostname | cut -c 1-7` == "chester" ]; then
           export MPICXX=CC
           # FASTBIT, ALACRITY need -pgcpplibs flag 
           WITHALACRITY="--with-alacrity=/ccs/proj/e2e/ncsu/alacrity/xk6/pgi"
-          export LDFLAGS="-pgcpplibs" 
+          export LDFLAGS="-pgc++libs" 
           unset EXTRA_LIBS 
       elif [ "$TARGET" == "gnu" ]; then
           export CC=gcc
@@ -615,7 +621,7 @@ elif [ `hostname | cut -c 1-4` == "cori" ]; then
 
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export CFLAGS="-fPIC ${EXTRA_CFLAGS}"
-    ${SRCDIR}/configure --prefix=/global/homes/p/pnorbert/adios/1.10.0/cori/$TARGET \
+    ${SRCDIR}/configure --prefix=/global/homes/p/pnorbert/adios/1.11.0/cori/$TARGET \
         --disable-maintainer-mode \
         --enable-dependency-tracking \
         --with-lustre=/usr \
@@ -705,6 +711,7 @@ elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ];
     # Installed Homebrew, gcc/gfortran 5.3.0 and OpenMPI 1.10.2 in /usr/local
     # But should work with default mpicc and gcc, using --disable-fortran or with Homebrew gfortran
     #
+    unset WITHZFP # build from the included zfp source
     USE_GCC5=false
     if [ $USE_GCC5 == "true" ]; then
         # If want to use gcc/gfortran 5.3.0
@@ -716,6 +723,9 @@ elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ];
         export OMPI_FC=/usr/local/bin/gfortran
         export WITHALACRITY="--with-alacrity=/opt/alacrity/gcc5"
         export WITHFASTBIT="--without-fastbit"
+        export WITHFLEXPATH="--without-flexpath"
+        export WITHDATASPACES="--without-dataspaces --without-dimes"
+        #export WITHZFP="--without-zfp"
         # ALACRITY, FASTBIT are C++ lib so we need to link with the actual libstdc++
         # if the automatically added -lstdc++ does not work
         #export LIBS="/usr/local/Cellar/gcc/5.3.0/lib/gcc/5/libstdc++.dylib" 
@@ -730,6 +740,9 @@ elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ];
         unset OMPI_FC
         export WITHALACRITY="--with-alacrity=/opt/alacrity/clang"
         export WITHFASTBIT="--with-fastbit=/opt/fastbit"
+        export WITHDATASPACES="--with-dataspaces=/opt/dataspaces --without-dimes"
+        export WITHFLEXPATH="--with-flexpath=/opt/chaos"
+        #export WITHZFP="--with-zfp=/Users/pnb/scratch/zfp-0.5.0"
         echo "Configure using clang"
         # Problem: test/test_src/selection_api.F90 link will fail because
         #   gfortran is used which finds the gcc-5 libstdc++ library instead of the system libstdc++
@@ -747,6 +760,9 @@ elif [ `hostname | cut -c 1-4` == "dyn9" -o `hostname | cut -c 1-3` == "pnb" ];
         --with-zlib \
         ${WITHALACRITY} \
         ${WITHFASTBIT} \
+        ${WITHZFP} \
+        ${WITHDATASPACES} \
+        ${WITHFLEXPATH} \
         --with-phdf5=/usr/local 
     #    --disable-mpi --disable-write --disable-fortran \
     #        --with-netcdf=/opt/netcdf \
@@ -853,7 +869,7 @@ elif [ `hostname | cut -c 1-9` == "PC0098504" ]; then
     export CPPFLAGS="-DMPICH_IGNORE_CXX_SEEK"
     export LDFLAGS="-lpthread"
     export CFLAGS="-g -O0 -fPIC -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast"
-    ${SRCDIR}/configure --prefix=/opt/adios/1.10 \
+    ${SRCDIR}/configure --prefix=/opt/adios \
         --enable-dependency-tracking \
         --enable-timers \
         --disable-timer-events 
@@ -872,7 +888,7 @@ elif [ `hostname | cut -c 1-7` == "adiosVM" ]; then
     export FC=gfortran
 
     export CFLAGS="-g -O0 -fPIC -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast"
-    ${SRCDIR}/configure --prefix=/opt/adios/1.10 \
+    ${SRCDIR}/configure --prefix=/opt/adios/1.11 \
         --disable-maintainer-mode \
         --enable-dependency-tracking \
         --enable-timers \
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c332765..0d797df 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,18 +1,32 @@
 
+set(EXTRA_OBJECTS "")  # added to libraries that include read+write
+set(EXTRA_READ_OBJECTS "") # added to read-only libraries
 # First build the mxml library in src/mxml before setting include directories for src/
 # Those source files must find PROJECT_SOURCE_DIR/src/mxml/config.h first, then PROJECT_BIN/DIR/config.h
 if (BUILD_MXML)
   add_subdirectory(mxml)
   set(MXML_BUILDDIR "mxml/mxml-2.9")
   set(MXML_LIB=libmxml_a)
+  set(EXTRA_OBJECTS ${EXTRA_OBJECTS} $<TARGET_OBJECTS:mxml>)
 endif(BUILD_MXML)
 
+# Build the zfp library in src/zfp 
+if (BUILD_ZFP)
+  add_subdirectory(zfp)
+  set(ZFP_BUILDDIR "zfp/zfp-0.5.0")
+  set(ZFP_LIB=libzfp_a)
+  include_directories(${ZFP_INCLUDE_DIR})
+  set(EXTRA_OBJECTS ${EXTRA_OBJECTS} $<TARGET_OBJECTS:zfp>)
+  set(EXTRA_READ_OBJECTS ${EXTRA_READ_OBJECTS} $<TARGET_OBJECTS:zfp>)
+endif(BUILD_ZFP)
+
 include_directories(${PROJECT_BINARY_DIR})
 include_directories(${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src/core ${PROJECT_SOURCE_DIR}/src/core/transforms)
 include_directories(${PROJECT_BINARY_DIR}/src ${PROJECT_BINARY_DIR}/src/public)
 include_directories(${MXML_INCLUDE_DIR})
 link_directories(${PROJECT_BINARY_DIR}/src)
 
+
 if(HAVE_NSSI)
   add_executable(nssi-staging-server nssi/nssi_staging_server.cpp nssi/aggregation.cpp)
   set_target_properties(nssi-staging-server PROPERTIES COMPILE_FLAGS "${ADIOSLIB_CFLAGS} ${ADIOSLIB_EXTRA_CPPFLAGS} ${ADIOSLIB_CPPFLAGS} ${MACRODEFFLAG}PTL_IFACE_CLIENT=CRAY_USER_NAL ${MACRODEFFLAG}PTL_IFACE_SERVER=CRAY_USER_NAL") 
@@ -53,7 +67,8 @@ set (transforms_common_HDRS core/adios_copyspec.h
                          core/transforms/adios_transforms_common.h 
                          core/transforms/adios_transforms_hooks.h 
                          core/transforms/adios_transforms_util.h 
-                         core/adios_subvolume.h)
+                         core/adios_subvolume.h
+                         public/adios_transform_methods.h)
 
 set (transforms_read_HDRS core/transforms/adios_transforms_read.h 
                        core/transforms/adios_transforms_hooks_read.h 
@@ -73,7 +88,8 @@ set (transforms_common_SOURCES  ${transforms_common_HDRS}
                             core/adios_subvolume.c 
                             core/transforms/plugindetect/detect_plugin_infos.h 
                             core/transforms/plugindetect/detect_plugin_types.h 
-                            core/transforms/plugindetect/plugin_info_types.h)
+                            core/transforms/plugindetect/plugin_info_types.h
+                            core/adios_transform_methods.c)
 
 set (transforms_read_SOURCES ${transforms_read_HDRS} 
                           core/transforms/adios_transforms_read.c 
@@ -88,6 +104,7 @@ set (transforms_read_SOURCES ${transforms_read_HDRS}
                           transforms/adios_transform_bzip2_read.c
                           transforms/adios_transform_identity_read.c
                           transforms/adios_transform_zlib_read.c
+                          transforms/adios_transform_zfp_read.c
                           core/adios_selection_util.c 
                           core/transforms/plugindetect/detect_plugin_read_hook_decls.h
                           core/transforms/plugindetect/detect_plugin_read_hook_reg.h
@@ -106,6 +123,7 @@ set (transforms_write_SOURCES ${transforms_write_HDRS}
                            transforms/adios_transform_isobar_write.c
                            transforms/adios_transform_szip_write.c
                            transforms/adios_transform_zlib_write.c
+                           transforms/adios_transform_zfp_write.c
                            ${transforms_write_method_SOURCES})
 
 #######Query source files
@@ -388,13 +406,8 @@ if(BUILD_WRITE)
     endif(RESEARCH_TRANSPORTS)
 
 # add library adios and adios_nompi
-    if(BUILD_MXML)
-        add_library(adios STATIC ${libadios_a_SOURCES} $<TARGET_OBJECTS:mxml>)
-        add_library(adios_nompi STATIC ${libadios_nompi_a_SOURCES} $<TARGET_OBJECTS:mxml>)
-    else(BUILD_MXML)
-        add_library(adios STATIC ${libadios_a_SOURCES})
-        add_library(adios_nompi STATIC ${libadios_nompi_a_SOURCES})
-    endif(BUILD_MXML)
+    add_library(adios STATIC ${libadios_a_SOURCES} ${EXTRA_OBJECTS})
+    add_library(adios_nompi STATIC ${libadios_nompi_a_SOURCES} ${EXTRA_OBJECTS})
     set_target_properties(adios PROPERTIES COMPILE_FLAGS "${libadios_a_CPPFLAGS} ${libadios_a_CFLAGS}")
     set_target_properties(adios_nompi PROPERTIES COMPILE_FLAGS "${libadios_nompi_a_CPPFLAGS} ${libadios_nompi_a_CFLAGS}")
 #   message(STATUS "${libadios_a_CPPFLAGS}")
@@ -469,17 +482,10 @@ if(BUILD_WRITE)
 #       install(FILES ${nodist_include_HEADERS} DESTINATION ${includedir})
         install(FILES ${PROJECT_BINARY_DIR}/src/adios_write_mod.mod ${PROJECT_BINARY_DIR}/src/adios_defs_mod.mod DESTINATION ${includedir})
         ##add library adiosf and adiosf_v1
-        if(BUILD_MXML)
-          add_library(adiosf STATIC ${libadiosf_a_SOURCES} $<TARGET_OBJECTS:mxml>)
-          add_library(adiosf_v1 STATIC ${libadiosf_v1_a_SOURCES} $<TARGET_OBJECTS:mxml>) 
-          add_library(adiosf_nompi STATIC ${libadiosf_nompi_a_SOURCES} $<TARGET_OBJECTS:mxml>)
-          add_library(adiosf_nompi_v1 STATIC ${libadiosf_nompi_v1_a_SOURCES} $<TARGET_OBJECTS:mxml>)
-        else(BUILD_MXML)
-          add_library(adiosf STATIC ${libadiosf_a_SOURCES})
-          add_library(adiosf_v1 STATIC ${libadiosf_v1_a_SOURCES}) 
-          add_library(adiosf_nompi STATIC ${libadiosf_nompi_a_SOURCES})
-          add_library(adiosf_nompi_v1 STATIC ${libadiosf_nompi_v1_a_SOURCES})
-        endif(BUILD_MXML)
+        add_library(adiosf STATIC ${libadiosf_a_SOURCES} ${EXTRA_OBJECTS})
+        add_library(adiosf_v1 STATIC ${libadiosf_v1_a_SOURCES} ${EXTRA_OBJECTS}) 
+        add_library(adiosf_nompi STATIC ${libadiosf_nompi_a_SOURCES} ${EXTRA_OBJECTS})
+        add_library(adiosf_nompi_v1 STATIC ${libadiosf_nompi_v1_a_SOURCES} ${EXTRA_OBJECTS})
         set_target_properties(adiosf PROPERTIES COMPILE_FLAGS "${libadiosf_a_CPPFLAGS} ${libadiosf_a_CFLAGS}")
         set_target_properties(adiosf_v1 PROPERTIES COMPILE_FLAGS "${libadiosf_v1_a_CPPFLAGS} ${libadiosf_v1_a_CFLAGS}")
         set_target_properties(adiosf_nompi PROPERTIES COMPILE_FLAGS "${libadiosf_nompi_a_CPPFLAGS} ${libadiosf_nompi_a_CFLAGS}")
@@ -506,7 +512,8 @@ set(include_HEADERS ${include_HEADERS} public/adios.h
                    public/adios_schema.h
                    public/adios_link.h
                    public/adios_read_ext.h
-                   public/adios_query.h)
+                   public/adios_query.h
+                   public/adios_transform_methods.h)
 
 set(libadiosread_a_SOURCES core/adios_bp_v1.c
                       core/adios_endianness.c 
@@ -573,7 +580,7 @@ set(libadiosread_a_CPPFLAGS "${libadiosread_a_CPPFLAGS} ${ADIOSLIB_EXTRA_CPPFLAG
 install(FILES ${include_HEADERS} DESTINATION ${includedir})
 # install generated header file adios_version.h
 install(FILES ${PROJECT_BINARY_DIR}/src/public/adios_version.h DESTINATION ${includedir})
-add_library(adiosread STATIC ${libadiosread_a_SOURCES})
+add_library(adiosread STATIC ${libadiosread_a_SOURCES} ${EXTRA_READ_OBJECTS})
 set_target_properties(adiosread PROPERTIES COMPILE_FLAGS "${libadiosread_a_CPPFLAGS} ${libadiosread_a_CFLAGS}")
 
 #start libadiosreadf.a libadiosreadf_v1.a
@@ -683,13 +690,13 @@ if(BUILD_FORTRAN)
 #add library adiosreadf and adiosreadf_v1
     #include_directories(${nodist_include_HEADERS})
 #  install(FILES ${nodist_include_HEADERS} DESTINATION ${includedir})
-    install(FILES ${PROJECT_BINARY_DIR}/src/adios_read_mod.mod DESTINATION ${includedir})
-    add_library(adiosreadf ${libadiosreadf_a_SOURCES})
+    install(FILES ${PROJECT_BINARY_DIR}/src/adios_read_mod.mod ${PROJECT_BINARY_DIR}/src/adios_defs_mod.mod ${PROJECT_BINARY_DIR}/src/adios_query_mod.mod DESTINATION ${includedir})
+    add_library(adiosreadf ${libadiosreadf_a_SOURCES} ${EXTRA_READ_OBJECTS})
     set_target_properties(adiosreadf PROPERTIES COMPILE_FLAGS "${libadiosreadf_a_CPPFLAGS} ${libadiosreadf_a_CFLAGS}")
   
 #  message(STATUS "${nodist_include_HEADERS}")
 #  message(STATUS "${libadiosreadf_v1_a_SOURCES}")
-    add_library(adiosreadf_v1 ${libadiosreadf_v1_a_SOURCES})
+    add_library(adiosreadf_v1 ${libadiosreadf_v1_a_SOURCES} ${EXTRA_READ_OBJECTS})
     set_target_properties(adiosreadf_v1 PROPERTIES COMPILE_FLAGS "${libadiosreadf_v1_a_CPPFLAGS} ${libadiosreadf_v1_a_CFLAGS}")
 
 endif(BUILD_FORTRAN)
@@ -758,7 +765,7 @@ endif(HAVE_NSSI)
 set(libadiosread_nompi_a_CPPFLAGS "${libadiosread_nompi_a_CPPFLAGS} ${MACRODEFFLAG}_NOMPI ${ADIOSLIB_EXTRA_CPPFLAGS} ${ADIOSREADLIB_CPPFLAGS}")
 
 #add library adiosread_nompi
-add_library(adiosread_nompi ${libadiosread_nompi_a_SOURCES})
+add_library(adiosread_nompi ${libadiosread_nompi_a_SOURCES} ${EXTRA_READ_OBJECTS})
 set_target_properties(adiosread_nompi PROPERTIES COMPILE_FLAGS "${libadiosread_nompi_a_CPPFLAGS} ${libadiosread_nompi_a_CFLAGS}")
 
 
@@ -822,10 +829,10 @@ if(BUILD_FORTRAN)
     set(libadiosreadf_nompi_v1_a_CFLAGS "${libadiosreadf_nompi_a_CFLAGS}")
 
 #add library adiosreadf_nompi and adiosreadf_nompi_v1
-    add_library(adiosreadf_nompi ${libadiosreadf_nompi_a_SOURCES})
+    add_library(adiosreadf_nompi ${libadiosreadf_nompi_a_SOURCES} ${EXTRA_READ_OBJECTS})
     set_target_properties(adiosreadf_nompi  PROPERTIES COMPILE_FLAGS "${libadiosreadf_nompi_a_CPPFLAGS} ${libadiosreadf_nompi_a_CFLAGS}")
 
-    add_library(adiosreadf_nompi_v1 ${libadiosreadf_nompi_v1_a_SOURCES})
+    add_library(adiosreadf_nompi_v1 ${libadiosreadf_nompi_v1_a_SOURCES} ${EXTRA_READ_OBJECTS})
     set_target_properties(adiosreadf_nompi_v1 PROPERTIES COMPILE_FLAGS "${libadiosreadf_nompi_v1_a_CPPFLAGS} ${libadiosreadf_nompi_v1_a_CFLAGS}")
 
 endif(BUILD_FORTRAN)
@@ -859,11 +866,7 @@ endif(BUILD_WRITE)
 
 set(libadios_internal_nompi_a_CPPFLAGS "${MACRODEFFLAG}_INTERNAL ${ADIOSLIB_EXTRA_CPPFLAGS} ${ADIOSLIB_INT_CPPFLAGS} ${ADIOSLIB_CPPFLAGS}")
 
-if(BUILD_MXML)
-    add_library(adios_internal_nompi ${libadios_internal_nompi_a_SOURCES} $<TARGET_OBJECTS:mxml>)
-else(BUILD_MXML)
-    add_library(adios_internal_nompi ${libadios_internal_nompi_a_SOURCES})
-endif(BUILD_MXML)
+add_library(adios_internal_nompi ${libadios_internal_nompi_a_SOURCES} ${EXTRA_OBJECTS})
 set_target_properties(adios_internal_nompi PROPERTIES COMPILE_FLAGS "${libadios_internal_nompi_a_CPPFLAGS}")
 
 add_subdirectory(core)
diff --git a/src/Makefile.am b/src/Makefile.am
index d1bc164..192bf82 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,10 +1,14 @@
 AM_CPPFLAGS=-I$(top_builddir)/src/public -I$(top_srcdir) -I$(top_srcdir)/src/core -I$(top_srcdir)/src/core/transforms -I$(top_srcdir)/src/core/query
 
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
+METASOURCES=AUTO
+SUBDIRS=
+
 if BUILD_MXML
-SUBDIRS = mxml 
-MXML_BUILDDIR=mxml/mxml-2.9
-MXML_LIB=libmxml_a
-MXML_OBJECTS = ${MXML_BUILDDIR}/${MXML_LIB}-mxml-attr.${OBJEXT}     \
+    SUBDIRS += mxml 
+    MXML_BUILDDIR=mxml/mxml-2.9
+    MXML_LIB=libmxml_a
+    MXML_OBJECTS = ${MXML_BUILDDIR}/${MXML_LIB}-mxml-attr.${OBJEXT}     \
                      ${MXML_BUILDDIR}/${MXML_LIB}-mxml-get.${OBJEXT}      \
                      ${MXML_BUILDDIR}/${MXML_LIB}-mxml-private.${OBJEXT}  \
                      ${MXML_BUILDDIR}/${MXML_LIB}-mxml-string.${OBJEXT}   \
@@ -16,8 +20,25 @@ MXML_OBJECTS = ${MXML_BUILDDIR}/${MXML_LIB}-mxml-attr.${OBJEXT}     \
                      ${MXML_BUILDDIR}/${MXML_LIB}-mxml-set.${OBJEXT} 
 endif BUILD_MXML
 
-AUTOMAKE_OPTIONS = no-dependencies subdir-objects
-METASOURCES=AUTO
+if BUILD_ZFP
+    SUBDIRS += zfp 
+    ZFP_BUILDDIR=zfp/zfp-0.5.0/src
+    ZFP_LIB=libzfp_a
+    ZFP_OBJECTS = ${ZFP_BUILDDIR}/${ZFP_LIB}-bitstream.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode1f.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode1d.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode1f.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode1d.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode2f.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode2d.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode2f.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode2d.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode3f.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode3d.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode3f.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode3d.${OBJEXT} \
+              ${ZFP_BUILDDIR}/${ZFP_LIB}-zfp.${OBJEXT} 
+endif BUILD_ZFP
 
 bin_PROGRAMS=
 #if HAVE_NSSI
@@ -155,6 +176,7 @@ libcoreonce_a_SOURCES = core/a2sel.c \
                             core/qhashtbl.c \
                             core/strutil.c \
                             core/util.c \
+                            core/adios_transform_methods.c \
                             $(transforms_common_SOURCES) \
                             $(transforms_write_SOURCES) \
                             $(transforms_read_SOURCES) 
@@ -344,6 +366,9 @@ libadios_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
 if BUILD_MXML
 libadios_nompi_a_LIBADD += ${MXML_OBJECTS} 
 endif
+if BUILD_ZFP
+libadios_nompi_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 # force building the noinst_LIBRARIES first, before libadios_nompi.a
 EXTRA_libadios_nompi_a_DEPENDENCIES = libcoreonce.a 
 if !RESEARCH_TRANSPORTS
@@ -374,6 +399,10 @@ if BUILD_MXML
 libadiosf_nompi_a_LIBADD += ${MXML_OBJECTS}
 libadiosf_nompi_v1_a_LIBADD += ${MXML_OBJECTS} 
 endif
+if BUILD_ZFP
+libadiosf_nompi_a_LIBADD += ${ZFP_OBJECTS} 
+libadiosf_nompi_v1_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadiosf_nompi_a_DEPENDENCIES = libcoreonce.a 
 EXTRA_libadiosf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
 if !RESEARCH_TRANSPORTS
@@ -405,6 +434,9 @@ libadios_a_LIBADD = $(libcoreonce_a_OBJECTS)
 if BUILD_MXML
 libadios_a_LIBADD += ${MXML_OBJECTS} 
 endif
+if BUILD_ZFP
+libadios_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 # force building the noinst_LIBRARIES first, before libadios.a
 EXTRA_libadios_a_DEPENDENCIES = libcoreonce.a 
 
@@ -437,6 +469,10 @@ if BUILD_MXML
 libadiosf_a_LIBADD += ${MXML_OBJECTS}
 libadiosf_v1_a_LIBADD += ${MXML_OBJECTS}
 endif
+if BUILD_ZFP
+libadiosf_a_LIBADD += ${ZFP_OBJECTS} 
+libadiosf_v1_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadiosf_a_DEPENDENCIES = libcoreonce.a 
 EXTRA_libadiosf_v1_a_DEPENDENCIES = libcoreonce.a 
 
@@ -521,6 +557,9 @@ libadiosread_nompi_a_CPPFLAGS += $(MACRODEFFLAG)DMALLOC
 endif
 libadiosread_nompi_a_CPPFLAGS  += $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
 libadiosread_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
+if BUILD_ZFP
+libadiosread_nompi_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a 
 
 if BUILD_FORTRAN
@@ -571,6 +610,10 @@ libadiosreadf_nompi_a_SOURCES += core/adiosf_defs_mod.f90 \
                         	 query/adios_query_mod.f90
 libadiosreadf_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
 libadiosreadf_nompi_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+if BUILD_ZFP
+libadiosreadf_nompi_a_LIBADD += ${ZFP_OBJECTS} 
+libadiosreadf_nompi_v1_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadiosreadf_nompi_a_DEPENDENCIES = libcoreonce.a 
 EXTRA_libadiosreadf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
 
@@ -636,6 +679,9 @@ endif
 
 libadiosread_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
 libadiosread_a_LIBADD = $(libcoreonce_a_OBJECTS)
+if BUILD_ZFP
+libadiosread_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadiosread_a_DEPENDENCIES = libcoreonce.a 
 
 if BUILD_FORTRAN
@@ -688,6 +734,10 @@ libadiosreadf_a_SOURCES += core/adiosf_defs_mod.f90 \
 
 libadiosreadf_a_LIBADD = $(libcoreonce_a_OBJECTS)
 libadiosreadf_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+if BUILD_ZFP
+libadiosreadf_a_LIBADD += ${ZFP_OBJECTS} 
+libadiosreadf_v1_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadiosreadf_a_DEPENDENCIES = libcoreonce.a 
 EXTRA_libadiosreadf_v1_a_DEPENDENCIES = libcoreonce.a 
 
@@ -724,6 +774,9 @@ if BUILD_MXML
 libadios_internal_nompi_a_LIBADD += ${MXML_OBJECTS}
 endif
 endif
+if BUILD_ZFP
+libadios_internal_nompi_a_LIBADD += ${ZFP_OBJECTS} 
+endif BUILD_ZFP
 EXTRA_libadios_internal_nompi_a_DEPENDENCIES = libcoreonce.a 
 
 
@@ -770,7 +823,8 @@ include_HEADERS += public/adios.h \
                    public/adios_schema.h \
                    public/adios_link.h \
                    public/adios_read_ext.h \
-                   public/adios_query.h
+                   public/adios_query.h \
+                   public/adios_transform_methods.h 
                  
 EXTRA_DIST = core/adios_bp_v1.h core/adios_endianness.h \
              core/adios_internals.h core/adios_internals_mxml.h core/adios_logger.h \
@@ -787,6 +841,7 @@ EXTRA_DIST = core/adios_bp_v1.h core/adios_endianness.h \
              transforms/adios_transform_identity_read.h \
              transforms/adios_transform_szip.h \
              transforms/adios_transform_alacrity_common.h \
+             transforms/adios_transform_zfp_common.h \
              transforms/adios_transform_template_read.c \
              transforms/adios_transform_template_write.c \
              query/Makefile.plugins.cmake 
diff --git a/src/Makefile.in b/src/Makefile.in
index a6f14f5..0654f85 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -80,29 +80,31 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ at BUILD_MXML_TRUE@am__append_1 = mxml 
+ at BUILD_ZFP_TRUE@am__append_2 = zfp 
 bin_PROGRAMS =
 DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 	$(srcdir)/query/Makefile.plugins $(srcdir)/Makefile.in \
 	$(srcdir)/Makefile.am $(include_HEADERS)
- at HAVE_FASTBIT_TRUE@am__append_1 = query/query_fastbit.c \
+ at HAVE_FASTBIT_TRUE@am__append_3 = query/query_fastbit.c \
 @HAVE_FASTBIT_TRUE@	query/fastbit_adios.c
- at HAVE_FASTBIT_TRUE@am__append_2 = query/fastbit_adios.h
- at HAVE_ALACRITY_TRUE@am__append_3 = query/query_alac.c
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_4 = write/adios_flexpath.c  read/read_flexpath.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_5 = write/adios_flexpath.c read/read_flexpath.c
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_6 = write/adios_icee.c  read/read_icee.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_7 = write/adios_icee.c read/read_icee.c
- at BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__append_8 = write/adios_mpi_bgq.c 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__append_9 = write/adios_mpi_bgq.c  
- at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__append_10 = write/adios_dataspaces.c read/read_dataspaces.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__append_11 = write/adios_dataspaces.c read/read_dataspaces.c
- at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__append_12 = write/adios_dimes.c read/read_dimes.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__append_13 = write/adios_dimes.c read/read_dimes.c
- at BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_14 = write/adios_phdf5.c 
- at BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_15 = $(MACRODEFFLAG)PHDF5 $(MACRODEFFLAG)H5_USE_16_API 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_16 = write/adios_phdf5.c 
- at BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__append_17 = write/adios_nc4.c 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__append_18 = write/adios_nc4.c 
+ at HAVE_FASTBIT_TRUE@am__append_4 = query/fastbit_adios.h
+ at HAVE_ALACRITY_TRUE@am__append_5 = query/query_alac.c
+ at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_6 = write/adios_flexpath.c  read/read_flexpath.c
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_7 = write/adios_flexpath.c read/read_flexpath.c
+ at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_8 = write/adios_icee.c  read/read_icee.c
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_9 = write/adios_icee.c read/read_icee.c
+ at BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__append_10 = write/adios_mpi_bgq.c 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_BGQ_TRUE at am__append_11 = write/adios_mpi_bgq.c  
+ at BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__append_12 = write/adios_dataspaces.c read/read_dataspaces.c
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DATASPACES_TRUE at am__append_13 = write/adios_dataspaces.c read/read_dataspaces.c
+ at BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__append_14 = write/adios_dimes.c read/read_dimes.c
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_DIMES_TRUE at am__append_15 = write/adios_dimes.c read/read_dimes.c
+ at BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_16 = write/adios_phdf5.c 
+ at BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_17 = $(MACRODEFFLAG)PHDF5 $(MACRODEFFLAG)H5_USE_16_API 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_PHDF5_TRUE at am__append_18 = write/adios_phdf5.c 
+ at BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__append_19 = write/adios_nc4.c 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_NC4PAR_TRUE at am__append_20 = write/adios_nc4.c 
 
 #if HAVE_DATATAP
 #CLibSources += write/adios_datatap.c read/read_datatap.c
@@ -110,10 +112,10 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #FortranLibSources += write/adios_datatap.c read/read_datatap.c
 #endif
 #endif 
- at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_19 = write/adios_flexpath.c  read/read_flexpath.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_20 = write/adios_flexpath.c read/read_flexpath.c
- at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_21 = write/adios_icee.c read/read_icee.c
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_22 = write/adios_icee.c read/read_icee.c
+ at BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_21 = write/adios_flexpath.c  read/read_flexpath.c
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_FLEXPATH_TRUE at am__append_22 = write/adios_flexpath.c read/read_flexpath.c
+ at BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_23 = write/adios_icee.c read/read_icee.c
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_ICEE_TRUE at am__append_24 = write/adios_icee.c read/read_icee.c
 
 #if HAVE_NSSI
 #dist_libadios_a_SOURCES = nssi/adios_nssi_args.x
@@ -156,17 +158,20 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #
 #    Sequential C write library
 #
- at BUILD_WRITE_TRUE@am__append_23 = libadios_nompi.a
- at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_24 = ${MXML_OBJECTS} 
- at BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_25 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+ at BUILD_WRITE_TRUE@am__append_25 = libadios_nompi.a
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_26 = ${MXML_OBJECTS} 
+ at BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE at am__append_27 = ${ZFP_OBJECTS} 
+ at BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_28 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
 
 #
 #    Sequential Fortran write library
 #
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__append_26 = libadiosf_nompi.a libadiosf_nompi_v1.a
- at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_27 = ${MXML_OBJECTS}
- at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_28 = ${MXML_OBJECTS} 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_29 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at am__append_29 = libadiosf_nompi.a libadiosf_nompi_v1.a
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_30 = ${MXML_OBJECTS}
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_31 = ${MXML_OBJECTS} 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE at am__append_32 = ${ZFP_OBJECTS} 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE at am__append_33 = ${ZFP_OBJECTS} 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_34 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
 
 #
 # Rules to build Parallel C+Fortran write libraries
@@ -175,20 +180,23 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #
 #    Parallel C Write library
 #
- at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_30 = libadios.a
- at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_31 = ${MXML_OBJECTS} 
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_35 = libadios.a
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_36 = ${MXML_OBJECTS} 
+ at BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__append_37 = ${ZFP_OBJECTS} 
 
 #
 #    Parallel Fortran Write library
 #
 # Build two different Fortran libraries, for the two read APIs
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_32 = libadiosf.a libadiosf_v1.a
- at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_33 = ${MXML_OBJECTS}
- at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_34 = ${MXML_OBJECTS}
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_38 = libadiosf.a libadiosf_v1.a
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_39 = ${MXML_OBJECTS}
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_40 = ${MXML_OBJECTS}
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__append_41 = ${ZFP_OBJECTS} 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__append_42 = ${ZFP_OBJECTS} 
 
 #nodist_libadiosreadf_a_SOURCES += adios_write.mod
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_35 = adios_write_mod.mod 
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_36 = adios_write_mod.mod
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_43 = adios_write_mod.mod 
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__append_44 = adios_write_mod.mod
 
 #libadios_a_SOURCES += write/adios_mpi_stagger.c \
 #                      write/adios_mpi_aggregate.c \
@@ -204,14 +212,14 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #                       write/adios_mpi_stripe.c \
 #                       write/adios_mpi_amr1.c \
 #                       write/adios_adaptive.c 
- at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_37 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_38 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_45 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@@RESEARCH_TRANSPORTS_FALSE at am__append_46 = $(MACRODEFFLAG)NO_RESEARCH_TRANSPORTS
 
 #if HAVE_DATATAP
 #libadiosread_nompi_a_SOURCES += read/read_datatap.c
 #endif
- at HAVE_FLEXPATH_TRUE@am__append_39 = read/read_flexpath.c
- at HAVE_ICEE_TRUE@am__append_40 = read/read_icee.c
+ at HAVE_FLEXPATH_TRUE@am__append_47 = read/read_flexpath.c
+ at HAVE_ICEE_TRUE@am__append_48 = read/read_icee.c
 #if HAVE_NSSI
 #dist_libadiosread_nompi_a_SOURCES = nssi/adios_nssi_args.x
 #nodist_libadiosread_nompi_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
@@ -219,12 +227,13 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #libadiosread_nompi_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
 #libadiosread_nompi_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
 #endif
- at HAVE_DMALLOC_TRUE@am__append_41 = $(MACRODEFFLAG)DMALLOC 
+ at HAVE_DMALLOC_TRUE@am__append_49 = $(MACRODEFFLAG)DMALLOC 
+ at BUILD_ZFP_TRUE@am__append_50 = ${ZFP_OBJECTS} 
 
 #
 #    Sequential Fortran Read libraries
 #
- at BUILD_FORTRAN_TRUE@am__append_42 = libadiosreadf_nompi.a libadiosreadf_nompi_v1.a
+ at BUILD_FORTRAN_TRUE@am__append_51 = libadiosreadf_nompi.a libadiosreadf_nompi_v1.a
 #if HAVE_DATASPACES
 #FortranReadSeqLibSource += read/read_dataspaces.c
 #endif
@@ -234,8 +243,8 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #if HAVE_DATATAP
 #FortranReadSeqLibSource += read/read_datatap.c
 #endif
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__append_43 = read/read_flexpath.c
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__append_44 = read/read_icee.c
+ at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE at am__append_52 = read/read_flexpath.c
+ at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE at am__append_53 = read/read_icee.c
 #if HAVE_NSSI
 #dist_libadiosreadf_nompi_a_SOURCES = nssi/adios_nssi_args.x
 #nodist_libadiosreadf_nompi_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
@@ -244,7 +253,9 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #libadiosreadf_nompi_a_CPPFLAGS += $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_CPPFLAGS) # $(MACRODEFFLAG)USE_TIMERS
 #libadiosreadf_nompi_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
 #endif
- at BUILD_FORTRAN_TRUE@am__append_45 = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+ at BUILD_FORTRAN_TRUE@am__append_54 = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE at am__append_55 = ${ZFP_OBJECTS} 
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE at am__append_56 = ${ZFP_OBJECTS} 
 
 #
 # Rules to build Parallel C+Fortran write libraries
@@ -253,14 +264,14 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #
 #    Parallel C Read library
 #
- at HAVE_MPI_TRUE@am__append_46 = libadiosread.a
- at HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__append_47 = read/read_dataspaces.c
- at HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__append_48 = read/read_dimes.c
+ at HAVE_MPI_TRUE@am__append_57 = libadiosread.a
+ at HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__append_58 = read/read_dataspaces.c
+ at HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__append_59 = read/read_dimes.c
 #if HAVE_DATATAP
 #libadiosread_a_SOURCES += read/read_datatap.c
 #endif
- at HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__append_49 = read/read_flexpath.c
- at HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__append_50 = read/read_icee.c
+ at HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__append_60 = read/read_flexpath.c
+ at HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__append_61 = read/read_icee.c
 #if HAVE_NSSI
 #dist_libadiosread_a_SOURCES = nssi/adios_nssi_args.x
 #nodist_libadiosread_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
@@ -268,20 +279,21 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #libadiosread_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
 #libadiosread_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
 #endif
- at HAVE_DMALLOC_TRUE@@HAVE_MPI_TRUE at am__append_51 = $(MACRODEFFLAG)DMALLOC 
- at HAVE_MPI_TRUE@am__append_52 = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+ at HAVE_DMALLOC_TRUE@@HAVE_MPI_TRUE at am__append_62 = $(MACRODEFFLAG)DMALLOC 
+ at HAVE_MPI_TRUE@am__append_63 = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+ at BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__append_64 = ${ZFP_OBJECTS} 
 
 #
 #    Parallel Fortran Read libraries
 #
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_53 = libadiosreadf.a libadiosreadf_v1.a
- at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__append_54 = read/read_dataspaces.c
- at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__append_55 = read/read_dimes.c
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_65 = libadiosreadf.a libadiosreadf_v1.a
+ at BUILD_FORTRAN_TRUE@@HAVE_DATASPACES_TRUE@@HAVE_MPI_TRUE at am__append_66 = read/read_dataspaces.c
+ at BUILD_FORTRAN_TRUE@@HAVE_DIMES_TRUE@@HAVE_MPI_TRUE at am__append_67 = read/read_dimes.c
 #if HAVE_DATATAP
 #FortranReadLibSource += read/read_datatap.c
 #endif
- at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__append_56 = read/read_flexpath.c
- at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__append_57 = read/read_icee.c
+ at BUILD_FORTRAN_TRUE@@HAVE_FLEXPATH_TRUE@@HAVE_MPI_TRUE at am__append_68 = read/read_flexpath.c
+ at BUILD_FORTRAN_TRUE@@HAVE_ICEE_TRUE@@HAVE_MPI_TRUE at am__append_69 = read/read_icee.c
 #if HAVE_NSSI
 #dist_libadiosreadf_a_SOURCES = nssi/adios_nssi_args.x
 #nodist_libadiosreadf_a_SOURCES = adios_nssi_args.c adios_nssi_args.h
@@ -289,13 +301,16 @@ DIST_COMMON = $(srcdir)/transforms/Makefile.plugins \
 #libadiosreadf_a_CPPFLAGS += $(MACRODEFFLAG)PTL_IFACE_CLIENT=CRAY_USER_NAL $(MACRODEFFLAG)PTL_IFACE_SERVER=CRAY_USER_NAL
 #libadiosreadf_a_CFLAGS   += $(ADIOSLIB_CFLAGS) 
 #endif
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_58 = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_70 = $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSREADLIB_CPPFLAGS)
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__append_71 = ${ZFP_OBJECTS} 
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__append_72 = ${ZFP_OBJECTS} 
 
 #nodist_libadiosreadf_a_SOURCES += adios_read_mod.mod
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_59 = adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_60 = adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
- at BUILD_WRITE_TRUE@am__append_61 = core/adios_internals_mxml.c 
- at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_62 = ${MXML_OBJECTS}
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_73 = adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at am__append_74 = adios_read_mod.mod adios_defs_mod.mod adios_query_mod.mod
+ at BUILD_WRITE_TRUE@am__append_75 = core/adios_internals_mxml.c 
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__append_76 = ${MXML_OBJECTS}
+ at BUILD_ZFP_TRUE@am__append_77 = ${ZFP_OBJECTS} 
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
@@ -325,7 +340,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -377,8 +392,10 @@ am__v_AR_0 = @echo "  AR      " $@;
 am__v_AR_1 = 
 libadios_a_AR = $(AR) $(ARFLAGS)
 @BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_1 = $(MXML_OBJECTS)
+ at BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_2 = $(ZFP_OBJECTS)
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_DEPENDENCIES =  \
- at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_1)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_1) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_2)
 am__libadios_a_SOURCES_DIST = core/adios.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -460,9 +477,11 @@ am__objects_8 = $(am__objects_7) \
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__objects_17)
 libadios_a_OBJECTS = $(am_libadios_a_OBJECTS)
 libadios_internal_nompi_a_AR = $(AR) $(ARFLAGS)
- at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__DEPENDENCIES_2 =  \
+ at BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__DEPENDENCIES_3 =  \
 @BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@	$(MXML_OBJECTS)
-libadios_internal_nompi_a_DEPENDENCIES = $(am__DEPENDENCIES_2)
+ at BUILD_ZFP_TRUE@am__DEPENDENCIES_4 = $(ZFP_OBJECTS)
+libadios_internal_nompi_a_DEPENDENCIES = $(am__DEPENDENCIES_3) \
+	$(am__DEPENDENCIES_4)
 am__libadios_internal_nompi_a_SOURCES_DIST = core/mpidummy.c \
 	core/bp_utils.c core/adios_internals.c core/util_mpi.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -499,8 +518,9 @@ am_libadios_internal_nompi_a_OBJECTS =  \
 libadios_internal_nompi_a_OBJECTS =  \
 	$(am_libadios_internal_nompi_a_OBJECTS)
 libadios_nompi_a_AR = $(AR) $(ARFLAGS)
+ at BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE at am__DEPENDENCIES_5 = $(ZFP_OBJECTS)
 @BUILD_WRITE_TRUE at libadios_nompi_a_DEPENDENCIES =  \
- at BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_2)
+ at BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_5)
 am__libadios_nompi_a_SOURCES_DIST = core/adios.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -560,8 +580,10 @@ am__objects_30 = $(am__objects_29) \
 @BUILD_WRITE_TRUE@	$(am__objects_34)
 libadios_nompi_a_OBJECTS = $(am_libadios_nompi_a_OBJECTS)
 libadiosf_a_AR = $(AR) $(ARFLAGS)
- at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_3 = $(MXML_OBJECTS)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_DEPENDENCIES = $(am__DEPENDENCIES_3)
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_6 = $(MXML_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_7 = $(ZFP_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_DEPENDENCIES = $(am__DEPENDENCIES_6) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_7)
 am__libadiosf_a_SOURCES_DIST = core/adiosf.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -645,9 +667,11 @@ am__objects_40 = $(am__objects_39) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	query/adios_query_mod.$(OBJEXT)
 libadiosf_a_OBJECTS = $(am_libadiosf_a_OBJECTS)
 libadiosf_nompi_a_AR = $(AR) $(ARFLAGS)
- at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__DEPENDENCIES_4 = $(MXML_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@BUILD_MXML_TRUE@@BUILD_WRITE_TRUE at am__DEPENDENCIES_8 = $(MXML_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@BUILD_ZFP_TRUE at am__DEPENDENCIES_9 = $(ZFP_OBJECTS)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_DEPENDENCIES =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_4)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_8) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_9)
 am__libadiosf_nompi_a_SOURCES_DIST = core/adiosf.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -715,7 +739,8 @@ am__objects_55 = $(am__objects_54) \
 libadiosf_nompi_a_OBJECTS = $(am_libadiosf_nompi_a_OBJECTS)
 libadiosf_nompi_v1_a_AR = $(AR) $(ARFLAGS)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_v1_a_DEPENDENCIES =  \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_4)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_8) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__DEPENDENCIES_9)
 am__libadiosf_nompi_v1_a_SOURCES_DIST = core/adiosf.c \
 	core/common_adios.c core/adios_internals.c \
 	core/adios_internals_mxml.c query/common_query.h \
@@ -779,7 +804,8 @@ am__objects_65 = $(am__objects_64) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	core/adiosf_write_mod.$(OBJEXT)
 libadiosf_nompi_v1_a_OBJECTS = $(am_libadiosf_nompi_v1_a_OBJECTS)
 libadiosf_v1_a_AR = $(AR) $(ARFLAGS)
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_DEPENDENCIES = $(am__DEPENDENCIES_3)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_DEPENDENCIES = $(am__DEPENDENCIES_6) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_7)
 am__libadiosf_v1_a_SOURCES_DIST = core/adiosf.c core/common_adios.c \
 	core/adios_internals.c core/adios_internals_mxml.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -860,7 +886,8 @@ am__objects_75 = $(am__objects_74) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	core/adiosf_write_mod.$(OBJEXT)
 libadiosf_v1_a_OBJECTS = $(am_libadiosf_v1_a_OBJECTS)
 libadiosread_a_AR = $(AR) $(ARFLAGS)
-libadiosread_a_DEPENDENCIES =
+ at BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_10 = $(ZFP_OBJECTS)
+ at HAVE_MPI_TRUE@libadiosread_a_DEPENDENCIES = $(am__DEPENDENCIES_10)
 am__libadiosread_a_SOURCES_DIST = core/bp_utils.c core/adios_read.c \
 	core/adios_read_v1.c core/common_read.c core/adios_read_ext.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -906,7 +933,7 @@ am__objects_90 = $(am__objects_89) \
 @HAVE_MPI_TRUE@	$(am__objects_93) $(am__objects_94)
 libadiosread_a_OBJECTS = $(am_libadiosread_a_OBJECTS)
 libadiosread_nompi_a_AR = $(AR) $(ARFLAGS)
-libadiosread_nompi_a_DEPENDENCIES =
+libadiosread_nompi_a_DEPENDENCIES = $(am__DEPENDENCIES_4)
 am__libadiosread_nompi_a_SOURCES_DIST = core/mpidummy.c \
 	core/bp_utils.c core/adios_read.c core/adios_read_v1.c \
 	core/common_read.c core/adios_read_ext.c query/common_query.h \
@@ -947,7 +974,9 @@ am_libadiosread_nompi_a_OBJECTS =  \
 	$(am__objects_102)
 libadiosread_nompi_a_OBJECTS = $(am_libadiosread_nompi_a_OBJECTS)
 libadiosreadf_a_AR = $(AR) $(ARFLAGS)
-libadiosreadf_a_DEPENDENCIES =
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE@@HAVE_MPI_TRUE at am__DEPENDENCIES_11 = $(ZFP_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_a_DEPENDENCIES =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_11)
 am__libadiosreadf_a_SOURCES_DIST = core/bp_utils.c core/common_read.c \
 	core/adios_read_ext.c query/common_query.h \
 	query/adios_query_hooks.h query/query_utils.h \
@@ -998,7 +1027,10 @@ am__objects_108 = $(am__objects_107) \
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	query/adios_query_mod.$(OBJEXT)
 libadiosreadf_a_OBJECTS = $(am_libadiosreadf_a_OBJECTS)
 libadiosreadf_nompi_a_AR = $(AR) $(ARFLAGS)
-libadiosreadf_nompi_a_DEPENDENCIES =
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE at am__DEPENDENCIES_12 =  \
+ at BUILD_FORTRAN_TRUE@@BUILD_ZFP_TRUE@	$(ZFP_OBJECTS)
+ at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_a_DEPENDENCIES =  \
+ at BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_12)
 am__libadiosreadf_nompi_a_SOURCES_DIST = core/mpidummy.c \
 	core/bp_utils.c core/common_read.c core/adios_read_ext.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -1042,7 +1074,8 @@ am__objects_119 = $(am__objects_118) \
 @BUILD_FORTRAN_TRUE@	query/adios_query_mod.$(OBJEXT)
 libadiosreadf_nompi_a_OBJECTS = $(am_libadiosreadf_nompi_a_OBJECTS)
 libadiosreadf_nompi_v1_a_AR = $(AR) $(ARFLAGS)
-libadiosreadf_nompi_v1_a_DEPENDENCIES =
+ at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_v1_a_DEPENDENCIES =  \
+ at BUILD_FORTRAN_TRUE@	$(am__DEPENDENCIES_12)
 am__libadiosreadf_nompi_v1_a_SOURCES_DIST = core/mpidummy.c \
 	core/bp_utils.c core/common_read.c core/adios_read_ext.c \
 	query/common_query.h query/adios_query_hooks.h \
@@ -1084,7 +1117,8 @@ am__objects_128 = $(am__objects_127) \
 libadiosreadf_nompi_v1_a_OBJECTS =  \
 	$(am_libadiosreadf_nompi_v1_a_OBJECTS)
 libadiosreadf_v1_a_AR = $(AR) $(ARFLAGS)
-libadiosreadf_v1_a_DEPENDENCIES =
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_DEPENDENCIES =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__DEPENDENCIES_11)
 am__libadiosreadf_v1_a_SOURCES_DIST = core/bp_utils.c \
 	core/common_read.c core/adios_read_ext.c query/common_query.h \
 	query/adios_query_hooks.h query/query_utils.h \
@@ -1143,7 +1177,8 @@ am__objects_144 = transforms/libcoreonce_a-adios_transform_identity_write.$(OBJE
 	transforms/libcoreonce_a-adios_transform_szip_write.$(OBJEXT) \
 	transforms/libcoreonce_a-adios_transform_isobar_write.$(OBJEXT) \
 	transforms/libcoreonce_a-adios_transform_aplod_write.$(OBJEXT) \
-	transforms/libcoreonce_a-adios_transform_alacrity_write.$(OBJEXT)
+	transforms/libcoreonce_a-adios_transform_alacrity_write.$(OBJEXT) \
+	transforms/libcoreonce_a-adios_transform_zfp_write.$(OBJEXT)
 am__objects_145 = $(am__objects_1) \
 	core/transforms/libcoreonce_a-adios_transforms_write.$(OBJEXT) \
 	core/transforms/libcoreonce_a-adios_transforms_hooks_write.$(OBJEXT) \
@@ -1156,7 +1191,8 @@ am__objects_146 = transforms/libcoreonce_a-adios_transform_identity_read.$(OBJEX
 	transforms/libcoreonce_a-adios_transform_szip_read.$(OBJEXT) \
 	transforms/libcoreonce_a-adios_transform_isobar_read.$(OBJEXT) \
 	transforms/libcoreonce_a-adios_transform_aplod_read.$(OBJEXT) \
-	transforms/libcoreonce_a-adios_transform_alacrity_read.$(OBJEXT)
+	transforms/libcoreonce_a-adios_transform_alacrity_read.$(OBJEXT) \
+	transforms/libcoreonce_a-adios_transform_zfp_read.$(OBJEXT)
 am__objects_147 = $(am__objects_1) \
 	core/transforms/libcoreonce_a-adios_transforms_read.$(OBJEXT) \
 	core/transforms/libcoreonce_a-adios_transforms_hooks_read.$(OBJEXT) \
@@ -1178,8 +1214,9 @@ am_libcoreonce_a_OBJECTS = core/libcoreonce_a-a2sel.$(OBJEXT) \
 	core/libcoreonce_a-globals.$(OBJEXT) \
 	core/libcoreonce_a-qhashtbl.$(OBJEXT) \
 	core/libcoreonce_a-strutil.$(OBJEXT) \
-	core/libcoreonce_a-util.$(OBJEXT) $(am__objects_143) \
-	$(am__objects_145) $(am__objects_147)
+	core/libcoreonce_a-util.$(OBJEXT) \
+	core/libcoreonce_a-adios_transform_methods.$(OBJEXT) \
+	$(am__objects_143) $(am__objects_145) $(am__objects_147)
 libcoreonce_a_OBJECTS = $(am_libcoreonce_a_OBJECTS)
 PROGRAMS = $(bin_PROGRAMS)
 AM_V_P = $(am__v_P_ at AM_V@)
@@ -1297,7 +1334,7 @@ am__define_uniq_tagged_files = \
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = mxml
+DIST_SUBDIRS = mxml zfp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -1534,6 +1571,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -1596,7 +1636,9 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AM_CPPFLAGS = -I$(top_builddir)/src/public -I$(top_srcdir) -I$(top_srcdir)/src/core -I$(top_srcdir)/src/core/transforms -I$(top_srcdir)/src/core/query
- at BUILD_MXML_TRUE@SUBDIRS = mxml 
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
+METASOURCES = AUTO
+SUBDIRS = $(am__append_1) $(am__append_2)
 @BUILD_MXML_TRUE at MXML_BUILDDIR = mxml/mxml-2.9
 @BUILD_MXML_TRUE at MXML_LIB = libmxml_a
 @BUILD_MXML_TRUE at MXML_OBJECTS = ${MXML_BUILDDIR}/${MXML_LIB}-mxml-attr.${OBJEXT}     \
@@ -1610,8 +1652,23 @@ AM_CPPFLAGS = -I$(top_builddir)/src/public -I$(top_srcdir) -I$(top_srcdir)/src/c
 @BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-node.${OBJEXT}     \
 @BUILD_MXML_TRUE@                     ${MXML_BUILDDIR}/${MXML_LIB}-mxml-set.${OBJEXT} 
 
-AUTOMAKE_OPTIONS = no-dependencies subdir-objects
-METASOURCES = AUTO
+ at BUILD_ZFP_TRUE@ZFP_BUILDDIR = zfp/zfp-0.5.0/src
+ at BUILD_ZFP_TRUE@ZFP_LIB = libzfp_a
+ at BUILD_ZFP_TRUE@ZFP_OBJECTS = ${ZFP_BUILDDIR}/${ZFP_LIB}-bitstream.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode1f.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode1d.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode1f.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode1d.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode2f.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode2d.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode2f.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode2d.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode3f.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-decode3d.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode3f.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-encode3d.${OBJEXT} \
+ at BUILD_ZFP_TRUE@              ${ZFP_BUILDDIR}/${ZFP_LIB}-zfp.${OBJEXT} 
+
 #if HAVE_NSSI
 #
 #bin_PROGRAMS+=nssi-staging-server
@@ -1633,7 +1690,7 @@ METASOURCES = AUTO
 #nssi_coupling_server_LDADD += $(ADIOSLIB_LDADD) $(NSSI_SERVER_LIBS)
 #
 #endif # HAVE_NSSI
-CLEANFILES = $(am__append_36) $(am__append_60)
+CLEANFILES = $(am__append_44) $(am__append_74)
 
 #bin_PROGRAMS+=adios_flags
 #nodist_adios_flags_SOURCES = adios_flags.h 
@@ -1659,8 +1716,9 @@ include_HEADERS = public/adios.h public/adios_version.h \
 	public/adios_read_v1_defs.h public/adios_read_v2.h \
 	public/adios_read_v2_fwd.h public/adios_selection.h \
 	public/adios_schema.h public/adios_link.h \
-	public/adios_read_ext.h public/adios_query.h
-nodist_include_HEADERS = $(am__append_35) $(am__append_59)
+	public/adios_read_ext.h public/adios_query.h \
+	public/adios_transform_methods.h
+nodist_include_HEADERS = $(am__append_43) $(am__append_73)
 
 # End of building Parallel Write libs
 
@@ -1677,17 +1735,17 @@ nodist_include_HEADERS = $(am__append_35) $(am__append_59)
 #
 #    Sequential C Read library
 #
-lib_LIBRARIES = $(am__append_23) $(am__append_26) $(am__append_30) \
-	$(am__append_32) libadiosread_nompi.a $(am__append_42) \
-	$(am__append_46) $(am__append_53)
-EXTRA_DEPENDENCY_CPPFLAGS = $(am__append_15)
-libadiosread_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_51) \
-	$(am__append_52)
-libadiosreadf_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_58)
-libadiosread_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_41) \
+lib_LIBRARIES = $(am__append_25) $(am__append_29) $(am__append_35) \
+	$(am__append_38) libadiosread_nompi.a $(am__append_51) \
+	$(am__append_57) $(am__append_65)
+EXTRA_DEPENDENCY_CPPFLAGS = $(am__append_17)
+libadiosread_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_62) \
+	$(am__append_63)
+libadiosreadf_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_70)
+libadiosread_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_49) \
 	$(MACRODEFFLAG)_NOMPI $(ADIOSLIB_EXTRA_CPPFLAGS) \
 	$(ADIOSREADLIB_CPPFLAGS)
-libadiosreadf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_45)
+libadiosreadf_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_54)
 libadiosread_a_CFLAGS = 
 libadiosreadf_a_CFLAGS = 
 libadiosread_nompi_a_CFLAGS = 
@@ -1706,6 +1764,8 @@ libadiosreadf_nompi_a_CFLAGS =
 # APLOD plugin:
 
 # ALACRITY plugin:
+
+# zfp plugin:
 transforms_write_method_SOURCES =  \
 	transforms/adios_transform_identity_write.c \
 	transforms/adios_transform_zlib_write.c \
@@ -1713,7 +1773,8 @@ transforms_write_method_SOURCES =  \
 	transforms/adios_transform_szip_write.c \
 	transforms/adios_transform_isobar_write.c \
 	transforms/adios_transform_aplod_write.c \
-	transforms/adios_transform_alacrity_write.c
+	transforms/adios_transform_alacrity_write.c \
+	transforms/adios_transform_zfp_write.c
 transforms_read_method_SOURCES =  \
 	transforms/adios_transform_identity_read.c \
 	transforms/adios_transform_zlib_read.c \
@@ -1721,7 +1782,8 @@ transforms_read_method_SOURCES =  \
 	transforms/adios_transform_szip_read.c \
 	transforms/adios_transform_isobar_read.c \
 	transforms/adios_transform_aplod_read.c \
-	transforms/adios_transform_alacrity_read.c
+	transforms/adios_transform_alacrity_read.c \
+	transforms/adios_transform_zfp_read.c
 transforms_common_HDRS = core/adios_copyspec.h \
                          core/adios_subvolume.h \
                          core/adios_selection_util.h \
@@ -1780,9 +1842,9 @@ query_common_SOURCES = $(query_common_HDRS) \
 
 
 # Include source files that are specific to each query plugin
-query_method_HDRS = $(am__append_2)
-query_method_SOURCES = query/query_minmax.c $(am__append_1) \
-	$(am__append_3) $(query_method_HDRS)
+query_method_HDRS = $(am__append_4)
+query_method_SOURCES = query/query_minmax.c $(am__append_3) \
+	$(am__append_5) $(query_method_HDRS)
 query_SOURCES = $(query_common_SOURCES) \
                      $(query_method_SOURCES)
 
@@ -1814,6 +1876,7 @@ libcoreonce_a_SOURCES = core/a2sel.c \
                             core/qhashtbl.c \
                             core/strutil.c \
                             core/util.c \
+                            core/adios_transform_methods.c \
                             $(transforms_common_SOURCES) \
                             $(transforms_write_SOURCES) \
                             $(transforms_read_SOURCES) 
@@ -1834,14 +1897,14 @@ libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS)
 @BUILD_WRITE_TRUE@	core/adios_transport_hooks.c core/util_mpi.c \
 @BUILD_WRITE_TRUE@	read/read_bp.c read/read_bp_staged.c \
 @BUILD_WRITE_TRUE@	read/read_bp_staged1.c write/adios_posix.c \
- at BUILD_WRITE_TRUE@	$(am__append_4) $(am__append_6) \
- at BUILD_WRITE_TRUE@	$(am__append_19) $(am__append_21)
+ at BUILD_WRITE_TRUE@	$(am__append_6) $(am__append_8) \
+ at BUILD_WRITE_TRUE@	$(am__append_21) $(am__append_23)
 @BUILD_WRITE_TRUE at CLibParallelSources = write/adios_mpi.c \
 @BUILD_WRITE_TRUE@	write/adios_mpi_lustre.c \
 @BUILD_WRITE_TRUE@	write/adios_mpi_amr.c \
- at BUILD_WRITE_TRUE@	write/adios_var_merge.c $(am__append_8) \
- at BUILD_WRITE_TRUE@	$(am__append_10) $(am__append_12) \
- at BUILD_WRITE_TRUE@	$(am__append_14) $(am__append_17)
+ at BUILD_WRITE_TRUE@	write/adios_var_merge.c $(am__append_10) \
+ at BUILD_WRITE_TRUE@	$(am__append_12) $(am__append_14) \
+ at BUILD_WRITE_TRUE@	$(am__append_16) $(am__append_19)
 @BUILD_WRITE_TRUE at CLibSEQSources = core/mpidummy.c
 @BUILD_WRITE_TRUE at FortranLibSources = core/adiosf.c \
 @BUILD_WRITE_TRUE@	core/common_adios.c core/adios_internals.c \
@@ -1853,23 +1916,23 @@ libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS)
 @BUILD_WRITE_TRUE@	core/adios_transport_hooks.c core/util_mpi.c \
 @BUILD_WRITE_TRUE@	read/read_bp.c read/read_bp_staged.c \
 @BUILD_WRITE_TRUE@	read/read_bp_staged1.c write/adios_posix.c \
- at BUILD_WRITE_TRUE@	$(am__append_5) $(am__append_7) \
- at BUILD_WRITE_TRUE@	$(am__append_20) $(am__append_22)
+ at BUILD_WRITE_TRUE@	$(am__append_7) $(am__append_9) \
+ at BUILD_WRITE_TRUE@	$(am__append_22) $(am__append_24)
 @BUILD_WRITE_TRUE at FortranLibParallelSources = write/adios_mpi.c \
 @BUILD_WRITE_TRUE@	write/adios_mpi_lustre.c \
 @BUILD_WRITE_TRUE@	write/adios_mpi_amr.c \
- at BUILD_WRITE_TRUE@	write/adios_var_merge.c $(am__append_9) \
- at BUILD_WRITE_TRUE@	$(am__append_11) $(am__append_13) \
- at BUILD_WRITE_TRUE@	$(am__append_16) $(am__append_18)
+ at BUILD_WRITE_TRUE@	write/adios_var_merge.c $(am__append_11) \
+ at BUILD_WRITE_TRUE@	$(am__append_13) $(am__append_15) \
+ at BUILD_WRITE_TRUE@	$(am__append_18) $(am__append_20)
 @BUILD_WRITE_TRUE at FortranLibSEQSources = core/mpidummy.c
 @BUILD_WRITE_TRUE at libadios_nompi_a_SOURCES = $(CLibSources) $(CLibSEQSources)
 @BUILD_WRITE_TRUE at libadios_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) \
 @BUILD_WRITE_TRUE@	$(MACRODEFFLAG)_NOMPI \
 @BUILD_WRITE_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
- at BUILD_WRITE_TRUE@	$(ADIOSLIB_SEQ_CPPFLAGS) $(am__append_25)
+ at BUILD_WRITE_TRUE@	$(ADIOSLIB_SEQ_CPPFLAGS) $(am__append_28)
 @BUILD_WRITE_TRUE at libadios_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
 @BUILD_WRITE_TRUE at libadios_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS) \
- at BUILD_WRITE_TRUE@	$(am__append_24)
+ at BUILD_WRITE_TRUE@	$(am__append_26) $(am__append_27)
 # force building the noinst_LIBRARIES first, before libadios_nompi.a
 @BUILD_WRITE_TRUE at EXTRA_libadios_nompi_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_SOURCES =  \
@@ -1891,14 +1954,16 @@ libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(MACRODEFFLAG)_NOMPI \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(ADIOSLIB_SEQ_CPPFLAGS) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_29)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_34)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_v1_a_CPPFLAGS = $(libadiosf_nompi_a_CPPFLAGS) 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_CFLAGS = $(MACRODEFFLAG)_NOMPI $(ADIOSLIB_SEQ_CFLAGS) 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_v1_a_CFLAGS = $(libadiosf_nompi_a_CFLAGS) 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_27)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_30) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_32)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at libadiosf_nompi_v1_a_LIBADD = $(libcoreonce_a_OBJECTS) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_28)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_31) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@	$(am__append_33)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at EXTRA_libadiosf_nompi_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE at EXTRA_libadiosf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_SOURCES = $(CLibSources) $(CLibParallelSources)
@@ -1906,11 +1971,12 @@ libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS)
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_CPPFLAGS) \
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(EXTRA_DEPENDENCY_CPPFLAGS) \
- at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_37)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_45)
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadios_a_LIBADD =  \
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(libcoreonce_a_OBJECTS) \
- at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_31)
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_36) \
+ at BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_37)
 # force building the noinst_LIBRARIES first, before libadios.a
 @BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at EXTRA_libadios_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_SOURCES = $(FortranLibSources) \
@@ -1929,29 +1995,32 @@ libcoreonce_a_CFLAGS = $(ADIOSLIB_CFLAGS)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_EXTRA_CPPFLAGS) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(ADIOSLIB_CPPFLAGS) \
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(EXTRA_DEPENDENCY_CPPFLAGS) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_38)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_46)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_CPPFLAGS = $(libadiosf_a_CPPFLAGS) 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_CFLAGS = $(ADIOSLIB_CFLAGS) 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_CFLAGS = $(libadiosf_a_CFLAGS) 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_a_LIBADD = $(libcoreonce_a_OBJECTS) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_33)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_39) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_41)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at libadiosf_v1_a_LIBADD = $(libcoreonce_a_OBJECTS) \
- at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_34)
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_40) \
+ at BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE@	$(am__append_42)
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at EXTRA_libadiosf_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@BUILD_WRITE_TRUE@@HAVE_MPI_TRUE at EXTRA_libadiosf_v1_a_DEPENDENCIES = libcoreonce.a 
 libadiosread_nompi_a_SOURCES = core/mpidummy.c core/bp_utils.c \
 	core/adios_read.c core/adios_read_v1.c core/common_read.c \
 	core/adios_read_ext.c $(query_C_SOURCES) \
 	core/adios_read_hooks.c core/util_mpi.c read/read_bp.c \
-	$(am__append_39) $(am__append_40)
-libadiosread_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
+	$(am__append_47) $(am__append_48)
+libadiosread_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS) \
+	$(am__append_50)
 EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE at FortranReadSeqLibSource = core/mpidummy.c \
 @BUILD_FORTRAN_TRUE@	core/bp_utils.c core/common_read.c \
 @BUILD_FORTRAN_TRUE@	core/adios_read_ext.c $(query_F_SOURCES) \
 @BUILD_FORTRAN_TRUE@	core/adios_read_hooks.c core/util_mpi.c \
- at BUILD_FORTRAN_TRUE@	read/read_bp.c $(am__append_43) \
- at BUILD_FORTRAN_TRUE@	$(am__append_44)
+ at BUILD_FORTRAN_TRUE@	read/read_bp.c $(am__append_52) \
+ at BUILD_FORTRAN_TRUE@	$(am__append_53)
 @BUILD_FORTRAN_TRUE at libadiosreadf_nompi_a_SOURCES =  \
 @BUILD_FORTRAN_TRUE@	$(FortranReadSeqLibSource) \
 @BUILD_FORTRAN_TRUE@	core/adiosf_read.c \
@@ -1961,8 +2030,10 @@ EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a
 @BUILD_FORTRAN_TRUE at libadiosreadf_nompi_v1_a_SOURCES = $(FortranReadSeqLibSource) core/adiosf_read_v1.c
 @BUILD_FORTRAN_TRUE at libadiosreadf_nompi_v1_a_CPPFLAGS = $(libadiosreadf_nompi_a_CPPFLAGS)
 @BUILD_FORTRAN_TRUE at libadiosreadf_nompi_v1_a_CFLAGS = $(libadiosreadf_nompi_a_CFLAGS)
- at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS)
- at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+ at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_a_LIBADD =  \
+ at BUILD_FORTRAN_TRUE@	$(libcoreonce_a_OBJECTS) $(am__append_55)
+ at BUILD_FORTRAN_TRUE@libadiosreadf_nompi_v1_a_LIBADD =  \
+ at BUILD_FORTRAN_TRUE@	$(libcoreonce_a_OBJECTS) $(am__append_56)
 @BUILD_FORTRAN_TRUE at EXTRA_libadiosreadf_nompi_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE at EXTRA_libadiosreadf_nompi_v1_a_DEPENDENCIES = libcoreonce.a 
 @HAVE_MPI_TRUE at libadiosread_a_SOURCES = core/bp_utils.c \
@@ -1971,9 +2042,10 @@ EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a
 @HAVE_MPI_TRUE@	$(query_C_SOURCES) core/adios_read_hooks.c \
 @HAVE_MPI_TRUE@	core/util_mpi.c read/read_bp.c \
 @HAVE_MPI_TRUE@	read/read_bp_staged.c read/read_bp_staged1.c \
- at HAVE_MPI_TRUE@	$(am__append_47) $(am__append_48) \
- at HAVE_MPI_TRUE@	$(am__append_49) $(am__append_50)
- at HAVE_MPI_TRUE@libadiosread_a_LIBADD = $(libcoreonce_a_OBJECTS)
+ at HAVE_MPI_TRUE@	$(am__append_58) $(am__append_59) \
+ at HAVE_MPI_TRUE@	$(am__append_60) $(am__append_61)
+ at HAVE_MPI_TRUE@libadiosread_a_LIBADD = $(libcoreonce_a_OBJECTS) \
+ at HAVE_MPI_TRUE@	$(am__append_64)
 @HAVE_MPI_TRUE at EXTRA_libadiosread_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at FortranReadLibSource =  \
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/bp_utils.c \
@@ -1985,10 +2057,10 @@ EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/read_bp.c \
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/read_bp_staged.c \
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	read/read_bp_staged1.c \
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_54) \
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_55) \
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_56) \
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_57)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_66) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_67) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_68) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_69)
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_a_SOURCES =  \
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(FortranReadLibSource) \
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	core/adiosf_read.c \
@@ -1998,16 +2070,20 @@ EXTRA_libadiosread_nompi_a_DEPENDENCIES = libcoreonce.a
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_SOURCES = $(FortranReadLibSource) core/adiosf_read_v1.c
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_CPPFLAGS = $(libadiosreadf_a_CPPFLAGS)
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_CFLAGS = $(libadiosreadf_a_CFLAGS)
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_a_LIBADD = $(libcoreonce_a_OBJECTS)
- at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_LIBADD = $(libcoreonce_a_OBJECTS)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_a_LIBADD =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(libcoreonce_a_OBJECTS) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_71)
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at libadiosreadf_v1_a_LIBADD =  \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(libcoreonce_a_OBJECTS) \
+ at BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE@	$(am__append_72)
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at EXTRA_libadiosreadf_a_DEPENDENCIES = libcoreonce.a 
 @BUILD_FORTRAN_TRUE@@HAVE_MPI_TRUE at EXTRA_libadiosreadf_v1_a_DEPENDENCIES = libcoreonce.a 
 libadios_internal_nompi_a_SOURCES = core/mpidummy.c core/bp_utils.c \
 	core/adios_internals.c core/util_mpi.c $(query_C_SOURCES) \
 	core/adios_timing.c core/adios_transport_hooks.c \
-	$(am__append_61)
+	$(am__append_75)
 libadios_internal_nompi_a_LIBADD = $(libcoreonce_a_OBJECTS) \
-	$(am__append_62)
+	$(am__append_76) $(am__append_77)
 EXTRA_libadios_internal_nompi_a_DEPENDENCIES = libcoreonce.a 
 libadios_internal_nompi_a_CPPFLAGS = $(AM_CPPFLAGS) $(MACRODEFFLAG)_INTERNAL $(ADIOSLIB_EXTRA_CPPFLAGS) $(ADIOSLIB_INT_CPPFLAGS) $(ADIOSLIB_CPPFLAGS)
 EXTRA_DIST = core/adios_bp_v1.h core/adios_endianness.h \
@@ -2025,6 +2101,7 @@ EXTRA_DIST = core/adios_bp_v1.h core/adios_endianness.h \
              transforms/adios_transform_identity_read.h \
              transforms/adios_transform_szip.h \
              transforms/adios_transform_alacrity_common.h \
+             transforms/adios_transform_zfp_common.h \
              transforms/adios_transform_template_read.c \
              transforms/adios_transform_template_write.c \
              query/Makefile.plugins.cmake 
@@ -2676,6 +2753,8 @@ core/libcoreonce_a-globals.$(OBJEXT): core/$(am__dirstamp)
 core/libcoreonce_a-qhashtbl.$(OBJEXT): core/$(am__dirstamp)
 core/libcoreonce_a-strutil.$(OBJEXT): core/$(am__dirstamp)
 core/libcoreonce_a-util.$(OBJEXT): core/$(am__dirstamp)
+core/libcoreonce_a-adios_transform_methods.$(OBJEXT):  \
+	core/$(am__dirstamp)
 core/transforms/$(am__dirstamp):
 	@$(MKDIR_P) core/transforms
 	@: > core/transforms/$(am__dirstamp)
@@ -2710,6 +2789,8 @@ transforms/libcoreonce_a-adios_transform_aplod_write.$(OBJEXT):  \
 	transforms/$(am__dirstamp)
 transforms/libcoreonce_a-adios_transform_alacrity_write.$(OBJEXT):  \
 	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_zfp_write.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
 core/transforms/libcoreonce_a-adios_transforms_read.$(OBJEXT):  \
 	core/transforms/$(am__dirstamp)
 core/transforms/libcoreonce_a-adios_transforms_hooks_read.$(OBJEXT):  \
@@ -2736,6 +2817,8 @@ transforms/libcoreonce_a-adios_transform_aplod_read.$(OBJEXT):  \
 	transforms/$(am__dirstamp)
 transforms/libcoreonce_a-adios_transform_alacrity_read.$(OBJEXT):  \
 	transforms/$(am__dirstamp)
+transforms/libcoreonce_a-adios_transform_zfp_read.$(OBJEXT):  \
+	transforms/$(am__dirstamp)
 
 libcoreonce.a: $(libcoreonce_a_OBJECTS) $(libcoreonce_a_DEPENDENCIES) $(EXTRA_libcoreonce_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libcoreonce.a
@@ -5038,6 +5121,12 @@ core/libcoreonce_a-util.o: core/util.c
 core/libcoreonce_a-util.obj: core/util.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-util.obj `if test -f 'core/util.c'; then $(CYGPATH_W) 'core/util.c'; else $(CYGPATH_W) '$(srcdir)/core/util.c'; fi`
 
+core/libcoreonce_a-adios_transform_methods.o: core/adios_transform_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_transform_methods.o `test -f 'core/adios_transform_methods.c' || echo '$(srcdir)/'`core/adios_transform_methods.c
+
+core/libcoreonce_a-adios_transform_methods.obj: core/adios_transform_methods.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/libcoreonce_a-adios_transform_methods.obj `if test -f 'core/adios_transform_methods.c'; then $(CYGPATH_W) 'core/adios_transform_methods.c'; else $(CYGPATH_W) '$(srcdir)/core/adios_transform_methods.c'; fi`
+
 core/transforms/libcoreonce_a-adios_transforms_common.o: core/transforms/adios_transforms_common.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/transforms/libcoreonce_a-adios_transforms_common.o `test -f 'core/transforms/adios_transforms_common.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_common.c
 
@@ -5128,6 +5217,12 @@ transforms/libcoreonce_a-adios_transform_alacrity_write.o: transforms/adios_tran
 transforms/libcoreonce_a-adios_transform_alacrity_write.obj: transforms/adios_transform_alacrity_write.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o transforms/libcoreonce_a-adios_transform_alacrity_write.obj `if test -f 'transforms/adios_transform_alacrity_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_alacrity_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_alacrity_write.c'; fi`
 
+transforms/libcoreonce_a-adios_transform_zfp_write.o: transforms/adios_transform_zfp_write.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o transforms/libcoreonce_a-adios_transform_zfp_write.o `test -f 'transforms/adios_transform_zfp_write.c' || echo '$(srcdir)/'`transforms/adios_transform_zfp_write.c
+
+transforms/libcoreonce_a-adios_transform_zfp_write.obj: transforms/adios_transform_zfp_write.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o transforms/libcoreonce_a-adios_transform_zfp_write.obj `if test -f 'transforms/adios_transform_zfp_write.c'; then $(CYGPATH_W) 'transforms/adios_transform_zfp_write.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zfp_write.c'; fi`
+
 core/transforms/libcoreonce_a-adios_transforms_read.o: core/transforms/adios_transforms_read.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o core/transforms/libcoreonce_a-adios_transforms_read.o `test -f 'core/transforms/adios_transforms_read.c' || echo '$(srcdir)/'`core/transforms/adios_transforms_read.c
 
@@ -5206,6 +5301,12 @@ transforms/libcoreonce_a-adios_transform_alacrity_read.o: transforms/adios_trans
 transforms/libcoreonce_a-adios_transform_alacrity_read.obj: transforms/adios_transform_alacrity_read.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o transforms/libcoreonce_a-adios_transform_alacrity_read.obj `if test -f 'transforms/adios_transform_alacrity_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_alacrity_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_alacrity_read.c'; fi`
 
+transforms/libcoreonce_a-adios_transform_zfp_read.o: transforms/adios_transform_zfp_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o transforms/libcoreonce_a-adios_transform_zfp_read.o `test -f 'transforms/adios_transform_zfp_read.c' || echo '$(srcdir)/'`transforms/adios_transform_zfp_read.c
+
+transforms/libcoreonce_a-adios_transform_zfp_read.obj: transforms/adios_transform_zfp_read.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoreonce_a_CPPFLAGS) $(CPPFLAGS) $(libcoreonce_a_CFLAGS) $(CFLAGS) -c -o transforms/libcoreonce_a-adios_transform_zfp_read.obj `if test -f 'transforms/adios_transform_zfp_read.c'; then $(CYGPATH_W) 'transforms/adios_transform_zfp_read.c'; else $(CYGPATH_W) '$(srcdir)/transforms/adios_transform_zfp_read.c'; fi`
+
 .f90.o:
 	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
 
diff --git a/src/core/adios.c b/src/core/adios.c
index 0a14555..71b833a 100644
--- a/src/core/adios.c
+++ b/src/core/adios.c
@@ -203,7 +203,7 @@ int adios_close (int64_t fd_p)
     }
     struct adios_var_struct * v = fd->group->vars;
 
-    retval = common_adios_close (fd_p);
+    retval = common_adios_close (fd);
 
     // Q.L. 10-2010. To fix a memory leak problem.
     while (v) {
@@ -263,7 +263,7 @@ int adios_close (int64_t fd_p)
 // group a list of vars into a composite group
 int adios_declare_group (int64_t * id, const char * name
                         ,const char * time_index
-                        ,enum ADIOS_FLAG stats
+                        ,enum ADIOS_STATISTICS_FLAG stats
                         )
 {
     int ret;
@@ -272,7 +272,7 @@ int adios_declare_group (int64_t * id, const char * name
                                       ,""
                                       ,""
                                       ,time_index
-                                      ,stats
+                                      ,(stats != adios_stat_no_do_not_use_this ? stats : adios_stat_no)
                                       );
     if (ret == 1) {
         struct adios_group_struct * g = (struct adios_group_struct *) *id;
@@ -288,6 +288,27 @@ int adios_free_group (int64_t id)
     return adios_errno;
 }
 
+
+
+int adios_set_time_aggregation(int64_t groupid,
+                               uint64_t buffersize,
+                               int64_t syncgroupid
+                              )
+{
+    adios_errno = err_no_error;
+    if (groupid == 0) {
+        adios_error (err_invalid_group, "adios_set_time_aggregation() called with 0 argument\n");
+    }
+    struct adios_group_struct * g = (struct adios_group_struct *) groupid;
+    struct adios_group_struct * sg = NULL;
+    if (syncgroupid != 0)
+        sg = (struct adios_group_struct *) syncgroupid;
+
+    adios_common_set_time_aggregation(g, buffersize, sg);
+    return adios_errno;
+}
+
+
 ///////////////////////////////////////////////////////////////////////////////
 
 // adios_common_define_var is in adios_internals.c
@@ -577,3 +598,53 @@ int adios_define_mesh_unstructured (char * points,
     return adios_common_define_mesh_unstructured (points, data, count, cell_type, nspace, npoints, name, group_id);
 }
 
+ADIOS_AVAILABLE_WRITE_METHODS * adios_available_write_methods()
+{
+    int i, n;
+    n = 0;
+    for (i = 0; i < ADIOS_METHOD_COUNT; i++) {
+        if (adios_transports[i].method_name) {
+            n++;
+        }
+    }
+
+    if (n == 0)
+        return NULL;
+
+    ADIOS_AVAILABLE_WRITE_METHODS * m = (ADIOS_AVAILABLE_WRITE_METHODS *) malloc (sizeof(ADIOS_AVAILABLE_WRITE_METHODS));
+    if (!m)
+        return NULL;
+
+    m->name     = (char**) malloc (n*sizeof(char*));
+    m->nmethods = n;
+
+    n = 0;
+    for (i = 0; i < ADIOS_METHOD_COUNT; i++) {
+        if (adios_transports[i].method_name) {
+            m->name[n] = strdup (adios_transports[i].method_name);
+            n++;
+        }
+    }
+    return m;
+}
+
+void adios_available_write_methods_free (ADIOS_AVAILABLE_WRITE_METHODS * m)
+{
+	int i;
+	if (m)
+	{
+	    if (m->name)
+	    {
+	        for (i=0; i < m->nmethods; i++)
+	        {
+	            if (m->name[i]) {
+	                free (m->name[i]);
+	                m->name[i] = NULL;
+	            }
+	        }
+	        free (m->name);
+	        m->name = NULL;
+	    }
+	    free (m);
+	}
+}
diff --git a/src/core/adios_bp_v1.c b/src/core/adios_bp_v1.c
index 1a1c57b..dc01bc3 100644
--- a/src/core/adios_bp_v1.c
+++ b/src/core/adios_bp_v1.c
@@ -232,6 +232,7 @@ int adios_parse_process_group_index_v1 (struct adios_bp_buffer_struct_v1 * b,
         {
             *root = (struct adios_index_process_group_struct_v1 *)
                    malloc (sizeof(struct adios_index_process_group_struct_v1));
+            (*root)->is_time_aggregated = 0;
             (*root)->next = 0;
         }
         uint16_t length_of_name;
diff --git a/src/core/adios_bp_v1.h b/src/core/adios_bp_v1.h
index 2ed623e..3469746 100644
--- a/src/core/adios_bp_v1.h
+++ b/src/core/adios_bp_v1.h
@@ -85,6 +85,7 @@ struct adios_index_process_group_struct_v1
     char * time_index_name;
     uint32_t time_index;
     uint64_t offset_in_file;
+    int is_time_aggregated;
 
     struct adios_index_process_group_struct_v1 * next;
 };
diff --git a/src/core/adios_clock.h b/src/core/adios_clock.h
index 10882b7..0a89b2e 100644
--- a/src/core/adios_clock.h
+++ b/src/core/adios_clock.h
@@ -12,7 +12,7 @@ double adios_gettime_double();
 /* get current time in milliseconds as unsigned long */
 unsigned long adios_gettime_ms();
 
-#ifndef clockid_t
+#ifndef HAVE_CLOCKID_T
     typedef int clockid_t;
 #endif
 #ifndef CLOCK_REALTIME
diff --git a/src/core/adios_icee.h b/src/core/adios_icee.h
index 1d75d01..c89948f 100644
--- a/src/core/adios_icee.h
+++ b/src/core/adios_icee.h
@@ -54,6 +54,7 @@ typedef struct icee_fileinfo_rec {
     int timestep;
     struct icee_varinfo_rec * varinfo;
     struct icee_fileinfo_rec * next;
+    double timestamp;
 } icee_fileinfo_rec_t, *icee_fileinfo_rec_ptr_t;
 
 static FMField icee_fileinfo_field_list[] =
@@ -67,6 +68,7 @@ static FMField icee_fileinfo_field_list[] =
     {"timestep", "integer", sizeof(int), FMOffset(icee_fileinfo_rec_ptr_t, timestep)},
     {"varinfo", "*icee_varinfo", sizeof(struct icee_varinfo_rec ), FMOffset(icee_fileinfo_rec_ptr_t, varinfo)},
     {"next", "*icee_fileinfo", sizeof(struct icee_fileinfo_rec ), FMOffset(icee_fileinfo_rec_ptr_t, next)},
+    {"timestamp", "float", sizeof(double), FMOffset(icee_fileinfo_rec_ptr_t, timestamp)},
     {NULL, NULL, 0, 0}
 };
 
diff --git a/src/core/adios_internals.c b/src/core/adios_internals.c
old mode 100644
new mode 100755
index ea033f7..4bafe98
--- a/src/core/adios_internals.c
+++ b/src/core/adios_internals.c
@@ -670,65 +670,64 @@ int adios_parse_scalar_string (enum ADIOS_DATATYPES type, char * value, void **
                             "value: '%s' not valid integer\n",value);
                     return 0;
                 }
-                else
+
+                switch (type)
                 {
-                    switch (type)
-                    {
-                        case adios_byte:
-                            if (t < SCHAR_MIN || t > SCHAR_MAX)
-                            {
-                                adios_error (err_out_of_bound,
-                                        "type is %s, value "
-                                        "is out of range: '%s'\n",
-                                        adios_type_to_string_int (type),
-                                        value);
-                                return 0;
-                            }
-                            else
-                            {
-                                *out = malloc (1);
-                                *((int8_t *) *out) = t;
+                    case adios_byte:
+                        if (t < SCHAR_MIN || t > SCHAR_MAX)
+                        {
+                            adios_error (err_out_of_bound,
+                                         "type is %s, value "
+                                         "is out of range: '%s'\n",
+                                         adios_type_to_string_int (type),
+                                         value);
+                            return 0;
+                        }
+                        else
+                        {
+                            *out = malloc (1);
+                            *((int8_t *) *out) = t;
 
-                                return 1;
-                            }
-                        case adios_short:
-                            if (t < SHRT_MIN || t > SHRT_MAX)
-                            {
-                                adios_error (err_out_of_bound,
-                                        "type is %s, value "
-                                        "is out of range: '%s'\n",
-                                        adios_type_to_string_int (type),
-                                        value);
-                                return 0;
-                            }
-                            else
-                            {
-                                *out = malloc (2);
-                                *((int16_t *) *out) = t;
+                            return 1;
+                        }
+                    case adios_short:
+                        if (t < SHRT_MIN || t > SHRT_MAX)
+                        {
+                            adios_error (err_out_of_bound,
+                                         "type is %s, value "
+                                         "is out of range: '%s'\n",
+                                         adios_type_to_string_int (type),
+                                         value);
+                            return 0;
+                        }
+                        else
+                        {
+                            *out = malloc (2);
+                            *((int16_t *) *out) = t;
 
-                                return 1;
-                            }
-                        case adios_integer:
-                            if (t < INT_MIN || t > INT_MAX)
-                            {
-                                adios_error (err_out_of_bound,
-                                        "type is %s, value "
-                                        "is out of range: '%s'\n",
-                                        adios_type_to_string_int (type),
-                                        value);
-                                return 0;
-                            }
-                            else
-                            {
-                                *out = malloc (4);
-                                *((int32_t *) *out) = t;
+                            return 1;
+                        }
+                    case adios_integer:
+                        if (t < INT_MIN || t > INT_MAX)
+                        {
+                            adios_error (err_out_of_bound,
+                                         "type is %s, value "
+                                         "is out of range: '%s'\n",
+                                         adios_type_to_string_int (type),
+                                         value);
+                            return 0;
+                        }
+                        else
+                        {
+                            *out = malloc (4);
+                            *((int32_t *) *out) = t;
 
-                                return 1;
-                            }
-                        default:
-                                return 1;
-                    }
+                            return 1;
+                        }
+                    default:
+                        return 1;
                 }
+                break; // just to make eclipse happy
             }
         case adios_long:
             {
@@ -763,65 +762,63 @@ int adios_parse_scalar_string (enum ADIOS_DATATYPES type, char * value, void **
                             "value: '%s' not valid integer\n", value);
                     return 0;
                 }
-                else
+                switch (type)
                 {
-                    switch (type)
-                    {
-                        case adios_unsigned_byte:
-                            if (t > UCHAR_MAX)
-                            {
-                                adios_error (err_out_of_bound,
-                                        "type is %s, value "
-                                        "is out of range: '%s'\n",
-                                        adios_type_to_string_int (type),
-                                        value);
-                                return 0;
-                            }
-                            else
-                            {
-                                *out = malloc (1);
-                                *((uint8_t *) *out) = t;
+                    case adios_unsigned_byte:
+                        if (t > UCHAR_MAX)
+                        {
+                            adios_error (err_out_of_bound,
+                                         "type is %s, value "
+                                         "is out of range: '%s'\n",
+                                         adios_type_to_string_int (type),
+                                         value);
+                            return 0;
+                        }
+                        else
+                        {
+                            *out = malloc (1);
+                            *((uint8_t *) *out) = t;
 
-                                return 1;
-                            }
-                        case adios_unsigned_short:
-                            if (t > USHRT_MAX)
-                            {
-                                adios_error (err_out_of_bound,
-                                        "type is %s, value "
-                                        "is out of range: '%s'\n",
-                                        adios_type_to_string_int (type),
-                                        value);
-                                return 0;
-                            }
-                            else
-                            {
-                                *out = malloc (2);
-                                *((uint16_t *) *out) = t;
+                            return 1;
+                        }
+                    case adios_unsigned_short:
+                        if (t > USHRT_MAX)
+                        {
+                            adios_error (err_out_of_bound,
+                                         "type is %s, value "
+                                         "is out of range: '%s'\n",
+                                         adios_type_to_string_int (type),
+                                         value);
+                            return 0;
+                        }
+                        else
+                        {
+                            *out = malloc (2);
+                            *((uint16_t *) *out) = t;
 
-                                return 1;
-                            }
-                        case adios_unsigned_integer:
-                            if (t > UINT_MAX)
-                            {
-                                adios_error (err_out_of_bound,
-                                        "type is %s, value "
-                                        "is out of range: '%s'\n",
-                                        adios_type_to_string_int (type),
-                                        value);
-                                return 0;
-                            }
-                            else
-                            {
-                                *out = malloc (4);
-                                *((uint32_t *) *out) = t;
+                            return 1;
+                        }
+                    case adios_unsigned_integer:
+                        if (t > UINT_MAX)
+                        {
+                            adios_error (err_out_of_bound,
+                                         "type is %s, value "
+                                         "is out of range: '%s'\n",
+                                         adios_type_to_string_int (type),
+                                         value);
+                            return 0;
+                        }
+                        else
+                        {
+                            *out = malloc (4);
+                            *((uint32_t *) *out) = t;
 
-                                return 1;
-                            }
-                        default:
-                                return 1;
-                    }
+                            return 1;
+                        }
+                    default:
+                        return 1;
                 }
+                break; // just to make eclipse happy
             }
         case adios_unsigned_long:
             {
@@ -903,6 +900,7 @@ int adios_parse_scalar_string (enum ADIOS_DATATYPES type, char * value, void **
                 {
                     *out = malloc (16);
                     *((long double *) *out) = t;
+                    return 1;
                 }
             }
         case adios_string:
@@ -1342,7 +1340,7 @@ int adios_common_declare_group (int64_t * id, const char * name
         ,const char * coordination_comm
         ,const char * coordination_var
         ,const char * time_index_name
-        ,enum ADIOS_FLAG stats
+        ,enum ADIOS_STATISTICS_FLAG stats
         )
 {
     struct adios_group_struct * g = (struct adios_group_struct *)
@@ -1363,7 +1361,7 @@ int adios_common_declare_group (int64_t * id, const char * name
     g->group_comm = (coordination_comm ? strdup (coordination_comm) : 0L);
     g->time_index_name = (time_index_name ? strdup (time_index_name) : 0L);
     g->time_index = 0;
-    g->stats_on = stats;
+    g->stats_flag = stats;
     g->process_id = 0;
     g->methods = NULL;
     // ADIOS Schema
@@ -1377,6 +1375,19 @@ int adios_common_declare_group (int64_t * id, const char * name
     g->tv_size = 0;
 #endif
 
+    //Yuan: added for time steps buffering
+    g->do_ts_aggr=0;
+    g->ts_fd = NULL;
+    g->ts_buffsize=0;
+    g->max_ts=1;
+    g->ts_to_buffer=1;
+    g->index=NULL;
+    g->built_index=0;
+    g->do_ts_flush=0;
+    g->synced_groups=NULL;
+    g->synced_groups_size=0;
+    g->synced_groups_capacity=0;
+
     *id = (int64_t) g;
 
     adios_append_group (g);
@@ -1384,6 +1395,35 @@ int adios_common_declare_group (int64_t * id, const char * name
     return 1;
 }
 
+
+int adios_common_set_time_aggregation(struct adios_group_struct * group,
+                                      uint64_t buffersize,
+                                      struct adios_group_struct * syncgroup
+)
+{
+    if (buffersize > 0) {
+        SetTimeAggregation(group, 1);
+        log_debug ("Time aggregation set for group '%s' with buffer size %" PRIu64 " bytes\n",
+                group->name, buffersize);
+    }
+    else
+    {
+        SetTimeAggregation(group, 0); // zero size turns off time-aggregation
+        log_debug ("Time aggregation turned off for group '%s' because buffer size is set to %" PRIu64 " bytes\n",
+                group->name, buffersize);
+    }
+    group->ts_buffsize = buffersize;
+    if (syncgroup)
+    {
+        log_debug ("Group '%s' will be forced to flush whenever group '%s' is written\n",
+                group->name, syncgroup->name);
+        SetTimeAggregationSyncGroup(syncgroup, group);
+    }
+    // FIXME: add sync group
+
+    return 1;
+}
+
 struct adios_pg_struct * add_new_pg_written (struct adios_file_struct * fd)
 {
     struct adios_pg_struct * pg = (struct adios_pg_struct *) 
@@ -1394,6 +1434,7 @@ struct adios_pg_struct * add_new_pg_written (struct adios_file_struct * fd)
         pg->vars_written = NULL;
         pg->vars_written_tail = NULL;
         pg->next = NULL;
+        pg->has_index=0; //Yuan: for ts buffering
         if (!fd->pgs_written) 
         {
             fd->pgs_written = pg;
@@ -1594,6 +1635,11 @@ void adios_common_free_groupstruct (struct adios_group_struct * g)
     adios_timing_destroy(g->timing_obj);
     adios_timing_destroy(g->prev_timing_obj);
 #endif
+    if (g->synced_groups)
+    {
+        free (g->synced_groups);
+        g->synced_groups = NULL;
+    }
     free (g);
 }
 
@@ -1849,14 +1895,22 @@ int64_t adios_common_define_var (int64_t group_id, const char * name
     adios_transform_init_transform_var(v);
 
     // Q.L. - Check whether stats are disabled or not
-    if (t->stats_on == adios_flag_yes)
+    if (t->stats_flag != adios_stat_no)
     {
-        // '1' at the bit location of stat id in adios_bp_v1.h, enables calculation of statistic.
-        for (i = 0; i < ADIOS_STAT_LENGTH; i++)
-            v->bitmap |= (1 << i);
-
-        // Default values for histogram not yet implemented. Disabling it.
-        v->bitmap ^= (1 << adios_statistic_hist);
+        if (t->stats_flag == adios_stat_minmax)
+        {
+            v->bitmap |= (1 << adios_statistic_min);
+            v->bitmap |= (1 << adios_statistic_max);
+            v->bitmap |= (1 << adios_statistic_finite);
+        }
+        else // if (t->stats_flag == adios_stat_full)
+        {
+            // '1' at the bit location of stat id in adios_bp_v1.h, enables calculation of statistic.
+            for (i = 0; i < ADIOS_STAT_LENGTH; i++)
+                v->bitmap |= (1 << i);
+            // Default values for histogram not yet implemented. Disabling it.
+            v->bitmap ^= (1 << adios_statistic_hist);
+        }
 
         // For complex numbers, the set of statistics occur thrice: stat[0] - magnitude, stat[1] - real, stat[2] - imaginary
         if (v->type == adios_complex || v->type == adios_double_complex)
@@ -1977,27 +2031,19 @@ int adios_common_set_transform (int64_t var_id, const char *transform_type_str)
 }
 
 
-void adios_common_get_group (int64_t * group_id, const char * name)
+struct adios_group_struct * adios_common_get_group (const char * name)
 {
     struct adios_group_list_struct * g = adios_get_groups ();
-
-    *group_id = 0;
-
     while (g)
     {
         if (!strcasecmp (g->group->name, name))
         {
-            *group_id = (int64_t) g->group;
-
-            return;
+            return g->group;
         }
-
         g = g->next;
     }
-
-    adios_error (err_invalid_group,
-            "adios-group '%s' not found in configuration file\n",
-            name);
+    adios_error (err_invalid_group, "adios group '%s' does not exist\n", name);
+    return NULL;
 }
 
 // *****************************************************************************
@@ -2441,6 +2487,7 @@ void index_append_var_v1 (
     } else {
         // existing variable, add this item to its characteristics
         log_debug ("   Append to existing variable\n");
+        //printf("   Append to existing variable\n");
 
         /* NOTE: old append made sure the variable mathes
          *  name + path + group name + type
@@ -2464,6 +2511,7 @@ void index_append_var_v1 (
             log_debug ("  ----------- Append index with merging --------------\n");
             struct adios_index_characteristic_struct_v1 * c;
             int count = olditem->characteristics_count + item->characteristics_count;
+//            printf("new variable index has %d\n", count);
             c = malloc ( count * sizeof (struct adios_index_characteristic_struct_v1));
             if (!c)
             {
@@ -2529,6 +2577,7 @@ void index_append_var_v1 (
         } 
         else 
         {
+            //printf("else in mergeing var index\n");
             if (  olditem->characteristics_count
                     + item->characteristics_count
                     > olditem->characteristics_allocated
@@ -2655,6 +2704,16 @@ void adios_merge_index_v1 (
 {
     // this will just add it on to the end and all should work fine
     index_append_process_group_v1 (main_index, new_pg_root);
+    log_debug("merge index on rank %u with sorting %s pg_root time aggregated %s  new pg_root time aggregated %s\n",
+              main_index->pg_root->process_id,
+              (needs_sorting ? "ON" : "OFF"),
+              (main_index->pg_root->is_time_aggregated ? "YES" : "NO"),
+              (new_pg_root->is_time_aggregated ? "YES" : "NO"));
+    if (main_index->pg_root->is_time_aggregated || new_pg_root->is_time_aggregated)
+    {
+        // variable characteristics need to be sorted if time steps are buffered
+        needs_sorting = 1;
+    }
 
     // need to do vars attrs one at a time to merge them properly
     struct adios_index_var_struct_v1 * v = new_vars_root;
@@ -2667,6 +2726,7 @@ void adios_merge_index_v1 (
         v_temp = v->next;
         v->next = 0;
         log_debug ("merge index var %s/%s\n", v->var_path, v->var_name);
+
         index_append_var_v1 (main_index, v, needs_sorting);
         v = v_temp;
     }
@@ -2934,12 +2994,13 @@ static void adios_clear_vars_index_v1 (struct adios_index_var_struct_v1 * root)
             // NCSU ALACRITY-ADIOS - Clear the transform metadata
             adios_transform_clear_transform_characteristic(&root->characteristics[i].transform);
 
-            /*if (root->characteristics [i].value) {
+            if (root->characteristics [i].value) {
                 if (root->type == adios_string_array)
-                    free_string_array (root->characteristics [i].value, root->nelems);
+                    a2s_free_string_array (root->characteristics [i].value, root->nelems);
                 else
                     free (root->characteristics [i].value);
-            }*/
+                root->characteristics [i].value = NULL;
+            }
         }
 
         if (root->characteristics)
@@ -3284,6 +3345,8 @@ void adios_copy_var_written (struct adios_file_struct * fd, struct adios_var_str
             {
                 adios_error (err_unspecified, "String arrays are not supported for variables %s:%s:%d\n",
                         __FILE__,__func__, __LINE__);
+
+                break;
             }
         default:
             {
@@ -3501,8 +3564,83 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
     struct adios_pg_struct * pg = fd->pgs_written;
     int pgid = 0;
 
+//    printf("%d: ============build index, pg_start_in_file=%llu\n",fd->group->process_id, pg->pg_start_in_file);
+    
+    /* Yuan: if index has been built during time-aggregation,
+     * update the offsets and append the already built time-aggregation index
+     * (fd->group->index) to the 'index' that comes from the method and
+     * which may contain the indices from previous steps from a file (in append mode)
+     */
+    if (fd->group->built_index==1) {
+        log_debug("TimeAggr: index already built in time-aggregation, merge it in and move on\n");
+        struct adios_index_process_group_struct_v1 *g_item = g->index->pg_root;
+        while (g_item) {
+            g_item->offset_in_file += pg->pg_start_in_file;
+            g_item->is_time_aggregated = TimeAggregated(g); // yes
+            g_item= g_item->next;
+        }
+        /* When we later merge indexes, it may still be the case that both index and new index
+         * indicates no time aggregation. e.g. index is from parsing index from file at append,
+         * while new index is coming from other processes. Both index is created by parse_index
+         * which does not have info on time aggregation.
+         * We fix this issue here by updating the main index.
+         */
+        if (index && index->pg_root) {
+            struct adios_index_process_group_struct_v1 *pg = index->pg_root;
+            while (pg) {
+                pg->is_time_aggregated |= TimeAggregated(g);
+                pg = pg->next;
+            }
+        }
+        // append whole PG list at once
+        index_append_process_group_v1 (index, g->index->pg_root);
+
+        struct adios_index_var_struct_v1 * v_index = g->index->vars_root;
+        struct adios_index_var_struct_v1 * v_next;
+        while (v_index) {
+            int i;
+            for (i=0; i < v_index->characteristics_count; i++)
+            {
+                //printf("old var offset = %llu  payload_offset=%llu\n", v_index->characteristics [cnt].offset, v_index->characteristics[cnt].payload_offset);
+                v_index->characteristics [i].offset +=  pg->pg_start_in_file;
+                v_index->characteristics [i].payload_offset += pg->pg_start_in_file;
+                //printf("var time index=%d\n",v_index->characteristics[cnt].time_index);
+                //printf("var offset = %llu  payload_offset=%llu\n", v_index->characteristics [cnt].offset, v_index->characteristics[cnt].payload_offset);
+            }
+            v_next = v_index->next;
+            v_index->next = NULL;
+            index_append_var_v1 (index, v_index, 0);
+            v_index = v_next;
+        }
+
+
+        struct adios_index_attribute_struct_v1 * a_index = g->index->attrs_root;
+        struct adios_index_attribute_struct_v1 * a_next;
+        while (a_index)
+        {
+            a_index->characteristics [0].offset += pg->pg_start_in_file;
+            a_index->characteristics [0].payload_offset += pg->pg_start_in_file;
+            //                printf("attr time index=%d offset=%llu\n", a->characteristics[cnt].time_index, a->characteristics [cnt].offset);
+            a_next = a_index->next;
+            a_index->next = NULL; // separate head from tail, to insert a single attribute here
+            index_append_attribute_v1(&index->attrs_root, a_index);
+            a_index = a_next;
+        }
+
+        fd->group->built_index=0;
+        return;
+    }
+
+    log_debug("TimeAggr: build index now and merge it in\n");
+
     while (pg)
     {
+        if(pg->has_index==1) {
+            pg=pg->next;
+            continue; 
+        }
+
+
         /* Create a PG entry in index */
         struct adios_index_process_group_struct_v1 * g_item;
         g_item = (struct adios_index_process_group_struct_v1 *)
@@ -3512,16 +3650,28 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
         g_item->process_id = g->process_id;
         g_item->time_index_name = (g->time_index_name ? strdup (g->time_index_name) : 0L);
         g_item->time_index = g->time_index;
+        g_item->is_time_aggregated = TimeAggregated(fd->group);
+        
+        //printf("adios_build_index_v1 g->time_index=%d, start_in_file=%llu\n", g->time_index, pg->pg_start_in_file);
         g_item->offset_in_file = pg->pg_start_in_file;
         g_item->next = 0;
 
         // build the groups and vars index
         index_append_process_group_v1 (index, g_item);
 
+        //Yuan: if time buffering is on, all the offsets are relative to the
+        //current buffer, they will be updated in the end after
+        //pg_start_in_file is established correctly
+        if (TimeAggregated(fd->group))
+            pg->pg_start_in_file=0;
+
+        //printf("after clearing... adios_build_index_v1 g->time_index=%d, start_in_file=%llu\n", g->time_index, pg->pg_start_in_file);
+
         /* For each written variable, create a variable entry in the index */
         struct adios_var_struct * v = pg->vars_written;
         while (v)
         {
+            //printf("in the variable loop varname=%s pg->pg_start_in_file=%llu\n",v->name, pg->pg_start_in_file);
             // only add items that were written to the index
             assert (v->write_offset > 0); // v is vars_written, so yes it was written actually
             //if (v->write_offset != 0)
@@ -3539,7 +3689,9 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
                 v_index->type = v->type;
                 v_index->characteristics_count = 1;
                 v_index->characteristics_allocated = 1;
+                //printf("var=%s v_offset=%llu start_in_file=%llu\n", v->name, v->write_offset, pg->pg_start_in_file); 
                 v_index->characteristics [0].offset = v->write_offset + pg->pg_start_in_file;
+                //printf("var=%s characteristic offset=%llu\n", v->name, v_index->characteristics [0].offset); 
                 // Find the old var in g->vars.
                 // We need this to calculate the correct payload_offset, because that
                 // holds the variable references in the dimensions, while v-> contains
@@ -3562,6 +3714,7 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
                 adios_transform_init_transform_characteristic(&v_index->characteristics[0].transform);
                 //v_index->characteristics [0].transform_type = adios_transform_none;
 
+//                printf("offset=%llu payload_offset=%llu\n", v_index->characteristics [0].offset, v_index->characteristics [0].payload_offset);
                 uint64_t size = adios_get_type_size (v->type, v->data);
                 switch (v->type)
                 {
@@ -3690,6 +3843,8 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
                         {
                             adios_error (err_unspecified, "String arrays are not supported for variables %s:%s:%d\n",
                                     __FILE__,__func__, __LINE__);
+
+                            break;
                         }
                     default:
                         {
@@ -3707,6 +3862,7 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
             v = v->next;
         }
 
+        pg->has_index=1;
         pg = pg->next;
         pgid++;
     }
@@ -3731,7 +3887,7 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
             a_index->nelems = a->nelems;
             a_index->characteristics_count = 1;
             a_index->characteristics_allocated = 1;
-            //uint64_t size = a_index->nelems * adios_get_type_size (a->type, a->value);
+            uint64_t size = a_index->nelems * adios_get_type_size (a->type, a->value);
 
             // pg_file_offsets [pgid] is now the last PG's start offset, which is the base
             // offset for attributes
@@ -3750,24 +3906,41 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
             adios_transform_init_transform_characteristic(&a_index->characteristics[0].transform);
             //a_index->characteristics[0].transform_type = adios_transform_none;
 
-            a_index->characteristics [0].value = a->value;
+
             /* Do not copy the attributes to index, since they don't change */
-            /*
+            /* a_index->characteristics [0].value = a->value;*/
+            /* Actually, let's copy, so we can free all attribute indices, both these ones created from attributes and
+             * those that get read in from file or other processors and merged into the index. The latter ones are
+             * always allocated, not linked to an existing attribute's value.
+             */
+
             if (a->value)
             {
-                if (a->type == adios_string) 
-                    size++;
-                a_index->characteristics [0].value = malloc (size);
-                if (a->type == adios_string) 
-                    ((char *) (a_index->characteristics [0].value)) [size] = 0;
-                memcpy (a_index->characteristics [0].value, a->value, size);
+                if (a->type == adios_string_array)
+                {
+                    char ** sa = (char**) malloc (a->nelems*sizeof(char*));
+                    a_index->characteristics [0].value = sa;
+                    int i;
+                    for (i=0; i<a->nelems; i++) {
+                        sa[i] = strdup (  ((char**)a->value)[i]);
+                    }
+                }
+                else  if (a->type == adios_string)
+                {
+                    a_index->characteristics [0].value = strdup(a->value);
+                }
+                else
+                {
+                    a_index->characteristics [0].value = malloc (size);
+                    memcpy (a_index->characteristics [0].value, a->value, size);
+                }
 
             }
             else
             {
                 a_index->characteristics [0].value = 0;
             }
-            */
+
 
             if (a_index->nelems > 1) {
                 // for array attributes, save nelems as a dimension characteristic
@@ -3795,6 +3968,12 @@ void adios_build_index_v1 (struct adios_file_struct * fd,
 
         a = a->next;
     }
+
+    //Yuan: at the end of close, save current index
+   // if(fd->group->do_ts_aggr==1 && fd->group->ts_to_buffer>1) { 
+   //     printf("store the index\n");
+   //     fd->group->index=index; 
+   // }
 }
 
 int adios_write_index_v1 (char ** buffer
@@ -3879,6 +4058,7 @@ int adios_write_index_v1 (char ** buffer
         index_size += len;
         group_size += len;
 
+        //printf("write index time=%lu\n", pg_root->time_index);
         buffer_write (buffer, buffer_size, buffer_offset
                 ,&pg_root->time_index, 4
                 );
@@ -3961,6 +4141,7 @@ int adios_write_index_v1 (char ** buffer
         index_size += 8;
         var_size += 8;
 
+        //printf("name=%s vars_root->characteristics_count=%d\n",vars_root->var_name, vars_root->characteristics_count);
         for (i = 0; i < vars_root->characteristics_count; i++)
         {
             uint64_t size;
@@ -5042,7 +5223,8 @@ uint16_t adios_write_var_characteristics_v1 (struct adios_file_struct * fd
 int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct adios_var_struct * var)
 {
     uint64_t total_size = 0;
-    uint64_t size = 0;
+    uint64_t n = 0;
+    uint64_t total_n = 0;
     enum ADIOS_DATATYPES original_var_type = adios_transform_get_var_original_type_var(var);
 
     if (var->transform_type != adios_transform_none) {
@@ -5054,6 +5236,7 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
     if (var->bitmap == 0)
         return 0;
 
+    enum ADIOS_STATISTICS_FLAG stat_flag = fd->group->stats_flag;
     int32_t map[32];
     memset (map, -1, sizeof(map));
 
@@ -5087,10 +5270,12 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
 
 
 
-# define CHECK_FLOAT() (isnan (data [size]) || !isfinite (data [size]))
+# define CHECK_FLOAT() (isnan (data [n]) || !isfinite (data [n]))
 # define CHECK_INT() (0)
+# define CHECK_FLOAT_NAN() (isnan (data [n]))
+# define CHECK_INT_NAN() (0)
 
-#define ADIOS_STATISTICS(a,b,NON_FINITE_CHECK) \
+#define ADIOS_STATISTICS_FULL(a,b,NON_FINITE_CHECK) \
 {\
     a * data = (a *) var->data; \
     int i, j; \
@@ -5122,41 +5307,87 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
             hist->frequencies = calloc ((hist->num_breaks + 1), adios_get_type_size(adios_unsigned_integer, "")); \
         } \
         int have_finite_value = 0; \
-        size = 0; \
-        while ((size * b) < total_size) \
+        n = 0; \
+        while ((n * b) < total_size) \
         { \
             if (NON_FINITE_CHECK()) {\
-                size ++; \
+                n ++; \
                 continue; \
             }\
             if (!have_finite_value) { \
-                *min = data [size]; \
-                *max = data [size]; \
-                *sum = data [size]; \
-                *sum_square = (data [size] * data [size]) ; \
+                *min = data [n]; \
+                *max = data [n]; \
+                *sum = data [n]; \
+                *sum_square = (data [n] * data [n]) ; \
                 *cnt = *cnt + 1; \
                 if (map[adios_statistic_hist] != -1) \
-                HIST(data [size]); \
+                HIST(data [n]); \
                 have_finite_value = 1; \
-                size ++; \
+                n ++; \
                 continue; \
             } \
-            if (data [size] < *min) \
-            *min = data [size]; \
-            if (data [size] > *max) \
-            *max = data [size]; \
-            *sum += data [size]; \
-            *sum_square += (data [size] * data [size]) ; \
+            if (data [n] < *min) \
+            *min = data [n]; \
+            if (data [n] > *max) \
+            *max = data [n]; \
+            *sum += data [n]; \
+            *sum_square += (data [n] * data [n]) ; \
             *cnt = *cnt + 1; \
             if (map[adios_statistic_hist] != -1) \
-            HIST(data [size]); \
-            size++; \
+            HIST(data [n]); \
+            n++; \
         } \
         if (map[adios_statistic_finite] != -1) \
         * ((uint8_t * ) stats[map[adios_statistic_finite]].data) = have_finite_value; \
         return 0; \
     }
 
+#define ADIOS_STATISTICS_MINMAX(a,b,NAN_CHECK) \
+{\
+    a * data = (a *) var->data; \
+    struct adios_stat_struct * stats = var->stats[0]; \
+    map[adios_statistic_min] = 0; \
+    map[adios_statistic_max] = 1; \
+    map[adios_statistic_finite] = 2; \
+    stats[0].data = malloc(adios_get_stat_size(NULL, original_var_type, adios_statistic_min)); \
+    stats[1].data = malloc(adios_get_stat_size(NULL, original_var_type, adios_statistic_max)); \
+    stats[2].data = malloc(adios_get_stat_size(NULL, original_var_type, adios_statistic_finite)); \
+    a *min = (a *) stats[map[adios_statistic_min]].data; \
+    a *max = (a *) stats[map[adios_statistic_max]].data; \
+    int have_finite_value = 0; \
+    total_n = total_size / b; \
+    n = 0; \
+    while (n < total_n && NAN_CHECK()) \
+    { \
+        n++; \
+    } \
+    if (n < total_n) { \
+        *min = *data; \
+        *max = *data; \
+        have_finite_value = 1; \
+        data++; \
+        n++; \
+    }\
+    while (n < total_n) \
+    { \
+        if (*data < *min) \
+            *min = *data; \
+        if (*data > *max) \
+            *max = *data; \
+        n++; \
+        data++; \
+    } \
+    * ((uint8_t * ) stats[map[adios_statistic_finite]].data) = have_finite_value; \
+    return 0; \
+}
+
+#define ADIOS_STATISTICS(a,b,NON_FINITE_CHECK,NAN_CHECK) \
+    if (stat_flag == adios_stat_minmax) \
+        ADIOS_STATISTICS_MINMAX(a,b,NAN_CHECK) \
+    else \
+        ADIOS_STATISTICS_FULL(a,b,NON_FINITE_CHECK)
+
+
 #define MIN_MAX(a,b)\
     {\
         a * data = (a *) var->data; \
@@ -5173,37 +5404,37 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
     switch (original_var_type)
     {
         case adios_byte:
-            ADIOS_STATISTICS(int8_t,1,CHECK_INT)
+            ADIOS_STATISTICS(int8_t,1,CHECK_INT,CHECK_INT_NAN)
 
         case adios_unsigned_byte:
-            ADIOS_STATISTICS(uint8_t,1,CHECK_INT)
+            ADIOS_STATISTICS(uint8_t,1,CHECK_INT,CHECK_INT_NAN)
 
         case adios_short:
-            ADIOS_STATISTICS(int16_t,2,CHECK_INT)
+            ADIOS_STATISTICS(int16_t,2,CHECK_INT,CHECK_INT_NAN)
 
         case adios_unsigned_short:
-            ADIOS_STATISTICS(uint16_t,2,CHECK_INT)
+            ADIOS_STATISTICS(uint16_t,2,CHECK_INT,CHECK_INT_NAN)
 
         case adios_integer:
-            ADIOS_STATISTICS(int32_t,4,CHECK_INT)
+            ADIOS_STATISTICS(int32_t,4,CHECK_INT,CHECK_INT_NAN)
 
         case adios_unsigned_integer:
-            ADIOS_STATISTICS(uint32_t,4,CHECK_INT)
+            ADIOS_STATISTICS(uint32_t,4,CHECK_INT,CHECK_INT_NAN)
 
         case adios_long:
-            ADIOS_STATISTICS(int64_t,8,CHECK_INT)
+            ADIOS_STATISTICS(int64_t,8,CHECK_INT,CHECK_INT_NAN)
 
         case adios_unsigned_long:
-            ADIOS_STATISTICS(uint64_t,8,CHECK_INT)
+            ADIOS_STATISTICS(uint64_t,8,CHECK_INT,CHECK_INT_NAN)
 
         case adios_real:
-            ADIOS_STATISTICS(float,4,CHECK_FLOAT)
+            ADIOS_STATISTICS(float,4,CHECK_FLOAT,CHECK_FLOAT_NAN)
 
         case adios_double:
-            ADIOS_STATISTICS(double,8,CHECK_FLOAT)
+            ADIOS_STATISTICS(double,8,CHECK_FLOAT,CHECK_FLOAT_NAN)
 
         case adios_long_double:
-            ADIOS_STATISTICS(long double,16,CHECK_FLOAT)
+            ADIOS_STATISTICS(long double,16,CHECK_FLOAT,CHECK_FLOAT_NAN)
 
         case adios_complex:
         {
@@ -5265,66 +5496,71 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
             }
             */
 
-            *cnt_r = *cnt_i = *cnt_m = 0;
             *min_r = *min_i = *min_m = HUGE_VAL;
             *max_r = *max_i = *max_m = -HUGE_VAL;
-            *sum_r = *sum_i = *sum_m = 0;
-            *sum_square_r = *sum_square_i = *sum_square_m = 0;
+            if (stat_flag == adios_stat_full)
+            {
+                *cnt_r = *cnt_i = *cnt_m = 0;
+                *sum_r = *sum_i = *sum_m = 0;
+                *sum_square_r = *sum_square_i = *sum_square_m = 0;
+            }
 
-            while ((size * sizeof(float)) < total_size) {
+            while ((n * sizeof(float)) < total_size) {
 
-                magnitude = sqrt((double) data [size] * data [size] + (double) data[size + 1] * data[size + 1]);
+                magnitude = sqrt((double) data [n] * data [n] + (double) data[n + 1] * data[n + 1]);
 
                 // Both real and imaginary parts have to be finite, else skip calculating the characteristic
-                if ( isnan(data [size]) || !isfinite(data [size]) || isnan(data[size + 1]) || !isfinite(data[size + 1]) ) {
-                    size += 2;
+                if ( isnan(data [n]) || !isfinite(data [n]) || isnan(data[n + 1]) || !isfinite(data[n + 1]) ) {
+                    n += 2;
                     continue;
                 }
 
                 finite = 1;
 
                 // Updating the characteristic values
-                if (data [size] < *min_r)
-                    *min_r = data [size];
-                if (data [size + 1] < *min_i)
-                    *min_i = data [size + 1];
+                if (data [n] < *min_r)
+                    *min_r = data [n];
+                if (data [n + 1] < *min_i)
+                    *min_i = data [n + 1];
                 if (magnitude < *min_m)
                     *min_m = magnitude;
 
-                if (data [size] > *max_r)
-                    *max_r = data [size];
-                if (data [size + 1] > *max_i)
-                    *max_i = data [size + 1];
+                if (data [n] > *max_r)
+                    *max_r = data [n];
+                if (data [n + 1] > *max_i)
+                    *max_i = data [n + 1];
                 if (magnitude > *max_m)
                     *max_m = magnitude;
 
-                *sum_r += data [size];
-                *sum_i += data [size + 1];
-                *sum_m += magnitude;
-
-                *sum_square_r += (double) data [size] * data [size];
-                *sum_square_i += (double) data [size + 1] * data [size + 1];
-                *sum_square_m += magnitude * magnitude;
-
-                *cnt_r = *cnt_r + 1;
-                *cnt_i = *cnt_i + 1;
-                *cnt_m = *cnt_m + 1;
-                // Histogram not available yet
-                /*
-                if (map[adios_statistic_hist] != -1)
+                if (stat_flag == adios_stat_full)
                 {
-                    hist = hist_r;
-                    HIST (data[size]);
+                    *sum_r += data [n];
+                    *sum_i += data [n + 1];
+                    *sum_m += magnitude;
+
+                    *sum_square_r += (double) data [n] * data [n];
+                    *sum_square_i += (double) data [n + 1] * data [n + 1];
+                    *sum_square_m += magnitude * magnitude;
+
+                    *cnt_r = *cnt_r + 1;
+                    *cnt_i = *cnt_i + 1;
+                    *cnt_m = *cnt_m + 1;
+                    // Histogram not available yet
+                    /*
+                    if (map[adios_statistic_hist] != -1)
+                    {
+                        hist = hist_r;
+                        HIST (data[size]);
 
-                    hist = hist_i;
-                    HIST (data[size + 1]);
+                        hist = hist_i;
+                        HIST (data[size + 1]);
 
-                    hist = hist_m;
-                    HIST (magnitude);
+                        hist = hist_m;
+                        HIST (magnitude);
+                    }
+                    */
                 }
-                */
-
-                   size += 2;
+                n += 2;
             }
 
             if (map[adios_statistic_finite] != -1)
@@ -5395,67 +5631,72 @@ int adios_generate_var_characteristics_v1 (struct adios_file_struct * fd, struct
             cnt_r = (uint32_t *) stats[1][map[adios_statistic_cnt]].data;
             cnt_i = (uint32_t *) stats[2][map[adios_statistic_cnt]].data;
 
-            *cnt_r = *cnt_i = *cnt_m = 0;
             *min_r = *min_i = *min_m = HUGE_VAL;
             *max_r = *max_i = *max_m = -HUGE_VAL;
-            *sum_r = *sum_i = *sum_m = 0;
-            *sum_square_r = *sum_square_i = *sum_square_m = 0;
+            if (stat_flag == adios_stat_full)
+            {
+                *cnt_r = *cnt_i = *cnt_m = 0;
+                *sum_r = *sum_i = *sum_m = 0;
+                *sum_square_r = *sum_square_i = *sum_square_m = 0;
+            }
 
-            while ((size * sizeof(double)) < total_size)
+            while ((n * sizeof(double)) < total_size)
             {
-                magnitude = sqrt((long double) data [size] * data [size] + 
-                                 (long double) data[size + 1] * data[size + 1]);
+                magnitude = sqrt((long double) data [n] * data [n] + 
+                                 (long double) data[n + 1] * data[n + 1]);
 
                 // Both real and imaginary parts have to be finite, else skip calculating the characteristic
-                if ( isnan(data [size]) || !isfinite(data [size]) || isnan(data[size + 1]) || !isfinite(data[size + 1]) ) {
-                    size += 2;
+                if ( isnan(data [n]) || !isfinite(data [n]) || isnan(data[n + 1]) || !isfinite(data[n + 1]) ) {
+                    n += 2;
                     continue;
                 }
 
                 finite = 1;
 
-                if (data [size] < *min_r)
-                    *min_r = data [size];
-                if (data [size + 1] < *min_i)
-                    *min_i = data [size + 1];
+                if (data [n] < *min_r)
+                    *min_r = data [n];
+                if (data [n + 1] < *min_i)
+                    *min_i = data [n + 1];
                 if (magnitude < *min_m)
                     *min_m = magnitude;
 
-                if (data [size] > *max_r)
-                    *max_r = data [size];
-                if (data [size + 1] > *max_i)
-                    *max_i = data [size + 1];
+                if (data [n] > *max_r)
+                    *max_r = data [n];
+                if (data [n + 1] > *max_i)
+                    *max_i = data [n + 1];
                 if (magnitude > *max_m)
                     *max_m = magnitude;
 
-                *sum_r += data [size];
-                *sum_i += data [size + 1];
-                *sum_m += magnitude;
-
-                *sum_square_r += (long double) data [size] * data [size];
-                *sum_square_i += (long double) data [size + 1] * data [size + 1];
-                *sum_square_m += magnitude * magnitude;
-
-                // Histgram has not available for complex yet
-                /*
-                if (map[adios_statistic_hist] != -1)
+                if (stat_flag == adios_stat_full)
                 {
-                    hist = hist_r;
-                    HIST (data[size]);
+                    *sum_r += data [n];
+                    *sum_i += data [n + 1];
+                    *sum_m += magnitude;
 
-                    hist = hist_i;
-                    HIST (data[size + 1]);
+                    *sum_square_r += (long double) data [n] * data [n];
+                    *sum_square_i += (long double) data [n + 1] * data [n + 1];
+                    *sum_square_m += magnitude * magnitude;
 
-                    hist = hist_m;
-                    HIST (magnitude);
-                }
-                */
+                    // Histgram has not available for complex yet
+                    /*
+                    if (map[adios_statistic_hist] != -1)
+                    {
+                        hist = hist_r;
+                        HIST (data[size]);
 
-                *cnt_r = *cnt_r + 1;
-                *cnt_i = *cnt_i + 1;
-                *cnt_m = *cnt_m + 1;
+                        hist = hist_i;
+                        HIST (data[size + 1]);
 
-                   size += 2;
+                        hist = hist_m;
+                        HIST (magnitude);
+                    }
+                    */
+
+                    *cnt_r = *cnt_r + 1;
+                    *cnt_i = *cnt_i + 1;
+                    *cnt_m = *cnt_m + 1;
+                }
+                n += 2;
             }
 
             if (map[adios_statistic_finite] != -1)
diff --git a/src/core/adios_internals.h b/src/core/adios_internals.h
index a2f51c0..09a6d42 100644
--- a/src/core/adios_internals.h
+++ b/src/core/adios_internals.h
@@ -152,7 +152,7 @@ struct adios_group_struct
     char * group_by;
     char * time_index_name;
     uint32_t time_index;
-    enum ADIOS_FLAG stats_on;
+    enum ADIOS_STATISTICS_FLAG stats_flag;
     uint32_t process_id;
 
     struct adios_method_list_struct * methods;
@@ -171,8 +171,109 @@ struct adios_group_struct
     struct adios_timing_struct * prev_timing_obj;
     uint64_t tv_size; // the additional data size used by timing variables
 #endif
+    int do_ts_aggr; //Yuan: introduced for time steps buffering
+    struct adios_file_struct *ts_fd; // save and keep open the file struct during time aggr.
+    uint64_t ts_buffsize; //Yuan: introduced for time steps buffering
+    int ts_to_buffer; //current time steps
+    int max_ts; //maximum time steps to buffer 
+    struct adios_index_struct_v1 * index; //the indexes for current written PGs 
+    int built_index; // FIXME: 0 or 1, if index has been built, do not build it during close()
+    int do_ts_flush; // 1 if we need close during finalize/group-sync, otherwise always 0
+    struct adios_group_struct **synced_groups;
+    int synced_groups_size; // > 0 if this group forces time-aggregated groups to be flushed
+    int synced_groups_capacity; // synced_groups is a Vector
 };
 
+static inline void SetTimeAggregation (struct adios_group_struct * g, int flag)
+{
+    g->do_ts_aggr = (flag != 0);
+}
+
+
+static inline int TimeAggregated (struct adios_group_struct * g)
+{
+    return (g->do_ts_aggr != 0);
+}
+
+static inline int NotTimeAggregated (struct adios_group_struct * g)
+{
+    return (g->do_ts_aggr == 0);
+}
+
+static inline int TimeAggregationJustBegan (struct adios_group_struct * g)
+{
+    return (g->do_ts_aggr
+            && g->ts_fd == NULL
+            //&& g->ts_to_buffer == g->max_ts
+            );
+}
+
+static inline int TimeAggregationInProgress (struct adios_group_struct * g)
+{
+    return (g->do_ts_aggr
+            && g->ts_fd != NULL
+            //&& g->ts_to_buffer < g->max_ts
+            );
+}
+// TimeAggregationAggregationInProgress => TimeAggregated AND NOT TimeAggreationJustBegan
+// TimeAggregationAggregationJustBegan  => TimeAggregated AND NOT TimeAggreationInProgress
+
+static inline int TimeAggregationLastStep (struct adios_group_struct * g)
+{
+    return (g->do_ts_aggr  && g->ts_to_buffer == 0);
+}
+// TimeAggregationAggregationLastStep => TimeAggregated AND TimeAggreationInProgress
+
+static inline void SetTimeAggregationFlush (struct adios_group_struct * g, int do_flush)
+{
+    g->do_ts_flush = (do_flush != 0);  // => TimeAggregationIsFlushing
+    if (g->do_ts_flush)
+        g->ts_to_buffer = 0;               // => TimeAggregationLastStep
+}
+
+// TimeAggregationIsFlushing => TimeAggregated AND TimeAggreationInProgress AND TimeAggregationLastStep
+static inline int TimeAggregationIsFlushing (struct adios_group_struct * g)
+{
+    return (g->do_ts_flush != 0);
+}
+
+static inline void SetTimeAggregationSyncGroup (struct adios_group_struct * g,
+                                                struct adios_group_struct * synced_group)
+{
+    if (g->synced_groups_capacity <= g->synced_groups_size) // first synced group
+    {
+        struct adios_group_struct ** newg = (struct adios_group_struct **)
+                realloc (g->synced_groups, g->synced_groups_size+5);
+        if (newg != NULL)
+        {
+            g->synced_groups_capacity = g->synced_groups_size + 5;
+            g->synced_groups = newg;
+        }
+        /*else
+        {
+            adios_error(err_no_memory, "Could not (re)allocate small memory for synchronized groups. "
+                    "Keep the current list of %d groups synchronized with group %s\n",
+                    g->synced_groups_capacity, g->name);
+        }*/
+    }
+
+    g->synced_groups[g->synced_groups_size] = synced_group;
+    g->synced_groups_size++;  // => TimeAggregationIsaSyncGroup
+}
+
+static inline int TimeAggregationIsaSyncGroup (struct adios_group_struct * g)
+{
+    return (g->synced_groups_size != 0);
+}
+
+static inline void TimeAggregationGetSyncedGroups (struct adios_group_struct * g,
+                                                   struct adios_group_struct *** synced_groups,
+                                                   int *ngroups)
+{
+    *synced_groups = g->synced_groups;
+    *ngroups = g->synced_groups_size;
+}
+
 struct adios_group_list_struct
 {
     struct adios_group_struct * group;
@@ -187,6 +288,7 @@ struct adios_group_list_struct
 struct adios_pg_struct
 {
     uint64_t pg_start_in_file; //  where this pg start in file, handled by methods!
+    uint64_t has_index; // Yuan: 0 or 1, if the index has been built for this PG 
     struct adios_var_struct * vars_written;
     struct adios_var_struct * vars_written_tail; // last variable in 'vars_written'
     struct adios_pg_struct  * next;
@@ -205,6 +307,7 @@ struct adios_file_struct
 
     struct adios_pg_struct * pgs_written;
     struct adios_pg_struct * current_pg; // points to last PG in the list, which is being created in buffer
+    struct adios_pg_struct * first_pg_written; // Yuan: points to first PG in the list
 
     char * allocated_bufptr;  // actual allocated buffer before alignment
     char * buffer;          // buffer we use for building the output (aligned, made from allocated_bufptr)
@@ -493,8 +596,13 @@ int adios_common_declare_group (int64_t * id, const char * name
                                ,const char * coordination_comm
                                ,const char * coordination_var
                                ,const char * time_index_name
-                               ,enum ADIOS_FLAG stats
-                               );
+                               ,enum ADIOS_STATISTICS_FLAG stats
+);
+
+int adios_common_set_time_aggregation(struct adios_group_struct * group,
+                                      uint64_t buffersize,
+                                      struct adios_group_struct * syncgroup
+);
 
 int64_t adios_common_define_var (int64_t group_id, const char * name
                                 ,const char * path, enum ADIOS_DATATYPES type
@@ -514,7 +622,7 @@ int adios_common_define_var_characteristics  (struct adios_group_struct * g
                                               ,const char * bin_count
                                              );
 
-void adios_common_get_group (int64_t * group_id, const char * name);
+struct adios_group_struct * adios_common_get_group (const char * name);
 int adios_common_delete_attrdefs (struct adios_group_struct * g);
 int adios_common_delete_vardefs (struct adios_group_struct * g);
 void adios_common_free_groupstruct (struct adios_group_struct * g);
diff --git a/src/core/adios_internals_mxml.c b/src/core/adios_internals_mxml.c
index 62e04fc..4c40a85 100644
--- a/src/core/adios_internals_mxml.c
+++ b/src/core/adios_internals_mxml.c
@@ -1052,7 +1052,8 @@ static int parseGroup (mxml_node_t * node, char * schema_version)
 
     int64_t      ptr_new_group;
     struct adios_group_struct * new_group;
-    enum ADIOS_FLAG host_language_fortran = adios_flag_yes, enable_stats = adios_flag_yes;
+    enum ADIOS_FLAG host_language_fortran = adios_flag_yes;
+    enum ADIOS_STATISTICS_FLAG enable_stats = adios_stat_default;
     int i;
 
     for (i = 0; i < node->value.element.num_attrs; i++)
@@ -1110,25 +1111,28 @@ static int parseGroup (mxml_node_t * node, char * schema_version)
         }
     }
 
-    if (!stats)
+    if (!stats || !strcasecmp (stats, "default") || !strcasecmp (stats, "minmax"))
     {
-        enable_stats = adios_flag_yes;
+        enable_stats = adios_stat_default;
     }
     else
     {
-        if (!strcasecmp (stats, "On"))
+        if (!strcasecmp (stats, "minmax"))
         {
-            enable_stats = adios_flag_yes;
+            enable_stats = adios_stat_minmax;
         }
-        else if (!strcasecmp (stats, "Off"))
+        else if (!strcasecmp (stats, "on") || !strcasecmp(stats, "full"))
         {
-            enable_stats = adios_flag_no;
+            enable_stats = adios_stat_full;
+        }
+        else if (!strcasecmp (stats, "off") || !strcasecmp(stats, "no"))
+        {
+            enable_stats = adios_stat_no;
         }
         else
         {
-            log_error ("config.xml, invalid stats %s"
-                    ,stats
-                    );
+            log_error ("config.xml: invalid statistics flag %s. "
+                       "Valid options are [off|on|default|minmax].\n", stats);
             return 0;
         }
     }
@@ -1883,9 +1887,7 @@ static int parseAnalysis (mxml_node_t * node)
         return 0;
     }
 
-    adios_common_get_group (&group_id, group);
-    g = (struct adios_group_struct *) group_id;
-
+    g = adios_common_get_group (group);
     if (!g)
     {
         log_warn ("config.xml: Didn't find group %s for analysis\n", group);
@@ -2047,6 +2049,75 @@ static int parseBuffer (mxml_node_t * node)
 }
 
 
+static int parseTimeAggregation (mxml_node_t * node, int rank)
+{
+    mxml_node_t * n;
+
+    const char * buffersize = 0;
+    const char * syncgroup = 0;
+    const char * group = 0;
+    uint64_t bufsize;
+    int i;
+
+
+    for (i = 0; i < node->value.element.num_attrs; i++)
+    {
+        mxml_attr_t * attr = &node->value.element.attrs [i];
+
+        GET_ATTR("buffer-size",attr,buffersize,"method")
+        GET_ATTR("sync-with-group",attr,syncgroup,"method")
+		GET_ATTR("group",attr,group,"method")
+		log_warn ("config.xml: unknown attribute '%s' on %s "
+				"(ignored)\n"
+				,attr->name
+				,"method"
+		);
+    }
+
+    if (!buffersize)
+        bufsize = 0;
+    else
+        bufsize = atoi (buffersize);
+
+    if (!group)
+    {
+        adios_error (err_no_group_defined, "config.xml:  time-aggregation requires a group\n");
+        return 0;
+    }
+
+    struct adios_group_struct *g = adios_common_get_group (group);
+    if (!g)
+    {
+        log_warn ("config.xml: Didn't find group %s for time-aggregation\n", group);
+        return 0;
+    }
+
+    struct adios_group_struct *sg = NULL;
+    if (syncgroup) {
+        sg = adios_common_get_group (syncgroup);
+        if (!sg)
+        {
+            log_warn ("config.xml: Didn't find sync group %s for time-aggregation of group %s\n",
+                    syncgroup, group);
+        }
+    }
+
+    if (rank == 0)
+    {
+        if (sg) {
+            log_info ("Set time aggregation for group '%s' with buffer size %" PRIu64 " bytes and "
+                    "synchronizing flushes with group '%s'\n",
+                    group, bufsize, syncgroup);
+        } else {
+            log_info ("Set time aggregation for group '%s' with buffer size %" PRIu64 " bytes\n",
+                    group, bufsize);
+        }
+    }
+    int ret = adios_common_set_time_aggregation(g, bufsize, sg);
+    return ret;
+}
+
+
 
 void PRINT_MXML_NODE (mxml_node_t *root)
 {
@@ -2071,6 +2142,8 @@ void PRINT_MXML_NODE (mxml_node_t *root)
     }
 }
 
+static const char * config_file_name; // hold the name of config to allow for error messages
+
 int adios_parse_config (const char * config, MPI_Comm comm)
 {
     FILE * fp = 0;
@@ -2175,11 +2248,12 @@ int adios_parse_config (const char * config, MPI_Comm comm)
         PRINT_MXML_NODE(root);
     }
 
-
+    config_file_name = config;
     if (!root || !root->value.element.name || strcasecmp (root->value.element.name, "adios-config"))
     {
         adios_error (err_invalid_xml_doc, "config.xml: did not find adios-config xml element\n");
         mxmlRelease (doc);
+        config_file_name = NULL;
         return 0;
     }
     else
@@ -2226,6 +2300,7 @@ int adios_parse_config (const char * config, MPI_Comm comm)
                         );
 
                 mxmlRelease (doc);
+                config_file_name = NULL;
 
                 return 0;
             }
@@ -2274,17 +2349,25 @@ int adios_parse_config (const char * config, MPI_Comm comm)
                     }
                     else
                     {
-                        if (!strncmp (node->value.element.name, "!--", 3))
+                        if (!strcasecmp (node->value.element.name, "time-aggregation"))
                         {
-                            continue;
+                            if (!parseTimeAggregation(node, rank))
+                                break;
                         }
                         else
                         {
-                            log_warn ("config.xml: invalid element: %s\n"
-                                    ,node->value.element.name
-                                    );
-
-                            break;
+                        	if (!strncmp (node->value.element.name, "!--", 3))
+                        	{
+                        		continue;
+                        	}
+                        	else
+                        	{
+                        		log_warn ("config.xml: invalid element: %s\n"
+                        				,node->value.element.name
+                        		);
+
+                        		break;
+                        	}
                         }
                     }
                 }
@@ -2293,6 +2376,7 @@ int adios_parse_config (const char * config, MPI_Comm comm)
     }
 
     mxmlRelease (doc);
+    config_file_name = NULL;
 
     if (!saw_datagroup)
     {
@@ -2416,7 +2500,6 @@ int adios_common_select_method (int priority, const char * method
         ,const char * base_path, int iters
         )
 {
-    int64_t group_id;
     struct adios_group_struct * g;
     struct adios_method_struct * new_method;
     int requires_group_comm = 0;
@@ -2461,8 +2544,7 @@ int adios_common_select_method (int priority, const char * method
         return 0;
     }
 
-    adios_common_get_group (&group_id, group);
-    g = (struct adios_group_struct *) group_id;
+    g = adios_common_get_group (group);
     if (!g)
     {
         adios_error (err_missing_invalid_group, "config.xml: Didn't find group: %s for transport: %s\n"
diff --git a/src/core/adios_read.c b/src/core/adios_read.c
index 3805e53..5d28bb5 100644
--- a/src/core/adios_read.c
+++ b/src/core/adios_read.c
@@ -192,7 +192,7 @@ const char * adios_type_to_string (enum ADIOS_DATATYPES type)
     return common_read_type_to_string (type);
 }
 
-int adios_type_size(enum ADIOS_DATATYPES type, void *data)
+int adios_type_size(enum ADIOS_DATATYPES type, const void *data)
 {
     return common_read_type_size(type, data);
 }
@@ -212,7 +212,6 @@ void adios_print_fileinfo (ADIOS_FILE *fp)
     common_read_print_fileinfo(fp);
 }
 
-
 ADIOS_SELECTION * adios_selection_boundingbox (int ndim, const uint64_t *start, const uint64_t *count)
 {
     return a2sel_boundingbox (ndim, start, count);
diff --git a/src/core/adios_transform_methods.c b/src/core/adios_transform_methods.c
new file mode 100644
index 0000000..8cd8fe8
--- /dev/null
+++ b/src/core/adios_transform_methods.c
@@ -0,0 +1,59 @@
+#include <stdlib.h>
+#include <string.h>
+#include "public/adios_transform_methods.h"
+#include "core/transforms/adios_transforms_hooks.h" 
+#include "core/transforms/adios_transforms_hooks_read.h"
+#include "core/transforms/adios_transforms_read.h"
+
+ADIOS_AVAILABLE_TRANSFORM_METHODS * adios_available_transform_methods()
+{
+    int i, n;
+    n = 0;
+    for (i = (int)adios_transform_none; i < num_adios_transform_types; i++) {
+        if (adios_transform_is_implemented((enum ADIOS_TRANSFORM_TYPE)i)) {
+            n++;
+        }
+    }
+
+    if (n == 0)
+        return NULL;
+
+    ADIOS_AVAILABLE_TRANSFORM_METHODS * t = (ADIOS_AVAILABLE_TRANSFORM_METHODS *) malloc (sizeof(ADIOS_AVAILABLE_TRANSFORM_METHODS));
+    if (!t)
+        return NULL;
+
+    t->name    = (char**) malloc (n*sizeof(char*));
+    t->description = (char**) malloc (n*sizeof(char*));
+    t->ntransforms = n;
+
+    n = 0;
+    for (i = (int)adios_transform_none; i < num_adios_transform_types; i++) {    
+        if (adios_transform_is_implemented((enum ADIOS_TRANSFORM_TYPE)i)) {
+            t->name[n] = strdup (adios_transform_plugin_primary_xml_alias((enum ADIOS_TRANSFORM_TYPE)i));
+            t->description[n] = strdup (adios_transform_plugin_desc((enum ADIOS_TRANSFORM_TYPE)i));
+            n++;
+        }
+    }
+    return t;
+}
+
+void adios_available_transform_methods_free (ADIOS_AVAILABLE_TRANSFORM_METHODS *t)
+{
+    int i;
+    if (t)
+    {
+        for (i=0; i < t->ntransforms; i++)
+        {
+            if (t->name[i]) {
+                free (t->name[i]);
+                t->name[i] = NULL;
+            }
+            if (t->description[i]) {
+                free (t->description[i]);
+                t->description[i] = NULL;
+            }
+        }
+        free (t);
+    }
+}
+
diff --git a/src/core/adiosf.c b/src/core/adiosf.c
index 4cdf778..785c3b4 100644
--- a/src/core/adiosf.c
+++ b/src/core/adiosf.c
@@ -477,7 +477,8 @@ void FC_FUNC_(adios_stop_calculation, ADIOS_STOP_CALCULATION) (int * err)
 ///////////////////////////////////////////////////////////////////////////////
 void FC_FUNC_(adios_close, ADIOS_CLOSE) (int64_t * fd_p, int * err)
 {
-    *err = common_adios_close (*fd_p);
+    struct adios_file_struct * fd = (struct adios_file_struct *) *fd_p;
+    *err = common_adios_close (fd);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -502,7 +503,7 @@ void FC_FUNC_(adios_timing_write_xml, ADIOS_TIMING_WRITE_XML) (int64_t * fd_p, c
 // group a list of vars into a composite group
 void FC_FUNC_(adios_declare_group, ADIOS_DECLARE_GROUP) 
     (int64_t * id, const char * name
-    ,const char * time_index, enum ADIOS_FLAG *stats
+    ,const char * time_index, enum ADIOS_STATISTICS_FLAG *stats
     ,int * err, int name_size, int time_index_size
     )
 {
@@ -513,8 +514,12 @@ void FC_FUNC_(adios_declare_group, ADIOS_DECLARE_GROUP)
     buf1 = futils_fstr_to_cstr (name, name_size);
     buf2 = futils_fstr_to_cstr (time_index, time_index_size);
 
+    enum ADIOS_STATISTICS_FLAG stat_flag = *stats;
+    if (stat_flag == adios_stat_no_do_not_use_this)
+        stat_flag = adios_stat_no;
+
     if (buf1 != 0 && buf2 != 0) {
-        int ret = adios_common_declare_group (id, buf1, adios_flag_yes, "", "", buf2, *stats);
+        int ret = adios_common_declare_group (id, buf1, adios_flag_yes, "", "", buf2, stat_flag);
         free (buf1);
         free (buf2);
         if (ret == 1) {
@@ -525,6 +530,26 @@ void FC_FUNC_(adios_declare_group, ADIOS_DECLARE_GROUP)
     *err = adios_errno;
 }
 
+int FC_FUNC_(adios_set_time_aggregation, ADIOS_SET_TIME_AGGREGATION)
+        (int64_t * group_id, int64_t * buffersize, int64_t * sync_group_id, int * err)
+{
+    adios_errno = err_no_error;
+    if (*group_id == 0) {
+        adios_error (err_invalid_group, "adios_set_time_aggregation() called with 0 argument\n");
+    }
+    else
+    {
+        struct adios_group_struct * g = (struct adios_group_struct *) *group_id;
+        struct adios_group_struct * sg = NULL;
+        if (*sync_group_id != 0)
+            sg = (struct adios_group_struct *) *sync_group_id;
+        uint64_t bufsize = (uint64_t) *buffersize;
+
+        adios_common_set_time_aggregation(g, bufsize, sg);
+    }
+    *err = adios_errno;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 // adios_common_define_var is in adios_internals.c
 // declare a single var as an entry in a group
diff --git a/src/core/adiosf_defs_mod.f90 b/src/core/adiosf_defs_mod.f90
index 2f6d826..3b626ea 100644
--- a/src/core/adiosf_defs_mod.f90
+++ b/src/core/adiosf_defs_mod.f90
@@ -64,6 +64,14 @@ module adios_defs_mod
     integer, parameter :: ADIOS_SELECTION_TYPE_AUTO         = 3
 
     !
+    ! Statistics option in adios_declare_group()
+    !
+    integer, parameter :: ADIOS_STAT_NO      = -1   ! turn off statistics generation
+    integer, parameter :: ADIOS_STAT_DEFAULT = 0    ! min + max only
+    integer, parameter :: ADIOS_STAT_FULL    = 1    ! all statistics turned on
+
+
+    !
     ! ADIOS error codes
     !
     integer, parameter :: err_no_error                        = 0
diff --git a/src/core/adiosf_write_mod.f90 b/src/core/adiosf_write_mod.f90
index 231b29f..195d9f3 100644
--- a/src/core/adiosf_write_mod.f90
+++ b/src/core/adiosf_write_mod.f90
@@ -113,6 +113,14 @@ module adios_write_mod
             integer,        intent(out) :: err
         end subroutine
 
+        subroutine adios_set_time_aggregation (group_id, buffersize, sync_group_id, err)
+            implicit none
+            integer*8,      intent(in)  :: group_id
+            integer*8,      intent(in)  :: buffersize
+            integer*8,      intent(in)  :: sync_group_id
+            integer,        intent(out) :: err
+        end subroutine
+
         subroutine adios_define_var (group_id, varname, path, vartype, dimensions, global_dimensions, local_offsets, id)
             implicit none
             integer*8,      intent(in)  :: group_id
@@ -645,7 +653,7 @@ module adios_write_mod
     end interface
 
 
-    contains
+contains
 
     !
     ! ADIOS_WRITE generic interface
@@ -653,3210 +661,3210 @@ module adios_write_mod
     ! Usage: call adios_write (fd, varname, data, err)
     !
     !
-        !
-        ! scalars
-        !
-
-        ! INTEGER*1 scalar
-        subroutine adios_write_int1_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*2 scalar
-        subroutine adios_write_int2_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*4 scalar
-        subroutine adios_write_int4_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4,      intent(in) :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*8 scalar
-        subroutine adios_write_int8_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*4 scalar
-        subroutine adios_write_real4_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,         intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*8 scalar
-        subroutine adios_write_real8_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,         intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) scalar
-        subroutine adios_write_complex8_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,        intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX scalar
-        subroutine adios_write_complex16_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,     intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! CHARACTER scalar (Same as 1D?)
-        !subroutine adios_write_char_d0 (fd, varname, data, err)
-        !    implicit none
-        !    integer*8,      intent(in)  :: fd
-        !    character(*),   intent(in)  :: varname
-        !    character(*),   intent(inout) :: data
-        !    integer,        intent(in)  :: err
-        !
-        !    call adios_write_f2c (fd, varname, data, err)
-        !end subroutine
-
-        ! LOGICAL*1 scalar
-        subroutine adios_write_logical1_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*2 scalar
-        subroutine adios_write_logical2_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*4 scalar
-        subroutine adios_write_logical4_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*8 scalar
-        subroutine adios_write_logical8_d0 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-
-        !
-        ! 1D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_int1_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! scalars
+    !
 
-        ! INTEGER*2 array
-        subroutine adios_write_int2_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 scalar
+    subroutine adios_write_int1_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 scalar
+    subroutine adios_write_int2_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 scalar
+    subroutine adios_write_int4_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4,      intent(in) :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 scalar
+    subroutine adios_write_int8_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 scalar
+    subroutine adios_write_real4_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,         intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 scalar
+    subroutine adios_write_real8_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,         intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) scalar
+    subroutine adios_write_complex8_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,        intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX scalar
+    subroutine adios_write_complex16_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,     intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER scalar (Same as 1D?)
+    !subroutine adios_write_char_d0 (fd, varname, data, err)
+    !    implicit none
+    !    integer*8,      intent(in)  :: fd
+    !    character(*),   intent(in)  :: varname
+    !    character(*),   intent(inout) :: data
+    !    integer,        intent(in)  :: err
+    !
+    !    call adios_write_f2c (fd, varname, data, err)
+    !end subroutine
+
+    ! LOGICAL*1 scalar
+    subroutine adios_write_logical1_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 scalar
+    subroutine adios_write_logical2_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 scalar
+    subroutine adios_write_logical4_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 scalar
+    subroutine adios_write_logical8_d0 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
 
-        ! INTEGER*4 array
-        subroutine adios_write_int4_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 1D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_int1_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_int2_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_int4_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_int8_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_real4_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(*), intent(out) :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_real8_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_complex8_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_complex16_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_char_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),   intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_logical1_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_logical2_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_logical4_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_logical8_d1 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-        ! INTEGER*8 array
-        subroutine adios_write_int8_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 2D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_int1_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_int2_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_int4_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_int8_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_real4_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_real8_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_complex8_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_complex16_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_char_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_logical1_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_logical2_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_logical4_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_logical8_d2 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-        ! REAL*4 array
-        subroutine adios_write_real4_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(*), intent(out) :: data
-            integer,        intent(in)  :: err
+    !
+    ! 3D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_int1_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_int2_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_int4_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_int8_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_real4_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_real8_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_complex8_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_complex16_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_char_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:),  intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_logical1_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_logical2_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_logical4_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_logical8_d3 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-        ! REAL*8 array
-        subroutine adios_write_real8_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 4D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_int1_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_int2_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_int4_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_int8_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_real4_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_real8_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_complex8_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_complex16_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_char_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_logical1_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_logical2_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_logical4_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_logical8_d4 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-        ! COMPLEX (*8) array
-        subroutine adios_write_complex8_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 5D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_int1_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_int2_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_int4_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_int8_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_real4_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_real8_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_complex8_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_complex16_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_char_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:,:,:),intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_logical1_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_logical2_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_logical4_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_logical8_d5 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_complex16_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 6D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_int1_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_int2_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_int4_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_int8_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_real4_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_real8_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_complex8_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_complex16_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_char_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:,:,:,:),intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_logical1_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_logical2_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_logical4_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_logical8_d6 (fd, varname, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_f2c (fd, varname, data, err)
+    end subroutine
 
-        ! CHARACTER array
-        subroutine adios_write_char_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),   intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! end of ADIOS_WRITE functions
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
 
-        ! LOGICAL*1 array
-        subroutine adios_write_logical1_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    !
+    ! ADIOS_WRITE_BYID generic interface
+    !
+    ! Usage: call adios_write_byid (fd, varid, data, err)
+    !
+    !
+    !
+    ! scalars
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 scalar
+    subroutine adios_write_byid_int1_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 scalar
+    subroutine adios_write_byid_int2_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 scalar
+    subroutine adios_write_byid_int4_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4,      intent(in) :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 scalar
+    subroutine adios_write_byid_int8_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 scalar
+    subroutine adios_write_byid_real4_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,         intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 scalar
+    subroutine adios_write_byid_real8_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,         intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) scalar
+    subroutine adios_write_byid_complex8_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,        intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX scalar
+    subroutine adios_write_byid_complex16_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,     intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER scalar (Same as 1D?)
+    !subroutine adios_write_byid_char_d0 (fd, varid, data, err)
+    !    implicit none
+    !    integer*8,      intent(in)  :: fd
+    !    integer*8,      intent(in)  :: varid
+    !    character(*),   intent(inout) :: data
+    !    integer,        intent(in)  :: err
+    !
+    !    call adios_write_byid_f2c (fd, varid, data, err)
+    !end subroutine
+
+    ! LOGICAL*1 scalar
+    subroutine adios_write_byid_logical1_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 scalar
+    subroutine adios_write_byid_logical2_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 scalar
+    subroutine adios_write_byid_logical4_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 scalar
+    subroutine adios_write_byid_logical8_d0 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8,      intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-        ! LOGICAL*2 array
-        subroutine adios_write_logical2_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 1D data
+    !
 
-        ! LOGICAL*4 array
-        subroutine adios_write_logical4_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_write_byid_int1_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_byid_int2_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_byid_int4_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_byid_int8_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_byid_real4_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,    dimension(*), intent(out) :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_byid_real8_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,   dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_byid_complex8_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,   dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_byid_complex16_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_byid_char_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        character(*),   intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_byid_logical1_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_byid_logical2_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_byid_logical4_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_byid_logical8_d1 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8, dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 2D data
+    !
 
-        ! LOGICAL*8 array
-        subroutine adios_write_logical8_d1 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_write_byid_int1_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_byid_int2_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_byid_int4_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_byid_int8_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_byid_real4_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,    dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_byid_real8_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,   dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_byid_complex8_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,   dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_byid_complex16_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_byid_char_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        character(*),dimension(*), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_byid_logical1_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_byid_logical2_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_byid_logical4_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_byid_logical8_d2 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8, dimension(:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 3D data
+    !
 
-        !
-        ! 2D data
-        !
+    ! INTEGER*1 array
+    subroutine adios_write_byid_int1_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_byid_int2_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_byid_int4_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_byid_int8_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_byid_real4_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,    dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_byid_real8_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,   dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_byid_complex8_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,   dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_byid_complex16_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_byid_char_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        character(*),dimension(:,:),  intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_byid_logical1_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_byid_logical2_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_byid_logical4_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_byid_logical8_d3 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8, dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-        ! INTEGER*1 array
-        subroutine adios_write_int1_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 4D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_byid_int1_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_byid_int2_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_byid_int4_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_byid_int8_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_byid_real4_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,    dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_byid_real8_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,   dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_byid_complex8_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,   dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_byid_complex16_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_byid_char_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        character(*),dimension(:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_byid_logical1_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_byid_logical2_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_byid_logical4_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_byid_logical8_d4 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8, dimension(:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-        ! INTEGER*2 array
-        subroutine adios_write_int2_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 5D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_byid_int1_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_byid_int2_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_byid_int4_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_byid_int8_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_byid_real4_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,    dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_byid_real8_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,   dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_byid_complex8_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,   dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_byid_complex16_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_byid_char_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        character(*),dimension(:,:,:,:),intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_byid_logical1_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_byid_logical2_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_byid_logical4_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_byid_logical8_d5 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8, dimension(:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-        ! INTEGER*4 array
-        subroutine adios_write_int4_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    ! 6D data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 array
+    subroutine adios_write_byid_int1_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*1, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_write_byid_int2_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*2, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_write_byid_int4_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*4, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_write_byid_int8_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        integer*8, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_write_byid_real4_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*4,    dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_write_byid_real8_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        real*8,   dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_write_byid_complex8_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex,   dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_write_byid_complex16_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        complex*16,dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_write_byid_char_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        character(*),dimension(:,:,:,:,:),intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_write_byid_logical1_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*1, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_write_byid_logical2_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*2, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_write_byid_logical4_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*4, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_write_byid_logical8_d6 (fd, varid, data, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        integer*8,      intent(in)  :: varid
+        logical*8, dimension(:,:,:,:,:,:), intent(in)  :: data
+        integer,        intent(in)  :: err
+
+        call adios_write_byid_f2c (fd, varid, data, err)
+    end subroutine
 
-        ! INTEGER*8 array
-        subroutine adios_write_int8_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! end of ADIOS_WRITE functions
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
 
-        ! REAL*4 array
-        subroutine adios_write_real4_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
 
-        ! REAL*8 array
-        subroutine adios_write_real8_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    !
+    !
+    ! ADIOS_READ generic interface
+    !
+    ! Usage: call adios_read (fd, varname, buffer, buffer_size, err)
+    !
+    !
+    !
+    ! scalar data
+    !
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    ! INTEGER*1 scalar
+    subroutine adios_read_int1_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 scalar
+    subroutine adios_read_int2_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 scalar
+    subroutine adios_read_int4_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 scalar
+    subroutine adios_read_int8_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 scalar
+    subroutine adios_read_real4_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,         intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 scalar
+    subroutine adios_read_real8_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,         intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) scalar
+    subroutine adios_read_complex8_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,        intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX scalar
+    subroutine adios_read_complex16_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,     intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER scalar
+    !subroutine adios_read_char_d0 (fd, varname, buffer, buffer_size, err)
+    !    implicit none
+    !    integer*8,      intent(in)  :: fd
+    !    character(*),   intent(in)  :: varname
+    !    character(*),   intent(out) :: buffer
+    !    integer*8,      intent(in)  :: buffer_size
+    !    integer,        intent(in)  :: err
+    !
+    !    call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    !end subroutine
+
+    ! LOGICAL*1 scalar
+    subroutine adios_read_logical1_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 scalar
+    subroutine adios_read_logical2_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 scalar
+    subroutine adios_read_logical4_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 scalar
+    subroutine adios_read_logical8_d0 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8,      intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-        ! COMPLEX (*8) array
-        subroutine adios_write_complex8_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 1D data
+    !
 
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_complex16_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_read_int1_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_read_int2_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_read_int4_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_read_int8_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_read_real4_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_read_real8_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_read_complex8_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_read_complex16_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_read_char_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),   intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_read_logical1_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_read_logical2_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_read_logical4_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_read_logical8_d1 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 2D buffer
+    !
 
-        ! CHARACTER array
-        subroutine adios_write_char_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_read_int1_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_read_int2_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_read_int4_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_read_int8_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_read_real4_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_read_real8_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_read_complex8_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_read_complex16_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_read_char_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(*), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_read_logical1_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_read_logical2_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_read_logical4_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_read_logical8_d2 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 3D buffer
+    !
 
-        ! LOGICAL*1 array
-        subroutine adios_write_logical1_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_read_int1_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_read_int2_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_read_int4_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_read_int8_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_read_real4_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_read_real8_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_read_complex8_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_read_complex16_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_read_char_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:),  intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_read_logical1_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_read_logical2_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_read_logical4_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_read_logical8_d3 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 4D buffer
+    !
 
-        ! LOGICAL*2 array
-        subroutine adios_write_logical2_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_read_int1_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_read_int2_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_read_int4_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_read_int8_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_read_real4_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_read_real8_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_read_complex8_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_read_complex16_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_read_char_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_read_logical1_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_read_logical2_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_read_logical4_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_read_logical8_d4 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 5D buffer
+    !
 
-        ! LOGICAL*4 array
-        subroutine adios_write_logical4_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_read_int1_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_read_int2_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_read_int4_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_read_int8_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_read_real4_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_read_real8_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_read_complex8_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_read_complex16_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_read_char_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:,:,:),intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_read_logical1_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_read_logical2_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_read_logical4_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_read_logical8_d5 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
+    !
+    ! 6D buffer
+    !
 
-        ! LOGICAL*8 array
-        subroutine adios_write_logical8_d2 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
+    ! INTEGER*1 array
+    subroutine adios_read_int1_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*1, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_read_int2_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*2, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_read_int4_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*4, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_read_int8_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        integer*8, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_read_real4_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*4,    dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_read_real8_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        real*8,   dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! COMPLEX (*8) array
+    subroutine adios_read_complex8_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex,   dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! DOUBLE-COMPLEX array
+    subroutine adios_read_complex16_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        complex*16,dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! CHARACTER array
+    subroutine adios_read_char_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        character(*),dimension(:,:,:,:,:),intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*1 array
+    subroutine adios_read_logical1_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*1, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*2 array
+    subroutine adios_read_logical2_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*2, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*4 array
+    subroutine adios_read_logical4_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*4, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
+
+    ! LOGICAL*8 array
+    subroutine adios_read_logical8_d6 (fd, varname, buffer, buffer_size, err)
+        implicit none
+        integer*8,      intent(in)  :: fd
+        character(*),   intent(in)  :: varname
+        logical*8, dimension(:,:,:,:,:,:), intent(out) :: buffer
+        integer*8,      intent(in)  :: buffer_size
+        integer,        intent(in)  :: err
+
+        call adios_read_f2c (fd, varname, buffer, buffer_size, err)
+    end subroutine
 
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        !
-        ! 3D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_int1_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_int2_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_int4_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_int8_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_real4_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_real8_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_complex8_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_complex16_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_char_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:),  intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_logical1_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_logical2_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_logical4_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_logical8_d3 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        !
-        ! 4D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_int1_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_int2_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_int4_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_int8_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_real4_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_real8_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_complex8_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_complex16_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_char_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_logical1_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_logical2_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_logical4_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_logical8_d4 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        !
-        ! 5D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_int1_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_int2_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_int4_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_int8_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_real4_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_real8_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_complex8_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_complex16_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_char_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:,:,:),intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_logical1_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_logical2_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_logical4_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_logical8_d5 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        !
-        ! 6D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_int1_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_int2_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_int4_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_int8_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_real4_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_real8_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_complex8_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_complex16_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_char_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:,:,:,:),intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_logical1_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_logical2_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_logical4_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_logical8_d6 (fd, varname, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_f2c (fd, varname, data, err)
-        end subroutine
-
-    ! end of ADIOS_WRITE functions
-
-
-    !
-    !
-    ! ADIOS_WRITE_BYID generic interface
-    !
-    ! Usage: call adios_write_byid (fd, varid, data, err)
-    !
-    !
-        !
-        ! scalars
-        !
-
-        ! INTEGER*1 scalar
-        subroutine adios_write_byid_int1_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 scalar
-        subroutine adios_write_byid_int2_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 scalar
-        subroutine adios_write_byid_int4_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4,      intent(in) :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 scalar
-        subroutine adios_write_byid_int8_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 scalar
-        subroutine adios_write_byid_real4_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,         intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 scalar
-        subroutine adios_write_byid_real8_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,         intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) scalar
-        subroutine adios_write_byid_complex8_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,        intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX scalar
-        subroutine adios_write_byid_complex16_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,     intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER scalar (Same as 1D?)
-        !subroutine adios_write_byid_char_d0 (fd, varid, data, err)
-        !    implicit none
-        !    integer*8,      intent(in)  :: fd
-        !    integer*8,      intent(in)  :: varid
-        !    character(*),   intent(inout) :: data
-        !    integer,        intent(in)  :: err
-        !
-        !    call adios_write_byid_f2c (fd, varid, data, err)
-        !end subroutine
-
-        ! LOGICAL*1 scalar
-        subroutine adios_write_byid_logical1_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 scalar
-        subroutine adios_write_byid_logical2_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 scalar
-        subroutine adios_write_byid_logical4_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 scalar
-        subroutine adios_write_byid_logical8_d0 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8,      intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-
-        !
-        ! 1D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_byid_int1_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_byid_int2_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_byid_int4_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_byid_int8_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_byid_real4_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,    dimension(*), intent(out) :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_byid_real8_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,   dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_byid_complex8_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,   dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_byid_complex16_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_byid_char_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            character(*),   intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_byid_logical1_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_byid_logical2_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_byid_logical4_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_byid_logical8_d1 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8, dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        !
-        ! 2D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_byid_int1_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_byid_int2_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_byid_int4_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_byid_int8_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_byid_real4_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,    dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_byid_real8_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,   dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_byid_complex8_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,   dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_byid_complex16_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_byid_char_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            character(*),dimension(*), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_byid_logical1_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_byid_logical2_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_byid_logical4_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_byid_logical8_d2 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8, dimension(:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        !
-        ! 3D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_byid_int1_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_byid_int2_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_byid_int4_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_byid_int8_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_byid_real4_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,    dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_byid_real8_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,   dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_byid_complex8_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,   dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_byid_complex16_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_byid_char_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            character(*),dimension(:,:),  intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_byid_logical1_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_byid_logical2_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_byid_logical4_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_byid_logical8_d3 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8, dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        !
-        ! 4D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_byid_int1_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_byid_int2_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_byid_int4_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_byid_int8_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_byid_real4_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,    dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_byid_real8_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,   dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_byid_complex8_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,   dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_byid_complex16_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_byid_char_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            character(*),dimension(:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_byid_logical1_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_byid_logical2_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_byid_logical4_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_byid_logical8_d4 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8, dimension(:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        !
-        ! 5D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_byid_int1_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_byid_int2_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_byid_int4_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_byid_int8_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_byid_real4_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,    dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_byid_real8_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,   dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_byid_complex8_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,   dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_byid_complex16_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_byid_char_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            character(*),dimension(:,:,:,:),intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_byid_logical1_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_byid_logical2_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_byid_logical4_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_byid_logical8_d5 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8, dimension(:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        !
-        ! 6D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_write_byid_int1_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*1, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_write_byid_int2_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*2, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_write_byid_int4_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*4, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_write_byid_int8_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            integer*8, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_write_byid_real4_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*4,    dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_write_byid_real8_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            real*8,   dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_write_byid_complex8_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex,   dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_write_byid_complex16_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            complex*16,dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_write_byid_char_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            character(*),dimension(:,:,:,:,:),intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_write_byid_logical1_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*1, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_write_byid_logical2_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*2, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_write_byid_logical4_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*4, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_write_byid_logical8_d6 (fd, varid, data, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            integer*8,      intent(in)  :: varid
-            logical*8, dimension(:,:,:,:,:,:), intent(in)  :: data
-            integer,        intent(in)  :: err
-
-            call adios_write_byid_f2c (fd, varid, data, err)
-        end subroutine
-
-    ! end of ADIOS_WRITE functions
-
-
-
-
-    !
-    !
-    ! ADIOS_READ generic interface
-    !
-    ! Usage: call adios_read (fd, varname, buffer, buffer_size, err)
-    !
-    !
-        !
-        ! scalar data
-        !
-
-        ! INTEGER*1 scalar
-        subroutine adios_read_int1_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 scalar
-        subroutine adios_read_int2_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 scalar
-        subroutine adios_read_int4_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 scalar
-        subroutine adios_read_int8_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 scalar
-        subroutine adios_read_real4_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,         intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 scalar
-        subroutine adios_read_real8_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,         intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) scalar
-        subroutine adios_read_complex8_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,        intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX scalar
-        subroutine adios_read_complex16_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,     intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER scalar
-        !subroutine adios_read_char_d0 (fd, varname, buffer, buffer_size, err)
-        !    implicit none
-        !    integer*8,      intent(in)  :: fd
-        !    character(*),   intent(in)  :: varname
-        !    character(*),   intent(out) :: buffer
-        !    integer*8,      intent(in)  :: buffer_size
-        !    integer,        intent(in)  :: err
-        !
-        !    call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        !end subroutine
-
-        ! LOGICAL*1 scalar
-        subroutine adios_read_logical1_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 scalar
-        subroutine adios_read_logical2_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 scalar
-        subroutine adios_read_logical4_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 scalar
-        subroutine adios_read_logical8_d0 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8,      intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-
-        !
-        ! 1D data
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_read_int1_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_read_int2_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_read_int4_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_read_int8_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_read_real4_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_read_real8_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_read_complex8_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_read_complex16_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_read_char_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),   intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_read_logical1_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_read_logical2_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_read_logical4_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_read_logical8_d1 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        !
-        ! 2D buffer
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_read_int1_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_read_int2_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_read_int4_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_read_int8_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_read_real4_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_read_real8_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_read_complex8_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_read_complex16_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_read_char_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(*), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_read_logical1_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_read_logical2_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_read_logical4_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_read_logical8_d2 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        !
-        ! 3D buffer
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_read_int1_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_read_int2_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_read_int4_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_read_int8_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_read_real4_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_read_real8_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_read_complex8_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_read_complex16_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_read_char_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:),  intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_read_logical1_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_read_logical2_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_read_logical4_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_read_logical8_d3 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        !
-        ! 4D buffer
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_read_int1_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_read_int2_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_read_int4_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_read_int8_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_read_real4_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_read_real8_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_read_complex8_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_read_complex16_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_read_char_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_read_logical1_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_read_logical2_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_read_logical4_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_read_logical8_d4 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        !
-        ! 5D buffer
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_read_int1_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_read_int2_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_read_int4_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_read_int8_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_read_real4_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_read_real8_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_read_complex8_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_read_complex16_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_read_char_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:,:,:),intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_read_logical1_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_read_logical2_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_read_logical4_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_read_logical8_d5 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        !
-        ! 6D buffer
-        !
-
-        ! INTEGER*1 array
-        subroutine adios_read_int1_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*1, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_read_int2_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*2, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_read_int4_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*4, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_read_int8_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            integer*8, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_read_real4_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*4,    dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_read_real8_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            real*8,   dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! COMPLEX (*8) array
-        subroutine adios_read_complex8_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex,   dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! DOUBLE-COMPLEX array
-        subroutine adios_read_complex16_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            complex*16,dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! CHARACTER array
-        subroutine adios_read_char_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            character(*),dimension(:,:,:,:,:),intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*1 array
-        subroutine adios_read_logical1_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*1, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*2 array
-        subroutine adios_read_logical2_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*2, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*4 array
-        subroutine adios_read_logical4_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*4, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-        ! LOGICAL*8 array
-        subroutine adios_read_logical8_d6 (fd, varname, buffer, buffer_size, err)
-            implicit none
-            integer*8,      intent(in)  :: fd
-            character(*),   intent(in)  :: varname
-            logical*8, dimension(:,:,:,:,:,:), intent(out) :: buffer
-            integer*8,      intent(in)  :: buffer_size
-            integer,        intent(in)  :: err
-
-            call adios_read_f2c (fd, varname, buffer, buffer_size, err)
-        end subroutine
-
-    ! end of ADIOS_READ functions
+    ! end of ADIOS_READ functions
 
     !
     !
@@ -3865,254 +3873,254 @@ module adios_write_mod
     ! Usage: call adios_define_attrribute_byvalue (group_id, attrname, path, nelems, values, err)
     !
     !
-        ! Special case: CHARACTER*1 array
-        ! This calls a different function to keep the string length information within
-        subroutine adios_define_attribute_byvalue_char_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            character(*),   intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_string (group_id, attrname, path, nelems, values, err)
-        end subroutine
-
-        ! Special case: CHARACTER*2 array
-        ! This calls a different function to keep the string length information within
-        subroutine adios_define_attribute_byvalue_char_d2 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            character(*), dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            !character(*) :: v1
-            !v1 = values(1)
-
-            if (nelems <= size(values)) then
-                !write (*,'("String Array: dims = ",i4, "string size=",i4)')  size(values,1), len(values)
-                !write (*,*)  shape(values)
-                call adios_define_attribute_byvalue_string_array (group_id, attrname, path, nelems, &
-                                                                  values, len(values), err)
-            else
-                write (*,'("ADIOS Attribute definition error: ",a,"/",a," string array size =",i4," nelems = ",i4)') &
-                    path, attrname, size(values), nelems
-            endif
-        end subroutine
-
-        ! INTEGER*1 scalar
-        subroutine adios_define_attribute_byvalue_int1_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*1,      intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double_complex, adios_byte, values, err)
-        end subroutine
-
-        ! INTEGER*2 scalar
-        subroutine adios_define_attribute_byvalue_int2_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*2,      intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_short, nelems, values, err)
-        end subroutine
-
-
-        ! INTEGER*4 scalar
-        subroutine adios_define_attribute_byvalue_int4_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*4,      intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_integer, nelems, values, err)
-        end subroutine
-
-        ! INTEGER*8 scalar
-        subroutine adios_define_attribute_byvalue_int8_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*8,      intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_long, nelems, values, err)
-        end subroutine
-
-        ! REAL*4 scalar
-        subroutine adios_define_attribute_byvalue_real4_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            real*4,         intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_real, nelems, values, err)
-        end subroutine
-
-        ! REAL*8 scalar
-        subroutine adios_define_attribute_byvalue_real8_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            real*8,         intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double, nelems, values, err)
-        end subroutine
-
-        ! COMPLEX*8 scalar
-        subroutine adios_define_attribute_byvalue_complex8_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            complex*8,      intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_complex, nelems, values, err)
-        end subroutine
-
-        ! COMPLEX*16 scalar
-        subroutine adios_define_attribute_byvalue_complex16_d0 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            complex*16,     intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double_complex, nelems, values, err)
-        end subroutine
-
-
-        ! INTEGER*1 array
-        subroutine adios_define_attribute_byvalue_int1_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*1, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_byte, nelems, values, err)
-        end subroutine
-
-        ! INTEGER*2 array
-        subroutine adios_define_attribute_byvalue_int2_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*2, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_short, nelems, values, err)
-        end subroutine
-
-        ! INTEGER*4 array
-        subroutine adios_define_attribute_byvalue_int4_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*4, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_integer, nelems, values, err)
-        end subroutine
-
-        ! INTEGER*8 array
-        subroutine adios_define_attribute_byvalue_int8_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            integer*8, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_long, nelems, values, err)
-        end subroutine
-
-        ! REAL*4 array
-        subroutine adios_define_attribute_byvalue_real4_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            real*4, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_real, nelems, values, err)
-        end subroutine
-
-        ! REAL*8 array
-        subroutine adios_define_attribute_byvalue_real8_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            real*8, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double, nelems, values, err)
-        end subroutine
-
-        ! COMPLEX*8 array
-        subroutine adios_define_attribute_byvalue_complex8_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            complex*8, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_complex, nelems, values, err)
-        end subroutine
-
-        ! COMPLEX*16 array
-        subroutine adios_define_attribute_byvalue_complex16_d1 (group_id, attrname, path, nelems, values, err)
-            implicit none
-            integer*8,      intent(in)  :: group_id
-            character(*),   intent(in)  :: attrname
-            character(*),   intent(in)  :: path
-            integer,        intent(in)  :: nelems
-            complex*16, dimension(:), intent(in)  :: values
-            integer,        intent(out) :: err
-
-            call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double_complex, nelems, values, err)
-        end subroutine
+    ! Special case: CHARACTER*1 array
+    ! This calls a different function to keep the string length information within
+    subroutine adios_define_attribute_byvalue_char_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        character(*),   intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_string (group_id, attrname, path, nelems, values, err)
+    end subroutine
+
+    ! Special case: CHARACTER*2 array
+    ! This calls a different function to keep the string length information within
+    subroutine adios_define_attribute_byvalue_char_d2 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        character(*), dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        !character(*) :: v1
+        !v1 = values(1)
+
+        if (nelems <= size(values)) then
+            !write (*,'("String Array: dims = ",i4, "string size=",i4)')  size(values,1), len(values)
+            !write (*,*)  shape(values)
+            call adios_define_attribute_byvalue_string_array (group_id, attrname, path, nelems, &
+                values, len(values), err)
+        else
+            write (*,'("ADIOS Attribute definition error: ",a,"/",a," string array size =",i4," nelems = ",i4)') &
+                path, attrname, size(values), nelems
+        endif
+    end subroutine
+
+    ! INTEGER*1 scalar
+    subroutine adios_define_attribute_byvalue_int1_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*1,      intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double_complex, adios_byte, values, err)
+    end subroutine
+
+    ! INTEGER*2 scalar
+    subroutine adios_define_attribute_byvalue_int2_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*2,      intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_short, nelems, values, err)
+    end subroutine
+
+
+    ! INTEGER*4 scalar
+    subroutine adios_define_attribute_byvalue_int4_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*4,      intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_integer, nelems, values, err)
+    end subroutine
+
+    ! INTEGER*8 scalar
+    subroutine adios_define_attribute_byvalue_int8_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*8,      intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_long, nelems, values, err)
+    end subroutine
+
+    ! REAL*4 scalar
+    subroutine adios_define_attribute_byvalue_real4_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        real*4,         intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_real, nelems, values, err)
+    end subroutine
+
+    ! REAL*8 scalar
+    subroutine adios_define_attribute_byvalue_real8_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        real*8,         intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double, nelems, values, err)
+    end subroutine
+
+    ! COMPLEX*8 scalar
+    subroutine adios_define_attribute_byvalue_complex8_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        complex*8,      intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_complex, nelems, values, err)
+    end subroutine
+
+    ! COMPLEX*16 scalar
+    subroutine adios_define_attribute_byvalue_complex16_d0 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        complex*16,     intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double_complex, nelems, values, err)
+    end subroutine
+
+
+    ! INTEGER*1 array
+    subroutine adios_define_attribute_byvalue_int1_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*1, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_byte, nelems, values, err)
+    end subroutine
+
+    ! INTEGER*2 array
+    subroutine adios_define_attribute_byvalue_int2_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*2, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_short, nelems, values, err)
+    end subroutine
+
+    ! INTEGER*4 array
+    subroutine adios_define_attribute_byvalue_int4_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*4, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_integer, nelems, values, err)
+    end subroutine
+
+    ! INTEGER*8 array
+    subroutine adios_define_attribute_byvalue_int8_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        integer*8, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_long, nelems, values, err)
+    end subroutine
+
+    ! REAL*4 array
+    subroutine adios_define_attribute_byvalue_real4_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        real*4, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_real, nelems, values, err)
+    end subroutine
+
+    ! REAL*8 array
+    subroutine adios_define_attribute_byvalue_real8_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        real*8, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double, nelems, values, err)
+    end subroutine
+
+    ! COMPLEX*8 array
+    subroutine adios_define_attribute_byvalue_complex8_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        complex*8, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_complex, nelems, values, err)
+    end subroutine
+
+    ! COMPLEX*16 array
+    subroutine adios_define_attribute_byvalue_complex16_d1 (group_id, attrname, path, nelems, values, err)
+        implicit none
+        integer*8,      intent(in)  :: group_id
+        character(*),   intent(in)  :: attrname
+        character(*),   intent(in)  :: path
+        integer,        intent(in)  :: nelems
+        complex*16, dimension(:), intent(in)  :: values
+        integer,        intent(out) :: err
+
+        call adios_define_attribute_byvalue_f2c (group_id, attrname, path, adios_double_complex, nelems, values, err)
+    end subroutine
 
     ! end of ADIOS_DEFINE_ATTRIBUTE_BYVALUE functions
 
diff --git a/src/core/bp_utils.c b/src/core/bp_utils.c
index 524423c..1526f9b 100644
--- a/src/core/bp_utils.c
+++ b/src/core/bp_utils.c
@@ -3143,7 +3143,7 @@ int is_global_array_generic (const struct adios_index_characteristic_dims_struct
  *  Note that adios_internals:adios_get_type_size returns
  *  strlen(var) for strings.
  */
-int bp_get_type_size (enum ADIOS_DATATYPES type, void * var)
+int bp_get_type_size (enum ADIOS_DATATYPES type, const void * var)
 {
     switch (type)
     {
@@ -3155,7 +3155,7 @@ int bp_get_type_size (enum ADIOS_DATATYPES type, void * var)
             if (!var)
                 return 1;
             else
-                return strlen ((char *) var) + 1;
+                return strlen ((const char *) var) + 1;
 
         case adios_string_array:
             return sizeof(char*);
diff --git a/src/core/bp_utils.h b/src/core/bp_utils.h
index f5fa920..d7aed08 100644
--- a/src/core/bp_utils.h
+++ b/src/core/bp_utils.h
@@ -52,7 +52,7 @@ int64_t get_var_start_index (struct adios_index_var_struct_v1 * v, int t);
 int64_t get_var_stop_index (struct adios_index_var_struct_v1 * v, int t);
 
 const char * bp_value_to_string (enum ADIOS_DATATYPES type, void * data);
-int bp_get_type_size (enum ADIOS_DATATYPES type, void * var);
+int bp_get_type_size (enum ADIOS_DATATYPES type, const void * var);
 int bp_get_dimension_generic(const struct adios_index_characteristic_dims_struct_v1 *dims,
                                     uint64_t *ldims, uint64_t *gdims, uint64_t *offsets);
 int bp_get_dimension_characteristics(struct adios_index_characteristic_struct_v1 *ch,
diff --git a/src/core/buffer.c b/src/core/buffer.c
index e6f0435..fcb6d44 100644
--- a/src/core/buffer.c
+++ b/src/core/buffer.c
@@ -86,6 +86,18 @@ int adios_databuffer_resize (struct adios_file_struct *fd, uint64_t size)
     else
     {
         retval = 1;
+        // try to alloc/realloc a buffer to max allowed size
+        // align usable buffer to BYTE_ALIGN bytes
+        void * b = realloc (fd->allocated_bufptr, max_size +  BYTE_ALIGN - 1);
+        if (b)
+        {
+            fd->allocated_bufptr = b;
+            uint64_t p = (uint64_t) fd->allocated_bufptr;
+            fd->buffer = (char *) ((p + BYTE_ALIGN - 1) & ~(BYTE_ALIGN - 1));
+            log_debug ("Data buffer extended from %" PRIu64 " to %" PRIu64 " bytes\n", fd->buffer_size, size);
+            fd->buffer_size = max_size;
+
+        }
         log_warn ("Cannot allocate %" PRIu64 " bytes for buffered output of group %s "
                 " because max allowed is %" PRIu64 " bytes. "
                 "Continue buffering with buffer size %" PRIu64 " MB\n",
diff --git a/src/core/common_adios.c b/src/core/common_adios.c
index 4357621..1b90ef1 100644
--- a/src/core/common_adios.c
+++ b/src/core/common_adios.c
@@ -68,18 +68,38 @@ int common_adios_init_noxml (MPI_Comm comm)
     return adios_errno;
 }
 
+
 ///////////////////////////////////////////////////////////////////////////////
 int common_adios_finalize (int mype)
 {
     struct adios_method_list_struct * m;
+    struct adios_group_list_struct * g;
+
+    //Time Aggregation: there may be time steps left in the time aggregated buffer, which
+    // needs to be dumped out before finalize
+    for (g = adios_get_groups(); g; g = g->next)
+    {
+        if (TimeAggregationInProgress(g->group)) {
+            //log_debug("time buffering enabled and data left in finalize... close file\n");
+            /* At this point the buffer of the last step has been closed and
+             * the index has been built but it was not yet passed on to the
+             * method's close function.
+             * do_ts_finalize signals this special case to common_adios_close()
+             */
+            SetTimeAggregationFlush(g->group, 1);
+            // => TimeAggregationIsFlushing => TimeAggregationLastStep
+            common_adios_close (g->group->ts_fd); // close file
+            SetTimeAggregation(g->group, 0); //turn off ts buffering
+        }
+    }
 
     adios_errno = err_no_error;
     for (m = adios_get_methods (); m; m = m->next)
     {
         if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_finalize_fn
-           )
+                && m->method->m != ADIOS_METHOD_NULL
+                && adios_transports [m->method->m].adios_finalize_fn
+        )
         {
             adios_transports [m->method->m].adios_finalize_fn (mype, m->method);
         }
@@ -96,12 +116,12 @@ int common_adios_finalize (int mype)
 
 ///////////////////////////////////////////////////////////////////////////////
 int common_adios_allocate_buffer (enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_alloc_when
-                                 ,uint64_t buffer_size)
+                                  ,uint64_t buffer_size)
 {
     adios_errno = err_no_error;
     log_warn ("adios_allocate_buffer is not supported anymore. "
-              "Use adios_set_max_buffer_size(size_in_MB) to set the maximum allowed "
-              "buffer size for each adios_open()...adios_close() operation.\n");
+            "Use adios_set_max_buffer_size(size_in_MB) to set the maximum allowed "
+            "buffer size for each adios_open()...adios_close() operation.\n");
     //adios_buffer_size_requested_set (buffer_size * 1024 * 1024);
     //adios_buffer_alloc_when_set (adios_buffer_alloc_when);
     //adios_set_buffer_size ();
@@ -112,36 +132,35 @@ int common_adios_allocate_buffer (enum ADIOS_BUFFER_ALLOC_WHEN adios_buffer_allo
 // Drew: used for experiments
 static uint32_t pinned_timestep = 0;
 void adios_pin_timestep(uint32_t ts) {
-  pinned_timestep = ts;
+    pinned_timestep = ts;
 }
 
+
 ///////////////////////////////////////////////////////////////////////////////
 static const char ADIOS_ATTR_PATH[] = "/__adios__";
 
 int common_adios_open (int64_t * fd_p, const char * group_name
-                ,const char * name, const char * file_mode, MPI_Comm comm
-               )
+                       ,const char * name, const char * file_mode, MPI_Comm comm
+)
 {
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_start ("adios_open_to_close");
     timer_start ("adios_open");
 #endif
 
-    int64_t group_id = 0;
-    struct adios_file_struct * fd = (struct adios_file_struct *)
-                                  malloc (sizeof (struct adios_file_struct));
-    struct adios_group_struct * g = 0;
-    struct adios_method_list_struct * methods = 0;
+    struct adios_group_struct * g = NULL;
+    struct adios_method_list_struct * methods = NULL;
+    struct adios_file_struct * fd = NULL;
     enum ADIOS_METHOD_MODE mode;
 
+    //printf("beginning of file open... bytes_written=%llu\n", fd->bytes_written);
+
     adios_errno = err_no_error;
-    adios_file_struct_init (fd);
-    adios_common_get_group (&group_id, group_name);
-    g = (struct adios_group_struct *) group_id;
+    g = adios_common_get_group (group_name);
     if (!g) {
         adios_error(err_invalid_group, 
-                "adios_open: try to open file %s with undefined group: %s\n", 
-                name, group_name);
+                    "adios_open: try to open file %s with undefined group: %s\n",
+                    name, group_name);
         *fd_p = 0;
         return adios_errno;
     }
@@ -160,88 +179,96 @@ int common_adios_open (int64_t * fd_p, const char * group_name
                 else
                 {
                     adios_error(err_invalid_file_mode,
-                        "adios_open: unknown file mode: %s, supported r,w,a,u\n",
-                        file_mode);
+                                "adios_open: unknown file mode: %s, supported r,w,a,u\n",
+                                file_mode);
 
                     *fd_p = 0;
 
                     return adios_errno;
                 }
 
-    fd->name = strdup (name);
-    fd->subfile_index = -1; // subfile index is by default -1
-    fd->group = g;
-    fd->mode = mode;
-    if (comm == MPI_COMM_NULL)
-        fd->comm = MPI_COMM_NULL;
-    else if (comm == MPI_COMM_SELF)
-        fd->comm = MPI_COMM_SELF;
+    //printf("ts_to buffer=%d max_tx=%d\n", g->ts_to_buffer, g->max_ts);
+    //Time Aggregation: buffering time steps doesn't need to init file open every time
+    if (TimeAggregationInProgress(g)) {
+        fd = g->ts_fd; //continue writing to the previous file
+        //   printf("skip file init... bytes_written=%llu file_handle_addr=%llu\n", fd->bytes_written, fd);
+        //  printf("open: fd->pgs_written->pg_start_in_file=%lld, fd->current_pg->pg_start_in_file=%lld\n", fd->pgs_written->pg_start_in_file, fd->current_pg->pg_start_in_file);
+        log_debug("TimeAggr: skip file name and group assignment\n");
+    }
+    else {
+
+        log_debug("TimeAggr: new open... file struct init\n");
+        fd = (struct adios_file_struct *) malloc (sizeof (struct adios_file_struct));
+        adios_file_struct_init (fd);
+        fd->name = strdup (name);
+        fd->subfile_index = -1; // subfile index is by default -1
+        fd->group = g;
+        fd->mode = mode;
+        if (comm == MPI_COMM_NULL)
+            fd->comm = MPI_COMM_NULL;
+        else if (comm == MPI_COMM_SELF)
+            fd->comm = MPI_COMM_SELF;
+        else
+            MPI_Comm_dup(comm, &fd->comm);
+    }
+
+    methods = g->methods;
+
+    //Time Aggregation: if time aggregation is turned on, only open() at the first time step
+    if (TimeAggregationInProgress(g))
+    {
+        *fd_p=(int64_t)fd;
+        //printf("time buffering.... skip open\n");
+        //printf("open: fd->offset=%llu, group_offset=%llu\n", fd->offset, g->group_offset);
+    }
     else
-        MPI_Comm_dup(comm, &fd->comm);
+    {
+        while (methods)
+        {
+            if (   methods->method->m != ADIOS_METHOD_UNKNOWN
+                    && methods->method->m != ADIOS_METHOD_NULL
+                    && adios_transports [methods->method->m].adios_open_fn
+            )
+            {
+                adios_transports [methods->method->m].adios_open_fn
+                (fd, methods->method, fd->comm);
+            }
+
+            methods = methods->next;
+        }
+
+        if (!adios_errno) 
+        {
+            *fd_p = (int64_t) fd;
+        } else 
+        {
+            //free (fd_p);
+            fd_p = 0L;
+        }
+    }
 
 
-#if 1
-    /* Time index magic done here */
-    if (mode == adios_mode_write)
+    /* Time index
+     * It increases in write/append mode, it does not change in update/read mode.
+     * This piece should be after calling the method's open function, which sets
+     * the time index from the existing file in case of append/update. */
+    if (mode == adios_mode_write || mode == adios_mode_append)
     {
         /* Traditionally, time=1 at the first step, and for subsequent file
            creations, time increases. Although, each file contains one step,
            the time index indicates that they are in a series.
-        */
-        g->time_index++;
-    }
-    /* FIXME: the time_index is updated in the actual method in case of append/update
-       so this code below is useless */
-#  if 0 
-    else if (mode == adios_mode_append)
-    {
+         */
         g->time_index++;
     }
-    else if (mode == adios_mode_update && g->time_index > 0)
-    {
-        /* Update from Append differs only in the time index. All methods had
-           code for Append, now for Update we decrease the counter by one,
-           for all methods. (But do not go below 1).
-        */
-        g->time_index--;
-    }
-#  endif
-    /* time starts from 1 not from 0 (traditionally; now no one cares */
+    /* time starts from 1 not from 0 in the BP design although it does not have any meaning */
     if (g->time_index == 0)
         g->time_index = 1;
-#else
-    /* old way pre-1.4*/
-    if (mode != adios_mode_read)
-        g->time_index++;
-#endif
 
     // Drew: for experiments
     if (pinned_timestep > 0)
         g->time_index = pinned_timestep;
 
-    methods = g->methods;
-    while (methods)
-    {
-        if (   methods->method->m != ADIOS_METHOD_UNKNOWN
-            && methods->method->m != ADIOS_METHOD_NULL
-            && adios_transports [methods->method->m].adios_open_fn
-           )
-        {
-            adios_transports [methods->method->m].adios_open_fn
-                                                 (fd, methods->method, fd->comm);
-        }
 
-        methods = methods->next;
-    }
-
-    if (!adios_errno) 
-    {
-        *fd_p = (int64_t) fd;
-    } else 
-    {
-        free (fd_p);
-        fd_p = 0L;
-    }
 
     if ( !adios_errno && fd->mode != adios_mode_read )
     {
@@ -253,37 +280,34 @@ int common_adios_open (int64_t * fd_p, const char * group_name
             gettimeofday(&tp, NULL);
             sprintf(epoch, "%d", (int) tp.tv_sec);
 
-            int def_adios_init_attrs = 1;
-            // if we append/update, define these attributes only at the first step
-            if (fd->mode != adios_mode_write && fd->group->time_index > 1)
-                def_adios_init_attrs = 0;
+            /* FIXME: this code works fine, it does not duplicate the attribute,
+               but the index will still contain all copies and the read will see
+               only the first one. Thus updating an attribute does not work
+               in practice.
+             */
 
-            if (def_adios_init_attrs) {
+            if (fd->group->time_index == 1)
+            {
                 log_debug ("Define ADIOS extra attributes, "
                         "time = %d, rank = %d, epoch = %s subfile=%d\n",
                         fd->group->time_index, fd->group->process_id, epoch, fd->subfile_index);
 
                 adios_common_define_attribute ((int64_t)fd->group, "version", ADIOS_ATTR_PATH,
-                        adios_string, VERSION, NULL);
+                                               adios_string, VERSION, NULL);
 
                 adios_common_define_attribute ((int64_t)fd->group, "create_time_epoch", ADIOS_ATTR_PATH,
-                        adios_integer, epoch, NULL);
+                                               adios_integer, epoch, NULL);
                 adios_common_define_attribute ((int64_t)fd->group, "update_time_epoch", ADIOS_ATTR_PATH,
-                        adios_integer, epoch, NULL);
+                                               adios_integer, epoch, NULL);
                 // id of last attribute is fd->group->member_count
                 fd->group->attrid_update_epoch = fd->group->member_count;
 
             }
-            /* FIXME: this code works fine, it does not duplicate the attribute,
-               but the index will still contain all copies and the read will see
-               only the first one. Thus updating an attribute does not work
-               in practice.
-             */
             else
             {
                 // update attribute of update time (define would duplicate it)
                 struct adios_attribute_struct * attr = adios_find_attribute_by_id
-                    (fd->group->attributes, fd->group->attrid_update_epoch);
+                        (fd->group->attributes, fd->group->attrid_update_epoch);
                 if (attr) {
                     log_debug ("Update ADIOS extra attribute name=%s, "
                             "time = %d, rank = %d, epoch = %s, subfile=%d\n",
@@ -297,9 +321,18 @@ int common_adios_open (int64_t * fd_p, const char * group_name
         }
 
         /* Add first PG to the group */
-        assert (!fd->pgs_written);
-        assert (!fd->current_pg);
+        if (NotTimeAggregated(g) || TimeAggregationJustBegan(g))
+        {
+            assert (!fd->pgs_written); // the start of the PG list
+            assert (!fd->current_pg);  // the last of the PG list
+        }
+        //printf("rank %d: fd->bytes-written=%llu\n",fd->group->process_id, fd->bytes_written);
         add_new_pg_written (fd);
+        //keep a record of the PG offsets.
+        // FIXME: Time Aggregation: Assume every process writes the same amount of data
+        if(TimeAggregated(g))
+            fd->current_pg->pg_start_in_file=fd->bytes_written;
+
 
 
 #ifdef ADIOS_TIMERS
@@ -309,61 +342,83 @@ int common_adios_open (int64_t * fd_p, const char * group_name
 
         /* Now ask the methods if anyone wants common-layer BP formatted buffering */
         methods = g->methods;
-        while (methods)
+
+        if (NotTimeAggregated(g) || TimeAggregationJustBegan(g))
         {
-            enum BUFFERING_STRATEGY bufstrat = no_buffering;
-            if (   methods->method->m != ADIOS_METHOD_UNKNOWN
-                    && methods->method->m != ADIOS_METHOD_NULL
-                    && adios_transports [methods->method->m].adios_should_buffer_fn
-               )
+            while (methods)
             {
-                bufstrat = adios_transports [methods->method->m].
-                                            adios_should_buffer_fn (fd, methods->method);
-            }
+                enum BUFFERING_STRATEGY bufstrat = no_buffering;
+                if (   methods->method->m != ADIOS_METHOD_UNKNOWN
+                        && methods->method->m != ADIOS_METHOD_NULL
+                        && adios_transports [methods->method->m].adios_should_buffer_fn
+                )
+                {
+                    bufstrat = adios_transports [methods->method->m].
+                            adios_should_buffer_fn (fd, methods->method);
+                }
 
-            if (bufstrat != no_buffering) {
-                fd->shared_buffer = adios_flag_yes;
-                fd->bufstrat = bufstrat;
-                /* FIXME: last method determines the value of buffering strategy here. This whole
-                   buffer overflow thing does not work if there are multiple methods called 
-                   and they want something else (stop vs continue vs continue with new PG
-                 */
-            }
+                if (bufstrat != no_buffering) {
+                    fd->shared_buffer = adios_flag_yes;
+                    fd->bufstrat = bufstrat;
+                    /* FIXME: last method determines the value of buffering strategy here. This whole
+                       buffer overflow thing does not work if there are multiple methods called 
+                       and they want something else (stop vs continue vs continue with new PG
+                     */
+                }
 
-            methods = methods->next;
+                methods = methods->next;
+            }
         }
 
-
         if (fd->bufstrat != no_buffering)
         {
             /* Allocate BP buffer with remembered size or max size or default size */
             uint64_t bufsize;
-            if (g->last_buffer_size > 0)
-                bufsize = g->last_buffer_size;
-            else
-                bufsize = adios_databuffer_get_extension_size (fd);
 
-            if (!adios_databuffer_resize (fd, bufsize)) 
-            {
-                fd->bufstate = buffering_ongoing;
+            if (NotTimeAggregated(g)) {
+                if (g->last_buffer_size > 0)
+                    bufsize = g->last_buffer_size;
+                else
+                    bufsize = adios_databuffer_get_extension_size (fd);
+            } else {
+                /* Time Aggregation: set the buffer size at the first time step to be buffered.
+                   ts buffering doesn't need buffer extension,
+                   only one time allocation at the first time step
+                 */
+                if (TimeAggregationJustBegan(g)) {
+                    adios_databuffer_set_max_size(g->ts_buffsize);
+                    bufsize=g->ts_buffsize;
+                }
+            }
 
-                // write the process group header
-                adios_write_open_process_group_header_v1 (fd);
+            //printf("==open bufsize=%llu\n", bufsize);
 
-                // setup for writing vars
-                adios_write_open_vars_v1 (fd);
-            }
-            else
+            //Time Aggregation: when ts buffering is on, only the first step needs to
+            //allocate the buffer
+            if (NotTimeAggregated(g) || TimeAggregationJustBegan(g))
             {
-                fd->bufstate = buffering_stopped;
-                adios_error (err_no_memory, 
-                             "Cannot allocate %" PRIu64 " bytes for buffered output "
-                             "of group %s in adios_open(). Output will fail.\n", 
-                             fd->buffer_size, g->name);
-                return adios_errno;
+                if (adios_databuffer_resize (fd, bufsize))
+                {
+                    fd->bufstate = buffering_stopped;
+                    adios_error (err_no_memory, 
+                                 "Cannot allocate %" PRIu64 " bytes for buffered output "
+                                 "of group %s in adios_open(). Output will fail.\n", 
+                                 fd->buffer_size, g->name);
+                    return adios_errno;
+                }
             }
+            fd->bufstate = buffering_ongoing;
+
+            // write the process group header
+            adios_write_open_process_group_header_v1 (fd);
+
+            // setup for writing vars
+            adios_write_open_vars_v1 (fd);
+
         }
 
+        //printf("end of adios_open fd->offset=%llu bytes_written=%llu\n", fd->offset, fd->bytes_written);
+
     }
 
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
@@ -380,9 +435,12 @@ int common_adios_group_size (int64_t fd_p, uint64_t data_size, uint64_t * total_
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_start ("adios_group_size");
 #endif
+    //printf("enter adios_group_size datasize= %llu\n", data_size);
 
     adios_errno = err_no_error;
-    struct adios_file_struct * fd = (struct adios_file_struct *) fd_p;
+    struct adios_file_struct * fd; 
+    fd = (struct adios_file_struct *) fd_p;
+
     if (!fd)
     {
         adios_error (err_invalid_file_pointer, "Invalid handle passed to adios_group_size\n");
@@ -394,7 +452,7 @@ int common_adios_group_size (int64_t fd_p, uint64_t data_size, uint64_t * total_
     {
         *total_size = 0;
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
-    timer_stop ("adios_group_size");
+        timer_stop ("adios_group_size");
 #endif
         return err_no_error;
     }
@@ -409,6 +467,7 @@ int common_adios_group_size (int64_t fd_p, uint64_t data_size, uint64_t * total_
     data_size += fd->group->tv_size;
 #endif
 
+
     uint64_t overhead = adios_calc_overhead_v1 (fd);
     *total_size = data_size + overhead;
 
@@ -432,9 +491,9 @@ int common_adios_group_size (int64_t fd_p, uint64_t data_size, uint64_t * total_
         if (adios_databuffer_resize (fd, *total_size))
         {
             log_warn ("Cannot reallocate data buffer to %" PRIu64 " bytes "
-                    "for group %s in adios_group_size(). Continue buffering "
-                    "with buffer size %" PRIu64 " MB\n",
-                    *total_size, fd->group->name, fd->buffer_size/1048576L);
+                      "for group %s in adios_group_size(). Continue buffering "
+                      "with buffer size %" PRIu64 " MB\n",
+                      *total_size, fd->group->name, fd->buffer_size/1048576L);
         }
     }
 
@@ -552,6 +611,7 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
     // as we can't do this after the data is transformed
     adios_generate_var_characteristics_v1 (fd, v);
 
+
     uint64_t vsize = 0;
     if (fd->bufstate == buffering_ongoing)
     {
@@ -561,6 +621,8 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
 
         if (fd->buffer_size < fd->offset + vsize)
         {
+            //    printf("adios_write fd->offset=%llu for variable= %s buffer_size=%llu\n", fd->offset, v->name, fd->buffer_size);
+            //            printf("max_ts=%d ts_to_buffer=%d\n", fd->group->max_ts, fd->group->ts_to_buffer);
             /* Trouble: this variable does not fit into the current buffer */
             // First, try to realloc the buffer 
             uint64_t extrasize = adios_databuffer_get_extension_size (fd);
@@ -585,7 +647,7 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
                     if (   m->method->m != ADIOS_METHOD_UNKNOWN
                             && m->method->m != ADIOS_METHOD_NULL
                             && adios_transports [m->method->m].adios_buffer_overflow_fn
-                       )
+                    )
                     {
                         adios_transports [m->method->m].adios_buffer_overflow_fn (fd, m->method);
                     }
@@ -601,9 +663,9 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
                         if (adios_databuffer_resize (fd, vsize+1024))
                         {
                             adios_error (err_no_memory, "adios_write(): buffer cannot accommodate variable %s/%s "
-                                    "with its storage size of %" PRIu64 " bytes at all. "
-                                    "No more variables will be written.\n", v->path, v->name, vsize);
-                                    //"This variable won't be written.\n", v->path, v->name, vsize);
+                                         "with its storage size of %" PRIu64 " bytes at all. "
+                                         "No more variables will be written.\n", v->path, v->name, vsize);
+                            //"This variable won't be written.\n", v->path, v->name, vsize);
                             fd->bufstate = buffering_stopped;
                             /* FIXME: This stops all writing, not just this variable! */
                             /* FIXME: so maybe we should give the method a chance to write this variable directly? */
@@ -649,7 +711,7 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
     else // Else, do a transform
     {
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
-    timer_start ("adios_transform");
+        timer_start ("adios_transform");
 #endif
         int success = common_adios_write_transform_helper(fd, v);
         if (success) {
@@ -660,7 +722,7 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
             // FIXME: Reverse the transform metadata and write raw data as usual
         }
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
-    timer_stop ("adios_transform");
+        timer_stop ("adios_transform");
 #endif
     }
 
@@ -673,10 +735,10 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
             if (   m->method->m != ADIOS_METHOD_UNKNOWN
                     && m->method->m != ADIOS_METHOD_NULL
                     && adios_transports [m->method->m].adios_write_fn
-               )
+            )
             {
                 adios_transports [m->method->m].adios_write_fn
-                    (fd, v, var, m->method);
+                (fd, v, var, m->method);
             }
 
             m = m->next;
@@ -701,7 +763,7 @@ int common_adios_write (struct adios_file_struct * fd, struct adios_var_struct *
             free(v->adata);
         }
         v->data = v->adata = 0; // throw away pointers to user data in case of arrays to avoid trying
-                                // to free them in possible forthcoming adios_write() of the same variable
+        // to free them in possible forthcoming adios_write() of the same variable
     }
 
     if (!adios_errno) {
@@ -804,9 +866,9 @@ int common_adios_write_byid (struct adios_file_struct * fd, struct adios_var_str
 
 ///////////////////////////////////////////////////////////////////////////////
 int common_adios_get_write_buffer (int64_t fd_p, const char * name
-                           ,uint64_t * size
-                           ,void ** buffer
-                           )
+                                   ,uint64_t * size
+                                   ,void ** buffer
+)
 {
     struct adios_file_struct * fd = (struct adios_file_struct *) fd_p;
     adios_errno = err_no_error;
@@ -840,12 +902,12 @@ int common_adios_get_write_buffer (int64_t fd_p, const char * name
     while (m)
     {
         if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_get_write_buffer_fn
-           )
+                && m->method->m != ADIOS_METHOD_NULL
+                && adios_transports [m->method->m].adios_get_write_buffer_fn
+        )
         {
             adios_transports [m->method->m].adios_get_write_buffer_fn
-                                (fd, v, size, buffer, m->method);
+            (fd, v, size, buffer, m->method);
             m = 0;
         }
         else
@@ -858,8 +920,8 @@ int common_adios_get_write_buffer (int64_t fd_p, const char * name
 ///////////////////////////////////////////////////////////////////////////////
 
 int common_adios_read (int64_t fd_p, const char * name, void * buffer
-               ,uint64_t buffer_size
-               )
+                       ,uint64_t buffer_size
+)
 {
     struct adios_file_struct * fd = (struct adios_file_struct *) fd_p;
     adios_errno = err_no_error;
@@ -895,17 +957,17 @@ int common_adios_read (int64_t fd_p, const char * name, void * buffer
         while (m)
         {
             if (   m->method->m != ADIOS_METHOD_UNKNOWN
-                && m->method->m != ADIOS_METHOD_NULL
-                && adios_transports [m->method->m].adios_read_fn
-               )
+                    && m->method->m != ADIOS_METHOD_NULL
+                    && adios_transports [m->method->m].adios_read_fn
+            )
             {
                 adios_transports [m->method->m].adios_read_fn
-                                     (fd, v, buffer, buffer_size, m->method);
+                (fd, v, buffer, buffer_size, m->method);
                 m = 0;
             }
             else
                 m = m->next;
-    }
+        }
     }
     else
     {
@@ -974,8 +1036,8 @@ int common_adios_set_path (int64_t fd_p, const char * path)
 // The variable is not replaced with the new path in the hash table here, so
 // it is still found using the old path!
 int common_adios_set_path_var (int64_t fd_p, const char * path
-                       ,const char * name
-                       )
+                               ,const char * name
+)
 {
     struct adios_file_struct * fd = (struct adios_file_struct *) fd_p;
     adios_errno = err_no_error;
@@ -1033,12 +1095,12 @@ int common_adios_end_iteration ()
     for (m = adios_get_methods (); m; m = m->next)
     {
         if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_end_iteration_fn
-           )
+                && m->method->m != ADIOS_METHOD_NULL
+                && adios_transports [m->method->m].adios_end_iteration_fn
+        )
         {
             adios_transports [m->method->m].adios_end_iteration_fn
-                                                (m->method);
+            (m->method);
         }
     }
 
@@ -1055,12 +1117,12 @@ int common_adios_start_calculation ()
     for (m = adios_get_methods (); m; m = m->next)
     {
         if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_start_calculation_fn
-           )
+                && m->method->m != ADIOS_METHOD_NULL
+                && adios_transports [m->method->m].adios_start_calculation_fn
+        )
         {
             adios_transports [m->method->m].adios_start_calculation_fn
-                                                  (m->method);
+            (m->method);
         }
     }
 
@@ -1077,27 +1139,27 @@ int common_adios_stop_calculation ()
     for (m = adios_get_methods (); m; m = m->next)
     {
         if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_stop_calculation_fn
-           )
+                && m->method->m != ADIOS_METHOD_NULL
+                && adios_transports [m->method->m].adios_stop_calculation_fn
+        )
         {
             adios_transports [m->method->m].adios_stop_calculation_fn
-                                                   (m->method);
+            (m->method);
         }
     }
 
     return adios_errno;
 }
 
+
 ///////////////////////////////////////////////////////////////////////////////
-int common_adios_close (int64_t fd_p)
+int common_adios_close (struct adios_file_struct * fd)
 {
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_start ("adios_close");
 #endif
     adios_errno = err_no_error;
 
-    struct adios_file_struct * fd = (struct adios_file_struct *) fd_p;
     if (!fd)
     {
         adios_error (err_invalid_file_pointer, "Invalid handle passed to adios_close\n");
@@ -1110,8 +1172,8 @@ int common_adios_close (int64_t fd_p)
     {
         // nothing to do so just return
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
-    timer_stop ("adios_close");
-    timer_stop ("adios_open_to_close");
+        timer_stop ("adios_close");
+        timer_stop ("adios_open_to_close");
 #endif
         return 0;
     }
@@ -1126,8 +1188,10 @@ int common_adios_close (int64_t fd_p)
     struct adios_attribute_struct * a = fd->group->attributes;
     struct adios_var_struct * v = fd->group->vars;
 
-    if (fd->mode != adios_mode_read )
+    if (fd->mode != adios_mode_read && !TimeAggregationIsFlushing(fd->group))
     {
+        //printf("=====common_adios_close offset=%llu %llu\n max_ts=%d ts_to_buffer=%d \n", fd->pgs_written->pg_start_in_file, fd->current_pg->pg_start_in_file, fd->group->max_ts, fd->group->ts_to_buffer);
+        //        fd->current_pg=fd->pgs_written;
         if (fd->bufstate == buffering_ongoing)
         {
             adios_write_close_vars_v1 (fd);
@@ -1153,7 +1217,14 @@ int common_adios_close (int64_t fd_p)
             {
                 /* Trouble, attributes just don't fit into the end of buffer */
                 // try to extend the buffer first
-                if (adios_databuffer_resize (fd, fd->buffer_size + asize))
+                log_debug("Need more space for attributes in close(). "
+                        "Current buffer usage=%" PRIu64 " Attributes need %" PRIu64 " bytes "
+                        "var_start offset=%" PRIu64 " and bytes_written=%" PRIu64
+                        "\n",
+                        fd->offset, asize, fd->vars_start, fd->bytes_written
+                        );
+
+                if (adios_databuffer_resize (fd, fd->offset + asize))
                 {
                     /* FIXME:  Well, drop them in this case */
                     log_error ("adios_close(): There is not enough buffer to write the attributes. "
@@ -1177,6 +1248,28 @@ int common_adios_close (int64_t fd_p)
         }
     }
 
+
+    if (TimeAggregationJustBegan(fd->group))
+    {
+        // first close in time aggregation: we need to figure out how many
+        // time steps we can buffer given the buffer size
+        if( fd->group->ts_to_buffer > 0 && fd->group->ts_buffsize > 0) {
+            fd->group->max_ts = fd->group->ts_buffsize/fd->bytes_written;
+            // max_ts may be different on different processes, we need to use the minimum of them
+            int min_max_ts;
+            MPI_Allreduce(&fd->group->max_ts, &min_max_ts, 1, MPI_INT, MPI_MIN, fd->comm);
+            fd->group->max_ts = min_max_ts;
+            fd->group->ts_to_buffer = fd->group->max_ts-1; // we already have one in our hand
+            //    printf("ts_buffsize=%llu bytes_writen=%llu\n", fd->group->ts_buffsize, fd->bytes_written);
+            //    printf("max_ts=%d ts_to_buffer=%d\n", fd->group->max_ts, fd->group->ts_to_buffer);
+        }
+        // if we can only have one step in the buffer, now TimeAggregationLastStep() holds.
+        // TimeAggregationJustBegan() still holds (fd->group->ts_fd == NULL).
+
+        fd->group->ts_fd = fd;
+        // TimeAggregationJustBegan() now moved into TimeAggregationInProgress()
+    }
+
     // in order to get the index assembled, we need to do it in the
     // transport once we have collected all of the pieces
 
@@ -1184,38 +1277,122 @@ int common_adios_close (int64_t fd_p)
     for (;m; m = m->next)
     {
         if (   m->method->m != ADIOS_METHOD_UNKNOWN
-            && m->method->m != ADIOS_METHOD_NULL
-            && adios_transports [m->method->m].adios_close_fn
-           )
+                && m->method->m != ADIOS_METHOD_NULL
+                && adios_transports [m->method->m].adios_close_fn
+        )
         {
-            adios_transports [m->method->m].adios_close_fn
-                                 (fd, m->method);
+
+            if (NotTimeAggregated(fd->group))
+            {
+                adios_transports [m->method->m].adios_close_fn
+                (fd, m->method);
+            }
+            else
+            {
+                if (!TimeAggregationIsFlushing(fd->group))
+                {
+                    // Time Aggregation: build index for current step and merge it in to
+                    // the aggregated index
+                    struct adios_index_struct_v1 * current_index;
+                    current_index=adios_alloc_index_v1(1);
+                    adios_build_index_v1 (fd, current_index);
+                    //printf("current->index time=%d offset=%llu\n", current_index->vars_root->characteristics[0].time_index, current_index->vars_root->characteristics[0].offset);
+                    if (fd->group->index == NULL)
+                    {
+                        //first time step, we just built the index for the group
+                        fd->group->index = current_index;
+                    }
+                    else
+                    {
+                        adios_merge_index_v1 (fd->group->index, current_index->pg_root,
+                                current_index->vars_root, current_index->attrs_root, 1);
+                        adios_free_index_v1 (current_index);
+                    }
+                    //printf("fd->group->index time=%d offset=%llu\n", fd->group->index->vars_root->characteristics[1].time_index, fd->group->index->vars_root->characteristics[1].offset);
+                }
+
+                if (TimeAggregationLastStep(fd->group))
+                {
+                    // in last step, move the PG pointer to the first pg
+                    // to build correct starting offset of this process for all aggregated steps
+                    fd->current_pg=fd->pgs_written;
+                    fd->group->built_index=1;
+                    //printf("bytes-writen=%llu time index=%lu\n", fd->bytes_written, fd->group->index->pg_root->time_index);
+
+                    adios_transports [m->method->m].adios_close_fn
+                    (fd, m->method);
+
+                    /* the method clears the full index data including the one built here.
+                     * we need to just free the container structure.
+                     */
+                    adios_free_index_v1 (fd->group->index);
+                    fd->group->index = NULL;
+                }
+            }
         }
     }
 
-    while (v)
+
+    /* Synced groups for time-aggregation.
+     * Force close on those groups that are time-aggregated and are synced with this group
+     */
+    if (NotTimeAggregated(fd->group) || TimeAggregationLastStep(fd->group))
     {
-        v->write_offset = 0;
-        if (v->adata)
+        if (TimeAggregationIsaSyncGroup(fd->group))
         {
-            free (v->adata);
-            v->data = v->adata = 0;
+            struct adios_group_struct ** syncedgroups;
+            int ngroups, i;
+            TimeAggregationGetSyncedGroups(fd->group, &syncedgroups, &ngroups );
+            for (i=0; i<ngroups; i++)
+            {
+                struct adios_group_struct *sg = syncedgroups[i];
+                if (sg->ts_fd != NULL)
+                {
+                    if (fd->group->process_id == 0) {
+                        log_info ("Sync flush group '%s' because we just wrote group '%s'. "
+                                "Synced group size is currently %" PRIu64 " bytes holding %d steps\n",
+                                sg->name, fd->group->name, sg->ts_fd->bytes_written,
+                                sg->max_ts-sg->ts_to_buffer-1);
+                    }
+                    SetTimeAggregationFlush(sg, 1);
+                    // => TimeAggregationIsFlushing => TimeAggregationLastStep
+                    common_adios_close (sg->ts_fd); // close file for sync'd group
+                    SetTimeAggregationFlush(sg, 0);
+                }
+            }
         }
-
-        v = v->next;
     }
 
-    /* clean-up all copied variables with statistics and data in all PGs attached to this file */
-    adios_free_pglist (fd);
 
-    if (fd->name)
+    //Time Aggregation: only free the buffer if 1) we are not buffering time steps;
+    //2) we have enough time steps buffered  
+    //printf("close: do_ts_aggr=%d  max_ts=%d ts_to_buffer=%d\n", fd->group->do_ts_aggr, fd->group->max_ts, fd->group->ts_to_buffer);
+    if (NotTimeAggregated(fd->group) || TimeAggregationLastStep(fd->group))
     {
-        free (fd->name);
-        fd->name = 0;
-    }
+        while (v)
+        {
+            v->write_offset = 0;
+            if (v->adata)
+            {
+                free (v->adata);
+                v->data = v->adata = 0;
+            }
+
+            v = v->next;
+        }
+
+        /* clean-up all copied variables with statistics and data in all PGs attached to this file */
+        adios_free_pglist (fd);
+
+        if (fd->name)
+        {
+            free (fd->name);
+            fd->name = 0;
+        }
 
-    if (fd->comm != MPI_COMM_NULL && fd->comm != MPI_COMM_SELF) {
-        MPI_Comm_free (&fd->comm);
+        if (fd->comm != MPI_COMM_NULL && fd->comm != MPI_COMM_SELF) {
+            MPI_Comm_free (&fd->comm);
+        }
     }
 
 #ifdef ADIOS_TIMER_EVENTS
@@ -1224,36 +1401,84 @@ int common_adios_close (int64_t fd_p)
     int name_len = strlen (fd->name);
     int fn_len = name_len + strlen (extension) + 1;
     char* fn = (char*) malloc (sizeof (char) * fn_len);
-    
+
     sprintf (fn, "%s%s", fd->name, extension);
 
     adios_timing_write_xml_common (fd_p, fn);
 #endif
 
 
+    //Time Aggregation: add time step aggregation logic
+    //ts aggregation will keep the buffer for next time steps
+    //only free the buffer when ts aggregation is not required, or it
+    //has reached the MAX_TS. 
+    //printf("close: bytes_written=%llu buffer_siz=%llu fd->group->last_buffer_size=%llu\n", fd->bytes_written, fd->buffer_size, fd->group->last_buffer_size);
     if (fd->bufstrat != no_buffering)
     {
+        //printf("rank %d group %s last buffer size = %" PRIu64 " buffer_size = %" PRIu64 "\n",
+        //        fd->group->process_id, fd->group->name, fd->group->last_buffer_size, fd->buffer_size);
+
         if (fd->group->last_buffer_size < fd->buffer_size) {
-            // remember how much buffer we used for the next cycle
-            fd->group->last_buffer_size = fd->buffer_size;
+            // Remember how much buffer we used for the next cycle.
+            // Time Aggregation: with ts buffering, it will be the total amount of data
+            // written; however last_buffer_size isn't used anyways
+            if(TimeAggregated(fd->group))
+                fd->group->last_buffer_size = fd->buffer_size;
+            else
+                fd->group->last_buffer_size = fd->bytes_written;
+        }
+        if (NotTimeAggregated(fd->group) || TimeAggregationLastStep(fd->group)) {
+            adios_databuffer_free (fd);
         }
-        adios_databuffer_free (fd);
     }
 
-    free (fd);
+    if (TimeAggregated(fd->group))
+    {
+        if (TimeAggregationLastStep(fd->group))
+        {
+            //Time Aggregation: reset the ts counter when the last ts is in
+            //printf("group %s reset ts_to_buffer to %d\n", fd->group->name, fd->group->max_ts);
+            fd->group->ts_to_buffer = fd->group->max_ts;
+            fd->group->ts_fd = NULL;
+            free (fd);
+        }
+        else
+        {
+            // fd->group->new_write_offset=fd->current_pg->pg_start_in_file+
+            fd->group->ts_to_buffer--;
+            // TimeAggregationInProgress() may have moved into
+            //   TimeAggregationInProgress && TimeAggregationLastStep (i.e. ts_to_buffer==0)
+            //printf("didn't free fd, continue buffering addr=%lld\n", fd_p);
+        }
+    }
+    else
+    {
+        free (fd);
+    }
+
+    //printf("close file==============\n");
+    /*
+    printf("close: do_ts_aggr=%d  max_ts=%d ts_to_buffer=%d\n",
+            fd->group->do_ts_aggr, fd->group->max_ts, fd->group->ts_to_buffer);
+
+    printf("close: fd->offset=%lld, group_offset=%lld\n", fd->offset,
+            fd->group->group_offset); 
 
+    printf("close: fd->pgs_written->pg_start_in_file=%lld, fd->current_pg->pg_start_in_file=%lld\n", 
+            fd->pgs_written->pg_start_in_file, fd->current_pg->pg_start_in_file);
+     */
 #if defined(WITH_NCSU_TIMER) && defined(TIMER_LEVEL) && (TIMER_LEVEL <= 0)
     timer_stop ("adios_close");
     timer_stop ("adios_open_to_close");
-//    printf ("Timers, ");
-//    printf ("%d, ", fd->group->process_id);
-//    printf ("%d, ", fd->group->time_index);
-//    printf ("%lf, ", timer_get_total_interval ("adios_open" ));
-//    printf ("%lf, ", timer_get_total_interval ("adios_group_size"));
-//    printf ("%lf, ", timer_get_total_interval ("adios_transform" ));
-//    printf ("%lf, ", timer_get_total_interval ("adios_write" ));
-//    printf ("%lf\n", timer_get_total_interval ("adios_close"     ));
-//    timer_reset_timers ();
+    //    printf ("Timers, ");
+    //    printf ("%d, ", fd->group->process_id);
+    //    printf ("%d, ", fd->group->time_index);
+    //    printf ("%lf, ", timer_get_total_interval ("adios_open" ));
+    //    printf ("%lf, ", timer_get_total_interval ("adios_group_size"));
+    //    printf ("%lf, ", timer_get_total_interval ("adios_transform" ));
+    //    printf ("%lf, ", timer_get_total_interval ("adios_write" ));
+    //    printf ("%lf\n", timer_get_total_interval ("adios_close"     ));
+    //    timer_reset_timers ();
 
     printf("[TIMERS] Proc: %d Time: %d ", fd->group->process_id, fd->group->time_index);
     int i;
@@ -1267,9 +1492,11 @@ int common_adios_close (int64_t fd_p)
     //timer_reset_timers ();
 #endif
 
+
     return adios_errno;
 }
 
+
 //////////////////////////////////////////////////////////////////////////////
 // Methods normally only called by the XML parser
 //////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/common_adios.h b/src/core/common_adios.h
index b36276f..e9ff44e 100644
--- a/src/core/common_adios.h
+++ b/src/core/common_adios.h
@@ -62,6 +62,6 @@ int common_adios_start_calculation (void);
 
 int common_adios_stop_calculation (void);
 
-int common_adios_close (int64_t fd_p);
+int common_adios_close (struct adios_file_struct * fd );
 
 #endif
diff --git a/src/core/common_read.c b/src/core/common_read.c
index e7b44f1..ccf8c13 100644
--- a/src/core/common_read.c
+++ b/src/core/common_read.c
@@ -3818,7 +3818,7 @@ const char * common_read_type_to_string (enum ADIOS_DATATYPES type)
 }
 
 
-int common_read_type_size(enum ADIOS_DATATYPES type, void *data)
+int common_read_type_size(enum ADIOS_DATATYPES type, const void *data)
 {
     return bp_get_type_size(type, data);
 }
@@ -3966,5 +3966,60 @@ void common_read_print_fileinfo (const ADIOS_FILE *fp)
 }
 
 
+ADIOS_AVAILABLE_READ_METHODS * adios_available_read_methods()
+{
+    int i, n;
+    n = 0;
+    for (i = 0; i < ADIOS_READ_METHOD_COUNT; i++) {
+        if (adios_read_hooks[i].method_name) {
+            n++;
+        }
+    }
+
+    if (n == 0)
+        return NULL;
+
+    ADIOS_AVAILABLE_READ_METHODS * m = (ADIOS_AVAILABLE_READ_METHODS *) malloc (sizeof(ADIOS_AVAILABLE_READ_METHODS));
+    if (!m)
+        return NULL;
+
+    m->name     = (char**) malloc (n*sizeof(char*));
+    m->methodID = (enum ADIOS_READ_METHOD *) malloc (n*sizeof(enum ADIOS_READ_METHOD));
+    m->nmethods = n;
+
+    n = 0;
+    for (i = 0; i < ADIOS_READ_METHOD_COUNT; i++) {
+        if (adios_read_hooks[i].method_name) {
+            m->name[n] = strdup (adios_read_hooks[i].method_name);
+            m->methodID[n] = (enum ADIOS_READ_METHOD) i;
+            n++;
+        }
+    }
+    return m;
+}
 
+void adios_available_read_methods_free (ADIOS_AVAILABLE_READ_METHODS *m)
+{
+    int i;
+    if (m)
+    {
+        if (m->name)
+        {
+            for (i=0; i < m->nmethods; i++)
+            {
+                if (m->name[i]) {
+                    free (m->name[i]);
+                    m->name[i] = NULL;
+                }
+            }
+            free (m->name);
+            m->name = NULL;
+        }
+        if (m->methodID) {
+            free (m->methodID);
+            m->methodID = NULL;
+        }
+        free (m);
+    }
+}
 
diff --git a/src/core/common_read.h b/src/core/common_read.h
index 233a369..8d17416 100644
--- a/src/core/common_read.h
+++ b/src/core/common_read.h
@@ -102,7 +102,7 @@ int common_read_get_attr_byid (const ADIOS_FILE  * fp, int attrid, enum ADIOS_DA
                          int * size, void ** data); 
 
 const char * common_read_type_to_string (enum ADIOS_DATATYPES type);
-int common_read_type_size(enum ADIOS_DATATYPES type, void *data);
+int common_read_type_size(enum ADIOS_DATATYPES type, const void *data);
 
 
 int common_read_get_grouplist (const ADIOS_FILE  *fp, char ***group_namelist);
diff --git a/src/core/flexpath.h b/src/core/flexpath.h
index 03bbef1..3a59441 100644
--- a/src/core/flexpath.h
+++ b/src/core/flexpath.h
@@ -20,6 +20,7 @@
 #define ACK_MSG 2
 #define INIT_MSG 3
 #define EOS_MSG 4
+#define FINALIZE_MSG 5
 
 #define FP_FORTRAN_MODE 1
 #define FP_C_MODE 0
diff --git a/src/core/mpidummy.c b/src/core/mpidummy.c
index ea763ba..57ad081 100644
--- a/src/core/mpidummy.c
+++ b/src/core/mpidummy.c
@@ -156,6 +156,28 @@ int MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs,
   return ier ;
 }
 
+int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count,
+                  MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
+{
+    int ier = MPI_SUCCESS;
+    size_t elemsize=0, nbytes=0;
+    if( !sendbuf || !recvbuf )        ier = MPI_ERR_BUFFER ;
+
+    switch( datatype )
+    {
+      case MPI_INT : elemsize = sizeof( int ) ;
+                     break;
+      default      : return MPI_ERR_TYPE ;
+    }
+    nbytes = elemsize * count ;
+
+    if( nbytes <= 0 ) ier = MPI_ERR_COUNT ;
+
+    if( ier == MPI_SUCCESS ) memcpy( recvbuf, sendbuf, nbytes );
+    else snprintf(mpierrmsg, ier, "could not allreduce data\n" );
+
+    return ier ;
+}
 
 int MPI_File_open(MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_File *fh) 
 {
diff --git a/src/mxml/Makefile.am b/src/mxml/Makefile.am
index bcc0913..dda7f32 100644
--- a/src/mxml/Makefile.am
+++ b/src/mxml/Makefile.am
@@ -1,6 +1,6 @@
 MXML_SRCDIR=mxml-2.9
 
-AM_CPPFLAGS=-I$(top_srcdir)/mxml/${MXML_SRCDIR}
+AM_CPPFLAGS=-I$(srcdir)/${MXML_SRCDIR}
 
 AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 METASOURCES=AUTO
diff --git a/src/mxml/Makefile.in b/src/mxml/Makefile.in
index 9bede00..2796ac5 100644
--- a/src/mxml/Makefile.in
+++ b/src/mxml/Makefile.in
@@ -108,7 +108,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -417,6 +417,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -479,7 +482,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 MXML_SRCDIR = mxml-2.9
-AM_CPPFLAGS = -I$(top_srcdir)/mxml/${MXML_SRCDIR}
+AM_CPPFLAGS = -I$(srcdir)/${MXML_SRCDIR}
 AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 METASOURCES = AUTO
 CLEANFILES = 
diff --git a/src/public/adios.h b/src/public/adios.h
index 87ccc44..6fe36a3 100644
--- a/src/public/adios.h
+++ b/src/public/adios.h
@@ -98,12 +98,19 @@ void adios_set_max_buffer_size (uint64_t max_buffer_size_MB);
 int adios_declare_group (int64_t * id, 
                          const char * name,
                          const char * time_index, 
-                         enum ADIOS_FLAG stats
+                         enum ADIOS_STATISTICS_FLAG stats
                         );
 
 // To free a ADIOS group
 int adios_free_group (int64_t id);
 
+// To set time aggregation of a group output in a certain buffer size but
+// flush whenever the synced group is being output
+int adios_set_time_aggregation(int64_t groupid,
+                               uint64_t buffersize,
+                               int64_t syncgroupid
+                              );
+
 // To select a I/O method for a ADIOS group
 int adios_select_method (int64_t group, 
                          const char * method,
@@ -264,6 +271,21 @@ int adios_define_mesh_unstructured (char * points,
                                     char * nspace,
                                     int64_t group_id,
                                     const char * name);
+
+
+typedef struct
+{
+    int nmethods; 		// number of available methods
+    char ** name;     	// array of transport method names
+} ADIOS_AVAILABLE_WRITE_METHODS;
+
+/* Provide the names of transport methods available in the running application
+ */
+ADIOS_AVAILABLE_WRITE_METHODS * adios_available_write_methods();
+
+void adios_available_write_methods_free (ADIOS_AVAILABLE_WRITE_METHODS *);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/public/adios_error.h b/src/public/adios_error.h
index 9f49ddd..c4af3e8 100644
--- a/src/public/adios_error.h
+++ b/src/public/adios_error.h
@@ -148,6 +148,7 @@ enum ADIOS_ERRCODES {
 
     // Transform layer errors
     err_invalid_transform_type                = -300, // unknown transform is requested 
+    err_transform_failure                     = -301, // the execution of transform failed
 
     // Query errors
     err_unsupported_selection                 = -401, // unsupported selection
diff --git a/src/public/adios_query.h b/src/public/adios_query.h
index 875386c..343e4f1 100644
--- a/src/public/adios_query.h
+++ b/src/public/adios_query.h
@@ -208,6 +208,21 @@ void adios_query_free(ADIOS_QUERY* q);
 /* conversion from string to query operation enum type */
 enum ADIOS_PREDICATE_MODE adios_query_getOp(const char* opStr);
 
+
+typedef struct
+{
+    int nmethods; 		// number of available query methods
+    char ** name;     	// array of query method names
+    enum ADIOS_QUERY_METHOD * methodID; // enum ID of the method in source code
+} ADIOS_AVAILABLE_QUERY_METHODS;
+
+/* Provide the names of query methods available in the running application
+ */
+ADIOS_AVAILABLE_QUERY_METHODS * adios_available_query_methods();
+
+void adios_available_query_methods_free (ADIOS_AVAILABLE_QUERY_METHODS *);
+
+
 #endif /* __INCLUDED_FROM_FORTRAN_API__ */
 
 #ifdef __cplusplus
diff --git a/src/public/adios_read_v2.h b/src/public/adios_read_v2.h
index 8359997..802093d 100644
--- a/src/public/adios_read_v2.h
+++ b/src/public/adios_read_v2.h
@@ -542,7 +542,7 @@ const char * adios_type_to_string (enum ADIOS_DATATYPES type);
  *  For other types, it does not care about data and returns
  *  the size occupied by one element.
  */
-int adios_type_size(enum ADIOS_DATATYPES type, void *data);
+int adios_type_size(enum ADIOS_DATATYPES type, const void *data);
 
 
 
@@ -591,6 +591,21 @@ void adios_reset_dimension_order (ADIOS_FILE *fp, int is_fortran);
 /** Test function to print basic info about the file to stdout */
 void adios_print_fileinfo (ADIOS_FILE *fp);
 
+
+typedef struct
+{
+    int nmethods; 		// number of available read methods
+    char ** name;     	// array of read method names
+    enum ADIOS_READ_METHOD * methodID; // enum ID of the method in source code
+} ADIOS_AVAILABLE_READ_METHODS;
+
+/* Provide the names of read methods available in the running application
+ */
+ADIOS_AVAILABLE_READ_METHODS * adios_available_read_methods();
+
+void adios_available_read_methods_free (ADIOS_AVAILABLE_READ_METHODS *);
+
+
 #endif  /*__INCLUDED_FROM_FORTRAN_API__*/
 
 #ifdef __cplusplus
diff --git a/src/public/adios_transform_methods.h b/src/public/adios_transform_methods.h
new file mode 100644
index 0000000..2d72bfc
--- /dev/null
+++ b/src/public/adios_transform_methods.h
@@ -0,0 +1,25 @@
+#ifndef ADIOS_TRANSFORM_METHODS_H
+#define ADIOS_TRANSFORM_METHODS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+    int ntransforms;            // number of transformations
+    char ** name;               // array of transform names
+    char ** description;        // array of descriptions
+} ADIOS_AVAILABLE_TRANSFORM_METHODS;
+
+/* Provide the names of transformations available in the running application
+ */
+ADIOS_AVAILABLE_TRANSFORM_METHODS * adios_available_transform_methods();
+
+void adios_available_transform_methods_free (ADIOS_AVAILABLE_TRANSFORM_METHODS *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/public/adios_types.h b/src/public/adios_types.h
index 3ebc079..111867e 100644
--- a/src/public/adios_types.h
+++ b/src/public/adios_types.h
@@ -43,6 +43,15 @@ enum ADIOS_FLAG {adios_flag_unknown = 0
                 ,adios_flag_no = 2
                 };
 
+enum ADIOS_STATISTICS_FLAG {
+    adios_stat_no      = -1,   /* turn off statistics generation */
+    adios_stat_minmax  = 0,    /* min + max only */
+    adios_stat_full    = 1,    /* all statistics turned on */
+
+    adios_stat_default = adios_stat_minmax,
+    adios_stat_no_do_not_use_this = 2 /* keep it for historic reason (== adios_flag_no) */
+};
+
 enum ADIOS_BUFFER_ALLOC_WHEN {ADIOS_BUFFER_ALLOC_UNKNOWN
                              ,ADIOS_BUFFER_ALLOC_NOW
                              ,ADIOS_BUFFER_ALLOC_LATER
diff --git a/src/public/adios_version.h b/src/public/adios_version.h
index f059aa9..651f624 100644
--- a/src/public/adios_version.h
+++ b/src/public/adios_version.h
@@ -9,9 +9,9 @@
 #define ADIOS_VERSION_H
 
 /* ADIOS Software release version */
-#define ADIOS_VERSION "1.10.0"
+#define ADIOS_VERSION "1.11.0"
 #define ADIOS_VERSION_MAJOR 1
-#define ADIOS_VERSION_MINOR 10
+#define ADIOS_VERSION_MINOR 11
 #define ADIOS_VERSION_PATCH 0
 
 /* macros for comparing the version */
@@ -27,7 +27,7 @@
 
 /* ADIOS Software release version as strings*/
 #define ADIOS_VERSION_MAJOR_STRING "1"
-#define ADIOS_VERSION_MINOR_STRING "10"
+#define ADIOS_VERSION_MINOR_STRING "11"
 #define ADIOS_VERSION_PATCH_STRING "0"
 
 /* BP File format version
diff --git a/src/public/mpidummy.h b/src/public/mpidummy.h
index ae0cbaf..72bdc3d 100644
--- a/src/public/mpidummy.h
+++ b/src/public/mpidummy.h
@@ -21,6 +21,9 @@
 extern "C" {
 #endif
 
+/* This dummy MPI only supports functions what is included in both the parallel and
+ * sequential ADIOS library */
+
 typedef int MPI_Comm;
 typedef uint64_t MPI_Status;
 typedef int MPI_File;
@@ -29,6 +32,9 @@ typedef int MPI_Datatype;  /* Store the byte size of a type in such vars */
 typedef uint64_t MPI_Offset;
 typedef int MPI_Fint;
 
+enum mpi_operation { MPI_MIN, MPI_SUM };
+typedef enum mpi_operation MPI_Op;
+
 #define MPI_SUCCESS                 0
 #define MPI_ERR_BUFFER              1      /* Invalid buffer pointer */
 #define MPI_ERR_COUNT               2      /* Invalid count argument */
@@ -54,7 +60,6 @@ typedef int MPI_Fint;
 #define MPI_ANY_SOURCE              0
 #define MPI_ANY_TAG                 0
 
-#define MPI_SUM                     0
 
 #define MPI_MAX_PROCESSOR_NAME      32
 int MPI_Init(int *argc, char ***argv);
@@ -79,7 +84,8 @@ int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 int MPI_Scatter(void *sendbuf, int sendcnt, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm);
 int MPI_Scatterv(void *sendbuf, int *sendcnts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm);
 
-
+int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count,
+                  MPI_Datatype datatype, MPI_Op op, MPI_Comm comm);
 
 int MPI_File_open(MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_File *fh);
 int MPI_File_close(MPI_File *fh);
diff --git a/src/query/common_query.c b/src/query/common_query.c
index 5b8ffed..ca9f6dd 100644
--- a/src/query/common_query.c
+++ b/src/query/common_query.c
@@ -890,3 +890,61 @@ enum ADIOS_PREDICATE_MODE adios_query_getOp(const char* opStr)
     return ADIOS_NE;
   }
 }
+
+
+ADIOS_AVAILABLE_QUERY_METHODS * adios_available_query_methods()
+{
+    int i, n;
+    n = 0;
+    for (i = 0; i < ADIOS_QUERY_METHOD_COUNT; i++) {
+        if (query_hooks[i].method_name) {
+            n++;
+        }
+    }
+
+    if (n == 0)
+        return NULL;
+
+    ADIOS_AVAILABLE_QUERY_METHODS * m = (ADIOS_AVAILABLE_QUERY_METHODS *) malloc (sizeof(ADIOS_AVAILABLE_QUERY_METHODS));
+    if (!m)
+        return NULL;
+
+    m->name     = (char**) malloc (n*sizeof(char*));
+    m->methodID = (enum ADIOS_QUERY_METHOD *) malloc (n*sizeof(enum ADIOS_QUERY_METHOD));
+    m->nmethods = n;
+
+    n = 0;
+    for (i = 0; i < ADIOS_QUERY_METHOD_COUNT; i++) {
+        if (query_hooks[i].method_name) {
+            m->name[n] = strdup (query_hooks[i].method_name);
+            m->methodID[n] = (enum ADIOS_QUERY_METHOD)i;
+            n++;
+        }
+    }
+    return m;
+}
+
+void adios_available_query_methods_free (ADIOS_AVAILABLE_QUERY_METHODS *m)
+{
+    int i;
+    if (m)
+    {
+        if (m->name)
+        {
+            for (i=0; i < m->nmethods; i++)
+            {
+                if (m->name[i]) {
+                    free (m->name[i]);
+                    m->name[i] = NULL;
+                }
+            }
+            free (m->name);
+            m->name = NULL;
+        }
+        if (m->methodID) {
+            free (m->methodID);
+            m->methodID = NULL;
+        }
+        free (m);
+    }
+}
diff --git a/src/read/read_flexpath.c b/src/read/read_flexpath.c
index f4a69b5..360a1de 100644
--- a/src/read/read_flexpath.c
+++ b/src/read/read_flexpath.c
@@ -321,10 +321,9 @@ ffs_type_to_adios_type(const char *ffs_type, int size)
 	return adios_complex;
     else if (!strcmp("double_complex", filtered_type))
         return adios_double_complex;
-    else {
-	fprintf(stderr, "returning unknown for: ffs_type: %s\n", ffs_type);
-	return adios_unknown;
-    }
+
+    fprintf(stderr, "returning unknown for: ffs_type: %s\n", ffs_type);
+    return adios_unknown;
 }
 
 ADIOS_VARINFO*
@@ -649,8 +648,10 @@ send_open_msg(flexpath_reader_file *fp, int destination)
     int cond = CMCondition_get(fp_read_data->cm, NULL);
     msg.condition = cond;
 
+    fp_verbose(fp, "sending open msg, WAITING on response\n");
     EVsubmit(fp->bridges[destination].op_source, &msg, NULL);
     CMCondition_wait(fp_read_data->cm, cond);
+    fp_verbose(fp, "WAIT finished, setting opened to 1, destination %d\n", destination);
     fp->bridges[destination].opened = 1;
 }
 
@@ -669,7 +670,30 @@ send_close_msg(flexpath_reader_file *fp, int destination)
     int cond = CMCondition_get(fp_read_data->cm, NULL);
     msg.condition = cond;
     EVsubmit(fp->bridges[destination].op_source, &msg, NULL);
+    fp_verbose(fp, "sending close msg, setting opened to 0, destination %d, WAITING\n", destination);
+    CMCondition_wait(fp_read_data->cm, cond);
+    fp_verbose(fp, "Done with WAIT\n");
+    fp->bridges[destination].opened = 0;
+}
+
+void
+send_finalize_msg(flexpath_reader_file *fp, int destination)
+{
+    if (!fp->bridges[destination].created) {
+	build_bridge(&(fp->bridges[destination]));
+    }
+    op_msg msg;
+    msg.process_id = fp->rank;
+    msg.file_name = fp->file_name;
+    msg.step = fp->mystep;
+    msg.type = FINALIZE_MSG;
+    //msg.condition = -1;
+    int cond = CMCondition_get(fp_read_data->cm, NULL);
+    msg.condition = cond;
+    EVsubmit(fp->bridges[destination].op_source, &msg, NULL);
+    fp_verbose(fp, "sending finalize msg, setting opened to 0, destination %d, WAITING\n", destination);
     CMCondition_wait(fp_read_data->cm, cond);
+    fp_verbose(fp, "Done with WAIT\n");
     fp->bridges[destination].opened = 0;
 }
 
@@ -688,7 +712,9 @@ send_flush_msg(flexpath_reader_file *fp, int destination, Flush_type type, int u
     // maybe check to see if the bridge is create first.
     EVsubmit(fp->bridges[destination].flush_source, &msg, NULL);
     if (use_condition) {
+	fp_verbose(fp, "WAIT in send_flush_msg\n");
 	CMCondition_wait(fp_read_data->cm, msg.condition);
+	fp_verbose(fp, "Done with WAIT\n");
     }
 }
 
@@ -712,6 +738,7 @@ send_var_message(flexpath_reader_file *fp, int destination, char *varname)
             build_bridge(&(fp->bridges[destination]));
 	}
 	if (!fp->bridges[destination].opened) {
+	    fp_verbose(fp, "sending open msg in var_message, destination %d, opened was %d\n", destination, fp->bridges[destination].opened);
 	    fp->bridges[destination].opened = 1;
 	    send_open_msg(fp, destination);
 	}
@@ -1269,7 +1296,9 @@ adios_read_flexpath_open(const char * fname,
 	fprintf(read_ready, "ready");
 	fclose(read_ready);
     }
+    fp_verbose(fp, "waiting on First barrier in OPEN\n");
     MPI_Barrier(fp->comm);
+    fp_verbose(fp, "done with First barrier in OPEN\n");
 
     FILE * fp_in = fopen(writer_ready_filename,"r");
     while (!fp_in) {
@@ -1305,7 +1334,9 @@ adios_read_flexpath_open(const char * fname,
     fclose(fp_in);
     fp->num_bridges = num_bridges;
     // clean up of writer's files
+    fp_verbose(fp, "waiting on second barrier in OPEN\n");
     MPI_Barrier(fp->comm);
+    fp_verbose(fp, "done with second barrier in OPEN\n");
     if (fp->rank == 0) {
 	unlink(writer_info_filename);
 	unlink(writer_ready_filename);
@@ -1333,6 +1364,7 @@ adios_read_flexpath_open(const char * fname,
     }
 
     // requesting initial data.
+    fp_verbose(fp, "sending open msg in read_open\n");
     send_open_msg(fp, fp->writer_coordinator);
 
 
@@ -1341,7 +1373,9 @@ adios_read_flexpath_open(const char * fname,
     fp->req.num_pending = 1;
     fp->req.num_completed = 0;
     send_flush_msg(fp, fp->writer_coordinator, DATA, 0);
+    fp_verbose(fp, "sent flush msg in read_open, WAITING\n");
     CMCondition_wait(fp_read_data->cm, fp->req.condition);
+    fp_verbose(fp, "done with WAIT in read_open\n");
 
     send_flush_msg(fp, fp->writer_coordinator, EVGROUP, 1);
     fp->data_read = 0;
@@ -1368,15 +1402,26 @@ adios_read_flexpath_open(const char * fname,
 
 int adios_read_flexpath_finalize_method ()
 {
-    return 0;
+    /* flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh; */
+    /* int i; */
+    /* for (i=0; i<fp->num_bridges; i++) { */
+    /*     if (fp->bridges[i].created && !fp->bridges[i].opened) { */
+    /* 	    fp_verbose(fp, "sending open msg in flexpath_release_step\n"); */
+    /* 	    send_finalize_msg(fp, i); */
+    /*     } */
+    /* } */
+    /* return 1; */
 }
 
 void adios_read_flexpath_release_step(ADIOS_FILE *adiosfile) {
     int i;
     flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh;
+    fp_verbose(fp, "waiting at flexpath_release step barrier\n");
     MPI_Barrier(fp->comm);
+    fp_verbose(fp, "done with flexpath_release step barrier\n");
     for (i=0; i<fp->num_bridges; i++) {
         if (fp->bridges[i].created && !fp->bridges[i].opened) {
+	    fp_verbose(fp, "sending open msg in flexpath_release_step\n");
 	    send_open_msg(fp, i);
         }
     }
@@ -1418,12 +1463,13 @@ int
 adios_read_flexpath_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_sec)
 {    
     flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh;
-    //fprintf(stderr, "reader_rank:%d:calling advance_step:step:%d\n", fp->rank, fp->mystep);
+    fp_verbose(fp, " waiting on first barrier in flexpath_advance_step:step:%d\n", fp->mystep);
     MPI_Barrier(fp->comm);
+    fp_verbose(fp, " wait complete in flexpath_advance_step:step:%d\n", fp->mystep);
     int count = 0; // for perf measurements
-    //fprintf(stderr, "reader_rank:%d:advance_step:sending flush step to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+    fp_verbose(fp, "advance_step:sending flush step to coordinator:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     send_flush_msg(fp, fp->writer_coordinator, STEP, 1);
-    //fprintf(stderr, "reader_rank:%d:advance_step:advance_step:after sending flush step to:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+    //fprintf(stderr, "reader_rank:%d:advance_step:advance_step:after sending flush step to:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     //put this on a timer, so to speak, for timeout_sec
     while (fp->mystep == fp->last_writer_step) {
 	if (fp->writer_finalized) {
@@ -1431,9 +1477,9 @@ adios_read_flexpath_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_
 	    return err_end_of_stream;
 	}
 	CMsleep(fp_read_data->cm, 1);
-	//fprintf(stderr, "reader_rank:%d:advance_step:while loop sending flush step to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+	fp_verbose(fp, "advance_step:while loop sending flush step to coordinator:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
 	send_flush_msg(fp, fp->writer_coordinator, STEP, 1);
-	//fprintf(stderr, "reader_rank:%d:advance_step:after while loop sending flush step to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+	//fprintf(stderr, "reader_rank:%d:advance_step:after while loop sending flush step to coordinator:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     }
 
     int i=0;
@@ -1443,7 +1489,9 @@ adios_read_flexpath_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_
 	    send_close_msg(fp, i);
 	}
     }
+    fp_verbose(fp, "waiting on second barrier in flexpath_advance_step:step:%d\n", fp->mystep);
     MPI_Barrier(fp->comm);
+    fp_verbose(fp, "done with second barrier in flexpath_advance_step:step:%d\n", fp->mystep);
 
     count = 0;
     adiosfile->current_step++;
@@ -1451,6 +1499,7 @@ adios_read_flexpath_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_
 
     for (i=0; i<fp->num_bridges; i++) {
 	if (fp->bridges[i].created && !fp->bridges[i].opened) {
+	    fp_verbose(fp, "sending open msg in flexpath_advance_step\n");
 	    send_open_msg(fp, i);
 	    count++;
         }
@@ -1459,15 +1508,15 @@ adios_read_flexpath_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_
     fp->req.num_completed = 0;
     fp->req.num_pending = 1;
     fp->req.condition = CMCondition_get(fp_read_data->cm, NULL);
-    //fprintf(stderr, "reader_rank:%d:advance_step:while loop sending flush DATA to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+    fp_verbose(fp, "advance_step: sending flush DATA to coordinator, then WAITING:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     send_flush_msg(fp, fp->writer_coordinator, DATA, 0);
     CMCondition_wait(fp_read_data->cm, fp->req.condition);
-    //fprintf(stderr, "reader_rank:%d:advance_step:while loop after flush DATA to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+    fp_verbose(fp, "advance_step:Condition wait is complete:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     // should only happen if there are more steps available.
     // writer should have advanced.
-    //fprintf(stderr, "reader_rank:%d:advance_step:while loop sending flush EVGROUP to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+    fp_verbose(fp, "advance_step: sending flush EVGROUP to coordinator:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     send_flush_msg(fp, fp->writer_coordinator, EVGROUP, 1);
-    //fprintf(stderr, "reader_rank:%d:advance_step:while loop after flush EVGROUP to coordinator:%d:step:%d\n", fp->rank, fp->writer_coordinator,fp->mystep);
+    //fprintf(stderr, "reader_rank:%d:advance_step:while loop after flush EVGROUP to coordinator:%d:step:%d\n", fp->writer_coordinator,fp->mystep);
     return 0;
 }
 
@@ -1556,11 +1605,9 @@ int adios_read_flexpath_perform_reads(const ADIOS_FILE *adiosfile, int blocking)
 	if ((total_sent % FP_BATCH_SIZE == 0) || (total_sent == num_sendees)) {
             fp->req.num_pending = batchcount;
 
-	    /* fprintf(stderr, "\t\treader rank:%d:blocking on:%d:step:%d\n", */
-	    /* 	    fp->rank, fp->req.condition, fp->mystep); */
+	    fp_verbose(fp, "in perform_reads, blocking on:%d:step:%d\n", fp->req.condition, fp->mystep);
             CMCondition_wait(fp_read_data->cm, fp->req.condition);
-	    /* fprintf(stderr, "\t\treader rank:%d:after blocking:%d:step:%d\n", */
-	    /* 	    fp->rank, fp->req.condition, fp->mystep); */
+	    fp_verbose(fp, "after blocking:%d:step:%d\n", fp->req.condition, fp->mystep);
 	    fp->req.num_completed = 0;
 	    //fp->req.num_pending = 0;
 	    //total_sent = 0;
diff --git a/src/read/read_icee.c b/src/read/read_icee.c
index 413948a..15b496b 100644
--- a/src/read/read_icee.c
+++ b/src/read/read_icee.c
@@ -1,6 +1,6 @@
 /*
-  read_icee.c       
-  Goal: to create evpath io connection layer in conjunction with 
+  read_icee.c
+  Goal: to create evpath io connection layer in conjunction with
   write/adios_icee.c
 */
 // system libraries
@@ -74,12 +74,12 @@
 ///////////////////////////
 #include "core/globals.h"
 
-#define DUMP(fmt, ...) fprintf(stderr, ">>> "fmt"\n", ## __VA_ARGS__); 
+#define DUMP(fmt, ...) fprintf(stderr, ">>> "fmt"\n", ## __VA_ARGS__);
 
 
 /* Data Structure
    + fileinfo 1.1 - fileinfo 1.2 - ...
-   |    + var 1.1      + var 1.2 
+   |    + var 1.1      + var 1.2
    |    + var 2.1      + var 2.2
    |    + ...          + ...
    + fileinfo 2.1 - fileinfo 2.2 - ...
@@ -101,7 +101,7 @@ icee_llist_create(void* item)
     icee_llist_ptr_t node = malloc(sizeof(icee_llist_t));
     node->item = item;
     node->next = NULL;
-    
+
     return node;
 }
 
@@ -109,16 +109,16 @@ icee_llist_ptr_t
 icee_llist_append(const icee_llist_ptr_t root, void* item)
 {
     assert(root != NULL);
-        
+
     icee_llist_ptr_t p = root;
-    
+
     while (p->next != NULL)
         p = p->next;
 
     icee_llist_ptr_t node = malloc(sizeof(icee_llist_t));
     node->item = item;
     node->next = NULL;
-    
+
     p->next = node;
 
     return node;
@@ -128,7 +128,7 @@ icee_llist_ptr_t
 icee_llist_search(const icee_llist_ptr_t root, int (*fp)(const void*, const void*), const void* arg)
 {
     icee_llist_ptr_t p = root;
-    
+
     while (p != NULL)
     {
         if ((*fp)(p->item, arg)) break;
@@ -142,7 +142,7 @@ void
 icee_llist_map(const icee_llist_ptr_t root, void (*fp)(const void*))
 {
     icee_llist_ptr_t p = root;
-    
+
     while (p != NULL)
     {
         (*fp)(p->item);
@@ -165,18 +165,18 @@ pthread_mutex_t fileinfo_lock;
 void icee_fileinfo_append(const icee_fileinfo_rec_ptr_t root, icee_fileinfo_rec_ptr_t fp)
 {
     assert(root != NULL);
-    
+
     icee_fileinfo_rec_ptr_t p = root;
 
     while ((p->timestep != fp->timestep) && (p->next != NULL))
     {
-        p = p->next; 
+        p = p->next;
     }
 
     if (p->timestep == fp->timestep)
     {
         icee_varinfo_rec_ptr_t v = p->varinfo;
-        
+
         while (v->next != NULL)
             v = v->next;
 
@@ -227,7 +227,7 @@ void icee_fileinfo_free(icee_fileinfo_rec_ptr_t fp)
     }
 
     free(fp);
-    fp = NULL;    
+    fp = NULL;
 }
 
 icee_varinfo_rec_ptr_t
@@ -259,7 +259,7 @@ void icee_varinfo_copy(icee_varinfo_rec_ptr_t dest, const icee_varinfo_rec_ptr_t
     memcpy(dest->gdims, src->gdims, dimsize);
     memcpy(dest->ldims, src->ldims, dimsize);
     memcpy(dest->offsets, src->offsets, dimsize);
-    
+
     dest->data = malloc(src->varlen);
     memcpy(dest->data, src->data, src->varlen);
 
@@ -300,6 +300,10 @@ void icee_sel_bb_print(const ADIOS_SELECTION *sel)
     }
 }
 
+static double sum_deltat = 0;
+static int    cnt_deltat = 0;
+static int    use_read_probe = 0;
+
 static int
 icee_fileinfo_handler(CManager cm, void *vevent, void *client_data, attr_list attrs)
 {
@@ -309,6 +313,44 @@ icee_fileinfo_handler(CManager cm, void *vevent, void *client_data, attr_list at
     icee_fileinfo_rec_ptr_t lfp = malloc(sizeof(icee_fileinfo_rec_t));
     icee_fileinfo_copy(lfp, event);
     lfp->merge_count = 1;
+    
+    double deltat = MPI_Wtime() - lfp->timestamp;
+    if (strcmp(lfp->fname, "_icee_.probe") == 0)
+    {
+        cnt_deltat++;
+        if (cnt_deltat > 1) // discard the first deltat 
+        {
+            sum_deltat += deltat;
+        }
+        log_debug("deltat: %g (sum: %g, count: %d)\n", deltat, sum_deltat, cnt_deltat);
+        return 1;
+    }
+
+    if (cnt_deltat > 1)
+    {
+        uint64_t dsize = 0;
+        icee_varinfo_rec_ptr_t vp = lfp->varinfo;
+        while (vp != NULL)
+        {
+            dsize += vp->varlen;
+            vp = vp->next;
+        }
+        double adjustedt = deltat - sum_deltat/(cnt_deltat-1);
+        log_debug("received, deltat, adjusted, throughput = %g (MB), %g (sec), %g (sec), %g (MB/sec)\n",
+                  (double)dsize/1024/1024, deltat, adjustedt, (double)dsize/adjustedt/1024/1024);
+        
+
+        {
+            icee_varinfo_rec_ptr_t vp = NULL;
+            vp = icee_varinfo_search_byname(lfp->varinfo, "__icee_deltat__");
+
+            if (vp != NULL)
+            {
+                *((double*)vp->data) = adjustedt;
+            }
+        }
+
+    }
 
     icee_varinfo_rec_ptr_t eventvp = event->varinfo;
     icee_varinfo_rec_ptr_t *lvpp = &lfp->varinfo;
@@ -318,7 +360,7 @@ icee_fileinfo_handler(CManager cm, void *vevent, void *client_data, attr_list at
         *lvpp = malloc(sizeof(icee_varinfo_rec_t));
         icee_varinfo_copy(*lvpp, eventvp);
         if (adios_verbose_level > 5) DUMP("id,name = %d,%s", (*lvpp)->varid, (*lvpp)->varname);
-        
+
         lvpp = &(*lvpp)->next;
         eventvp = eventvp->next;
     }
@@ -382,8 +424,8 @@ typedef struct {
     icee_matrix_t* mat;
 } icee_matrix_view_t;
 
-void 
-mat_init (icee_matrix_t *m, 
+void
+mat_init (icee_matrix_t *m,
           int typesize,
           int ndims,
           const uint64_t *dims,
@@ -405,7 +447,7 @@ mat_init (icee_matrix_t *m,
     m->data = data;
 }
 
-void 
+void
 view_init (icee_matrix_view_t *v,
            icee_matrix_t *m,
            const int64_t *vdims,
@@ -429,7 +471,7 @@ void
 view_copy (icee_matrix_view_t *dest, icee_matrix_view_t *src)
 {
     assert(dest->mat->ndims == src->mat->ndims);
-    
+
     int i;
     for (i=0; i<dest->mat->ndims; i++)
         assert(dest->vdims[i] == src->vdims[i]);
@@ -440,13 +482,13 @@ view_copy (icee_matrix_view_t *dest, icee_matrix_view_t *src)
         int s, d;
         d = dest->offsets[0] * dest->mat->accumdims[0];
         s = src->offsets[0] * src->mat->accumdims[0];
-        memcpy(dest->mat->data + d * dest->mat->typesize, 
-               src->mat->data + s * dest->mat->typesize, 
+        memcpy(dest->mat->data + d * dest->mat->typesize,
+               src->mat->data + s * dest->mat->typesize,
                dest->vdims[0] * dest->mat->accumdims[0] * dest->mat->typesize);
 
         return;
     }
-    
+
     // Non-contiguous merging
     switch (dest->mat->ndims)
     {
@@ -455,8 +497,8 @@ view_copy (icee_matrix_view_t *dest, icee_matrix_view_t *src)
         int s, d;
         d = dest->offsets[0];
         s = src->offsets[0];
-        memcpy(dest->mat->data + d * dest->mat->typesize, 
-               src->mat->data + s * dest->mat->typesize, 
+        memcpy(dest->mat->data + d * dest->mat->typesize,
+               src->mat->data + s * dest->mat->typesize,
                dest->vdims[0] * dest->mat->typesize);
         break;
     }
@@ -465,12 +507,12 @@ view_copy (icee_matrix_view_t *dest, icee_matrix_view_t *src)
         int i, s, d;
         for (i=0; i<dest->vdims[0]; i++)
         {
-            d = (i + dest->offsets[0]) * dest->mat->accumdims[0] 
+            d = (i + dest->offsets[0]) * dest->mat->accumdims[0]
                 + dest->offsets[1];
-            s = (i + src->offsets[0]) * src->mat->accumdims[0] 
+            s = (i + src->offsets[0]) * src->mat->accumdims[0]
                 + src->offsets[1];
-            memcpy(dest->mat->data + d * dest->mat->typesize, 
-                   src->mat->data + s * dest->mat->typesize, 
+            memcpy(dest->mat->data + d * dest->mat->typesize,
+                   src->mat->data + s * dest->mat->typesize,
                    dest->vdims[1] * dest->mat->typesize);
         }
         break;
@@ -482,14 +524,14 @@ view_copy (icee_matrix_view_t *dest, icee_matrix_view_t *src)
         {
             for (j=0; j<dest->vdims[1]; j++)
             {
-                d = (i + dest->offsets[0]) * dest->mat->accumdims[0] 
+                d = (i + dest->offsets[0]) * dest->mat->accumdims[0]
                     + (j + dest->offsets[1]) * dest->mat->accumdims[1]
                     + dest->offsets[2];
-                s = (i + src->offsets[0]) * src->mat->accumdims[0] 
-                    + (j + src->offsets[1]) * src->mat->accumdims[1] 
+                s = (i + src->offsets[0]) * src->mat->accumdims[0]
+                    + (j + src->offsets[1]) * src->mat->accumdims[1]
                     + src->offsets[2];
-                memcpy(dest->mat->data + d * dest->mat->typesize, 
-                       src->mat->data + s * dest->mat->typesize, 
+                memcpy(dest->mat->data + d * dest->mat->typesize,
+                       src->mat->data + s * dest->mat->typesize,
                        dest->vdims[2] * dest->mat->typesize);
             }
         }
@@ -503,58 +545,58 @@ view_copy (icee_matrix_view_t *dest, icee_matrix_view_t *src)
     }
 }
 
-void 
-set_contact_list (attr_list contact_list, 
-                  const icee_transport_t icee_transport, 
+void
+set_contact_list (attr_list contact_list,
+                  const icee_transport_t icee_transport,
                   char *host, int port)
 {
     switch (icee_transport)
     {
     case ENET:
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("CM_TRANSPORT"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("CM_TRANSPORT"),
                         "enet");
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("CM_ENET_HOST"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("CM_ENET_HOST"),
                         host);
-        add_int_attr(contact_list, 
-                     attr_atom_from_string("CM_ENET_PORT"), 
+        add_int_attr(contact_list,
+                     attr_atom_from_string("CM_ENET_PORT"),
                      port);
         break;
     case NNTI:
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("CM_TRANSPORT"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("CM_TRANSPORT"),
                         "nnti");
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("IP_HOST"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("IP_HOST"),
                         host);
-        add_int_attr(contact_list, 
-                     attr_atom_from_string("NNTI_PORT"), 
+        add_int_attr(contact_list,
+                     attr_atom_from_string("NNTI_PORT"),
                      port);
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("CM_NNTI_TRANSPORT"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("CM_NNTI_TRANSPORT"),
                         "ib");
         break;
     case IB:
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("CM_TRANSPORT"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("CM_TRANSPORT"),
                         "ib");
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("IP_HOST"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("IP_HOST"),
                         host);
-        add_int_attr(contact_list, 
-                     attr_atom_from_string("IP_PORT"), 
+        add_int_attr(contact_list,
+                     attr_atom_from_string("IP_PORT"),
                      port);
         break;
     default:
-        add_string_attr(contact_list, 
-                        attr_atom_from_string("IP_HOST"), 
+        add_string_attr(contact_list,
+                        attr_atom_from_string("IP_HOST"),
                         host);
-        add_int_attr(contact_list, 
-                     attr_atom_from_string("IP_PORT"), 
+        add_int_attr(contact_list,
+                     attr_atom_from_string("IP_PORT"),
                      port);
         break;
-            
+
     }
 }
 
@@ -562,7 +604,7 @@ set_contact_list (attr_list contact_list,
 
 int
 adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
-{   
+{
     log_debug ("%s\n", __FUNCTION__);
 
     int cm_port = 59997;
@@ -657,6 +699,10 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
         {
             use_native_contact = atoi(p->value);
         }
+        else if (!strcasecmp (p->name, "use_probe"))
+        {
+            use_read_probe = atoi(p->value);
+        }
 
         p = p->next;
     }
@@ -719,7 +765,7 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
 
             p = malloc(sizeof(icee_contactinfo_rec_t));
             attr_list contact_list;
-            
+
             contact_list = create_attr_list();
             set_contact_list(contact_list, icee_transport_init, host, port);
             p->contact_string = attr_list_to_string(contact_list);
@@ -754,7 +800,7 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
 
             p = malloc(sizeof(icee_contactinfo_rec_t));
             attr_list contact_list;
-            
+
             p->stone_id = remote_stone;
             p->contact_string = strdup(string_list);
             p->next = NULL;
@@ -782,7 +828,7 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
       log_info ("cm_host : %s\n", cm_host);
       log_info ("cm_port : %d\n", cm_port);
 
-      for (i = 0; i < num_remote_server; i++) 
+      for (i = 0; i < num_remote_server; i++)
       {
       log_info ("remote_list : %s:%d\n", remote_server[i].client_host, remote_server[i].client_port);
       }
@@ -826,7 +872,7 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
 
                     sleep(2);
                     conn = CMinitiate_conn(pcm[i], contact_list);
-                    
+
                     if (n > 5) break;
                     n++;
                 }
@@ -834,7 +880,7 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
                 if (conn == NULL)
                 {
                     log_error ("Initializing passive connection failed (%d)\n", i);
-                    
+
                 }
 
                 CMFormat fm_checkin, fm_fileinfo;
@@ -875,12 +921,12 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
 
             if (CMlisten_specific(icee_read_cm[i], contact[i]) == 0)
                 printf("Error: unable to initialize connection manager[%d].\n", i);
-            
-            if (!CMfork_comm_thread(icee_read_cm[i])) 
+
+            if (!CMfork_comm_thread(icee_read_cm[i]))
                 printf("Fork of communication thread[%d] failed.\n", i);
 
             stone[i] = EValloc_stone(icee_read_cm[i]);
-            if (adios_verbose_level > 5) 
+            if (adios_verbose_level > 5)
             {
                 log_debug("Reader contact: \"%d:%s\"\n", stone[i], attr_list_to_string(CMget_contact_list(icee_read_cm[i])));
                 dump_attr_list(CMget_contact_list(icee_read_cm[i]));
@@ -894,27 +940,27 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
                 contact_list = CMget_contact_list(icee_read_cm[i]);
             else
                 contact_list = contact[i];
-                
+
             contact_msg[i].contact_string = attr_list_to_string(contact_list);
             contact_msg[i].next = NULL;
 
             if (i>0)
                 contact_msg[i-1].next = &contact_msg[i];
         }
-        
+
         EVstone split_stone;
         EVaction split_action;
 
         split_stone = EValloc_stone(icee_read_cm[0]);
         split_action = EVassoc_split_action(icee_read_cm[0], split_stone, NULL);
         icee_contactinfo_rec_t *prev;
-        for (i = 0; i < num_remote_server; i++) 
+        for (i = 0; i < num_remote_server; i++)
         {
             attr_list contact_list;
             EVstone remote_stone, output_stone;
             output_stone = EValloc_stone(icee_read_cm[0]);
             icee_contactinfo_rec_t *p = (i == 0)? remote_contact : prev->next;
-            
+
             remote_stone = p->stone_id;
             contact_list = attr_list_from_string(p->contact_string);
 
@@ -926,10 +972,10 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
             {
                 log_error ("Connection failed (%d). Try again ...\n", i);
                 dump_attr_list(contact_list);
-                
+
                 sleep(2);
                 action = EVassoc_bridge_action(icee_read_cm[0], output_stone, contact_list, remote_stone);
-                
+
                 if (n > 5) break;
                 n++;
             }
@@ -944,9 +990,9 @@ adios_read_icee_init_method (MPI_Comm comm, PairStruct* params)
         }
 
         source = EVcreate_submit_handle(icee_read_cm[0], split_stone, icee_contactinfo_format_list);
-        
+
         //if (adios_verbose_level > 5) icee_contactinfo_print(contact_msg);
-        
+
         EVsubmit(source, contact_msg, NULL);
 
     done:
@@ -975,10 +1021,10 @@ adios_read_icee_open(const char * fname,
 
     icee_llist_ptr_t head = NULL;
 
-    float waited_sec = 0.0;    
+    float waited_sec = 0.0;
     while (waited_sec <= timeout_sec)
     {
-        head = icee_llist_search(icee_filelist, icee_fileinfo_checkname, 
+        head = icee_llist_search(icee_filelist, icee_fileinfo_checkname,
                                  (const void*) fname);
         if (head != NULL)
             break;
@@ -986,19 +1032,19 @@ adios_read_icee_open(const char * fname,
         usleep(0.1*1E6);
         waited_sec += 0.1;
     }
-    
+
     if (head == NULL)
     {
         log_error ("No data yet\n");
         return NULL;
     }
-    
+
     icee_fileinfo_rec_ptr_t fp = (icee_fileinfo_rec_ptr_t)head->item;
-    
+
     while (fp->merge_count != fp->nchunks)
     {
         log_debug("Waiting the rest of blocks (%d/%d)\n", fp->merge_count, fp->nchunks);
-        
+
         usleep(0.1*1E6);
     }
 
@@ -1009,7 +1055,7 @@ adios_read_icee_open(const char * fname,
 #if 0
     int hashsize = 10;
     qhashtbl_t *tbl = qhashtbl(hashsize);
-    
+
     icee_varinfo_rec_ptr_t vp = fp->varinfo;
     while (vp != NULL)
     {
@@ -1057,6 +1103,7 @@ adios_read_icee_open(const char * fname,
     for (i = 0; i < fp->nvars; i++)
     {
         adiosfile->var_namelist[i] = strdup(vp->varname);
+        adiosfile->file_size += vp->varlen + sizeof(icee_varinfo_rec_t);
         vp = vp->next;
     }
 
@@ -1069,13 +1116,13 @@ adios_read_icee_open(const char * fname,
     adiosfile->path = strdup(fname);
 
     adiosfile->version = -1;
-    adiosfile->file_size = 0;
-    adios_errno = err_no_error;        
+    //adiosfile->file_size = 0;
+    adios_errno = err_no_error;
 
     return adiosfile;
 }
 
-int 
+int
 adios_read_icee_finalize_method ()
 {
     log_debug("%s\n", __FUNCTION__);
@@ -1084,7 +1131,7 @@ adios_read_icee_finalize_method ()
     {
         int i;
         if (is_read_cm_passive == 1)
-            for (i = 0; i < num_remote_server; i++) 
+            for (i = 0; i < num_remote_server; i++)
                 CManager_close(pcm[i]);
         else
             for (i=0; i<icee_read_num_parallel; i++)
@@ -1096,14 +1143,14 @@ adios_read_icee_finalize_method ()
     return 0;
 }
 
-void 
-adios_read_icee_release_step(ADIOS_FILE *adiosfile) 
+void
+adios_read_icee_release_step(ADIOS_FILE *adiosfile)
 {
     log_debug("%s\n", __FUNCTION__);
 }
 
-int 
-adios_read_icee_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_sec) 
+int
+adios_read_icee_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_sec)
 {
     log_debug("%s\n", __FUNCTION__);
     adios_errno = 0;
@@ -1122,11 +1169,11 @@ adios_read_icee_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_sec)
         usleep(0.1*1E6);
         waited_sec += 0.1;
     }
-    
+
     if (next != NULL)
     {
         icee_llist_ptr_t head = NULL;
-        head = icee_llist_search(icee_filelist, icee_fileinfo_checkname, 
+        head = icee_llist_search(icee_filelist, icee_fileinfo_checkname,
                                  (const void*) fp->fname);
         assert(head != NULL);
 
@@ -1136,13 +1183,13 @@ adios_read_icee_advance_step(ADIOS_FILE *adiosfile, int last, float timeout_sec)
         icee_fileinfo_free(fp);
     }
     else
-        adios_error (err_step_notready, 
+        adios_error (err_step_notready,
                      "No more data yet\n");
 
     return adios_errno;
 }
 
-int 
+int
 adios_read_icee_close(ADIOS_FILE * fp)
 {
     log_debug("%s\n", __FUNCTION__);
@@ -1151,21 +1198,21 @@ adios_read_icee_close(ADIOS_FILE * fp)
 }
 
 ADIOS_FILE *
-adios_read_icee_fopen(const char *fname, MPI_Comm comm) 
+adios_read_icee_fopen(const char *fname, MPI_Comm comm)
 {
     log_error("No support yet: %s\n", __FUNCTION__);
     return NULL;
 }
 
-int 
-adios_read_icee_is_var_timed(const ADIOS_FILE* fp, int varid) 
-{  
+int
+adios_read_icee_is_var_timed(const ADIOS_FILE* fp, int varid)
+{
     log_error("No support yet: %s\n", __FUNCTION__);
-    return 0; 
+    return 0;
 }
 
-void 
-adios_read_icee_get_groupinfo(const ADIOS_FILE *fp, int *ngroups, char ***group_namelist, uint32_t **nvars_per_group, uint32_t **nattrs_per_group) 
+void
+adios_read_icee_get_groupinfo(const ADIOS_FILE *fp, int *ngroups, char ***group_namelist, uint32_t **nvars_per_group, uint32_t **nattrs_per_group)
 {
     log_debug("%s\n", __FUNCTION__);
 
@@ -1177,15 +1224,15 @@ adios_read_icee_get_groupinfo(const ADIOS_FILE *fp, int *ngroups, char ***group_
         *group_namelist = (char **) malloc (sizeof (char*));
         *group_namelist[0] = strdup ("noname");
     }
-    
+
     return;
 }
 
-int 
-adios_read_icee_check_reads(const ADIOS_FILE* fp, ADIOS_VARCHUNK** chunk) 
-{ 
+int
+adios_read_icee_check_reads(const ADIOS_FILE* fp, ADIOS_VARCHUNK** chunk)
+{
     log_error("No support yet: %s\n", __FUNCTION__);
-    return 0; 
+    return 0;
 }
 
 int adios_read_icee_perform_reads(const ADIOS_FILE *adiosfile, int blocking)
@@ -1199,7 +1246,7 @@ adios_read_icee_inq_var_blockinfo(const ADIOS_FILE* fp,
                                   ADIOS_VARINFO* varinfo)
 {
     log_error("No support yet: %s\n", __FUNCTION__);
-    return 0; 
+    return 0;
 }
 
 int
@@ -1209,18 +1256,18 @@ adios_read_icee_inq_var_stat(const ADIOS_FILE* fp,
                              int per_block_stat)
 {
     log_error("No support yet: %s\n", __FUNCTION__);
-    return 0; 
+    return 0;
 }
 
 
-int 
+int
 adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
                                    const ADIOS_SELECTION *sel,
                                    int varid,
                                    int from_steps,
                                    int nsteps,
                                    void *data)
-{   
+{
     int i;
     icee_fileinfo_rec_ptr_t fp = (icee_fileinfo_rec_ptr_t) adiosfile->fh;
     log_debug("%s (%d:%s)\n", __FUNCTION__, varid, fp->fname);
@@ -1230,11 +1277,11 @@ adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
     {
         adios_error (err_invalid_timestep,
                      "Only one step can be read from a stream at a time. "
-                     "You requested % steps in adios_schedule_read()\n", 
+                     "You requested % steps in adios_schedule_read()\n",
                      nsteps);
         return err_invalid_timestep;
     }
-    
+
     icee_varinfo_rec_ptr_t vp = NULL;
     vp = icee_varinfo_search_byname(fp->varinfo, adiosfile->var_namelist[varid]);
     if (adios_verbose_level > 5) icee_varinfo_print(vp);
@@ -1248,7 +1295,7 @@ adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
     while (fp->merge_count != fp->nchunks)
     {
         log_debug("Waiting the rest of blocks (%d/%d)\n", fp->merge_count, fp->nchunks);
-        
+
         usleep(0.1*1E6);
     }
 
@@ -1292,7 +1339,7 @@ adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
                 int i;
 
                 if (adios_verbose_level > 5) icee_varinfo_print(vp);
-                    
+
                 mat_init(&m_sel, vp->typesize, vp->ndims, sel->u.bb.count, data);
                 mat_init(&m_var, vp->typesize, vp->ndims, vp->ldims, vp->data);
 
@@ -1301,11 +1348,11 @@ adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
 
                 for (i=0; i<vp->ndims; i++)
                 {
-                    count[i] = 
+                    count[i] =
                         MYMIN(sel->u.bb.start[i]+sel->u.bb.count[i],
                               vp->offsets[i]+vp->ldims[i]) - start[i];
                 }
-                    
+
                 for (i=0; i<vp->ndims; i++)
                 {
                     if (count[i] <= 0)
@@ -1324,7 +1371,7 @@ adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
                 view_init (&v_sel, &m_sel, count, s_offsets);
                 view_init (&v_var, &m_var, count, v_offsets);
                 view_copy (&v_sel, &v_var);
-                    
+
             next:
                 vp = icee_varinfo_search_byname(vp->next, adiosfile->var_namelist[varid]);
             }
@@ -1347,7 +1394,7 @@ adios_read_icee_schedule_read_byid(const ADIOS_FILE *adiosfile,
     return adios_errno;
 }
 
-int 
+int
 adios_read_icee_schedule_read(const ADIOS_FILE *adiosfile,
                               const ADIOS_SELECTION * sel,
                               const char * varname,
@@ -1359,7 +1406,7 @@ adios_read_icee_schedule_read(const ADIOS_FILE *adiosfile,
     return 0;
 }
 
-int 
+int
 adios_read_icee_get_attr (int *gp, const char *attrname,
                           enum ADIOS_DATATYPES *type,
                           int *size, void **data)
@@ -1368,7 +1415,7 @@ adios_read_icee_get_attr (int *gp, const char *attrname,
     return 0;
 }
 
-int 
+int
 adios_read_icee_get_attr_byid (const ADIOS_FILE *adiosfile, int attrid,
                                enum ADIOS_DATATYPES *type,
                                int *size, void **data)
@@ -1377,7 +1424,7 @@ adios_read_icee_get_attr_byid (const ADIOS_FILE *adiosfile, int attrid,
     return 0;
 }
 
-ADIOS_VARINFO* 
+ADIOS_VARINFO*
 adios_read_icee_inq_var(const ADIOS_FILE * adiosfile, const char* varname)
 {
     log_debug("%s (%s)\n", __FUNCTION__, varname);
@@ -1385,7 +1432,7 @@ adios_read_icee_inq_var(const ADIOS_FILE * adiosfile, const char* varname)
     return NULL;
 }
 
-ADIOS_VARINFO* 
+ADIOS_VARINFO*
 adios_read_icee_inq_var_byid (const ADIOS_FILE * adiosfile, int varid)
 {
     log_debug("%s (%d)\n", __FUNCTION__, varid);
@@ -1394,7 +1441,7 @@ adios_read_icee_inq_var_byid (const ADIOS_FILE * adiosfile, int varid)
     //assert((varid < fp->nvars) || (fp->nvars == 0));
 
     ADIOS_VARINFO *a = calloc(1, sizeof(ADIOS_VARINFO));
-    
+
     icee_varinfo_rec_ptr_t vp = NULL;
     vp = icee_varinfo_search_byname(fp->varinfo, adiosfile->var_namelist[varid]);
     //icee_varinfo_print(vp);
@@ -1405,7 +1452,7 @@ adios_read_icee_inq_var_byid (const ADIOS_FILE * adiosfile, int varid)
         a->type = vp->type;
         a->ndim = vp->ndims;
         a->nsteps = 1;
-        
+
         if (vp->ndims == 0)
         {
             a->value = malloc(vp->typesize);
@@ -1417,13 +1464,13 @@ adios_read_icee_inq_var_byid (const ADIOS_FILE * adiosfile, int varid)
             a->dims = malloc(dimsize);
             memcpy(a->dims, vp->gdims, dimsize);
             a->global = 1;
-            
+
             if (a->dims[0] == 0)
             {
                 a->global = 0;
                 memcpy(a->dims, vp->ldims, dimsize);
             }
-            
+
             a->value = NULL;
         }
     }
@@ -1431,7 +1478,7 @@ adios_read_icee_inq_var_byid (const ADIOS_FILE * adiosfile, int varid)
     return a;
 }
 
-void 
+void
 adios_read_icee_free_varinfo (ADIOS_VARINFO *adiosvar)
 {
     log_debug("%s\n", __FUNCTION__);
@@ -1440,10 +1487,10 @@ adios_read_icee_free_varinfo (ADIOS_VARINFO *adiosvar)
 }
 
 
-ADIOS_TRANSINFO* 
-adios_read_icee_inq_var_transinfo(const ADIOS_FILE *gp, 
+ADIOS_TRANSINFO*
+adios_read_icee_inq_var_transinfo(const ADIOS_FILE *gp,
                                   const ADIOS_VARINFO *vi)
-{    
+{
     log_debug("%s\n", __FUNCTION__);
     ADIOS_TRANSINFO *trans = malloc(sizeof(ADIOS_TRANSINFO));
     memset(trans, 0, sizeof(ADIOS_TRANSINFO));
@@ -1452,9 +1499,9 @@ adios_read_icee_inq_var_transinfo(const ADIOS_FILE *gp,
 }
 
 
-int 
-adios_read_icee_inq_var_trans_blockinfo(const ADIOS_FILE *gp, 
-                                        const ADIOS_VARINFO *vi, 
+int
+adios_read_icee_inq_var_trans_blockinfo(const ADIOS_FILE *gp,
+                                        const ADIOS_VARINFO *vi,
                                         ADIOS_TRANSINFO *ti)
 {
     log_error("No support yet: %s\n", __FUNCTION__);
@@ -1469,7 +1516,7 @@ adios_read_icee_get_dimension_order (const ADIOS_FILE *adiosfile)
 }
 
 void
-adios_read_icee_reset_dimension_order (const ADIOS_FILE *adiosfile, 
+adios_read_icee_reset_dimension_order (const ADIOS_FILE *adiosfile,
                                        int is_fortran)
 {
     log_error("No support yet: %s\n", __FUNCTION__);
diff --git a/src/transforms/Makefile.plugins b/src/transforms/Makefile.plugins
index 1a7db30..819100c 100644
--- a/src/transforms/Makefile.plugins
+++ b/src/transforms/Makefile.plugins
@@ -25,3 +25,7 @@ transforms_read_method_SOURCES += transforms/adios_transform_aplod_read.c
 # ALACRITY plugin:
 transforms_write_method_SOURCES += transforms/adios_transform_alacrity_write.c
 transforms_read_method_SOURCES += transforms/adios_transform_alacrity_read.c
+
+# zfp plugin:
+transforms_write_method_SOURCES += transforms/adios_transform_zfp_write.c
+transforms_read_method_SOURCES += transforms/adios_transform_zfp_read.c
diff --git a/src/transforms/adios_transform_zfp_common.h b/src/transforms/adios_transform_zfp_common.h
new file mode 100644
index 0000000..e453d07
--- /dev/null
+++ b/src/transforms/adios_transform_zfp_common.h
@@ -0,0 +1,235 @@
+/*
+ * adios_transform_zfp_common.h
+ *
+ * 	Author: Eric Suchyta
+ * 	contact: eric.d.suchyta at gmail.com
+ *
+ */
+
+#ifndef ADIOS_TRANSFORM_ZFP_COMMON_H_
+#define ADIOS_TRANSFORM_ZFP_COMMON_H_
+
+
+/* general C stuff */
+#include <stdint.h> 	// uint64_t
+#include <stdio.h>	// NULL, sprintf, sscanf
+#include <stdlib.h>	// NULL, malloc, free
+#include <string.h>	// memcpy, strcmp, strlen
+
+
+/* Were in the template included from ADIOS. Not necessarily sure if they're all strictly needed. */
+#include "core/transforms/adios_transforms_common.h"
+#include "core/transforms/adios_transforms_write.h"
+#include "core/transforms/adios_transforms_hooks_write.h"
+#include "core/transforms/adios_transforms_util.h"
+#include "core/transforms/adios_transforms_hooks_read.h"
+#include "core/transforms/adios_transforms_reqgroup.h"
+
+
+/* Extra ADIOS headers that weren't added in the template */
+#include "adios_logger.h" 		// log_warn()
+#include "public/adios_error.h"		// adios_error
+#include "public/adios_types.h"		// adios datatypes
+
+
+/* Sort of a hack to deal with ADIOS and ZFP both using TYPES_H */
+#ifdef TYPES_H
+#undef TYPES_H
+#endif 
+
+
+/* ZFP specific */
+#include "zfp.h"
+#define ZFP_STRSIZE 256		// size for string variables
+
+
+/* Transform metadata */
+struct zfp_metadata 
+{
+	uint64_t usize;			// uncompressed size;
+	uint64_t csize;			// compressed size	
+	uint cmode;			// compression mode
+	char ctol[ZFP_STRSIZE];		// string of "tolerance"
+	char name[ZFP_STRSIZE];		// variable name
+};
+
+
+/* Attributes related to ZFP's operation */
+struct zfp_buffer
+{
+	bool error;					// true if error
+	
+	char name[ZFP_STRSIZE]; 			// Name of variable
+	zfp_type type;					// data type
+	uint mode;					// 0 = accuracy, 1 = precsion, 2 = rate
+	char ctol[ZFP_STRSIZE];				// string for "tolerance"
+	uint ndims; 					// number of dimensions
+	uint* dims;					// array of dimension sizes
+
+	zfp_field* field;				// Point to the array that zfp will compress
+	zfp_stream* zstream;				// Connect field to this as input and to bitstream as output
+	bitstream* bstream;				// Stores the "sorted" bits. Send this into the output ADIOS buffer
+	size_t buffsize;				// Output bufffer size
+};
+
+
+/* Set a few defaults */
+static void init_zfp_buffer(struct zfp_buffer* zbuff, char* name)
+{
+	strcpy(zbuff->name, name);
+	zbuff->error = false;
+	return;
+}
+
+
+/* adios to zfp datatype */
+static int zfp_get_datatype(struct zfp_buffer* zbuff, enum ADIOS_DATATYPES type)
+{
+	if (type == adios_double) 
+	{
+		zbuff->type = zfp_type_double;
+	}
+	else if (type == adios_real) 
+	{
+		zbuff->type = zfp_type_float;
+	}
+	else 
+	{
+		adios_error(err_unspecified, "ZFP does not handle the type of variable %s. "
+				"Supported types are adios_double, adios_real.\n",
+				zbuff->name);
+		zbuff->error = true;
+		return 0;
+	}
+	return 1;
+}
+
+
+/* Configure ZFP according to the user's specified mode and tolerance */
+static void zfp_initialize(void* array, struct zfp_buffer* zbuff)
+{
+	zbuff->zstream = zfp_stream_open(NULL);
+
+	/* set up the field dimensionality */
+	if (zbuff->ndims == 1)
+	{
+		zbuff->field = zfp_field_1d(array, zbuff->type, zbuff->dims[0]);
+	}
+	else if (zbuff->ndims == 2)
+	{
+		zbuff->field = zfp_field_2d(array, zbuff->type, zbuff->dims[0], zbuff->dims[1]);
+	}
+	else if (zbuff->ndims == 3)
+	{
+		zbuff->field = zfp_field_3d(array, zbuff->type, zbuff->dims[0], zbuff->dims[1], zbuff->dims[2]);
+	}
+	else 
+	{
+		adios_error(err_invalid_dimension, "ZFP does not handle the %u dimensional variable %s. "
+			"Only 1, 2, and 3 dimensions are handled.\n",
+			zbuff->ndims, zbuff->name);
+		zbuff->error = true;
+		return;
+	}
+
+	
+	/* Which mode to use. Alrady checked that the mode is okay upstream. */
+	if (zbuff->mode == 0) 	// accuracy
+	{
+		double tol;
+		int success = sscanf(zbuff->ctol, "%lf", &tol);
+		if (success != 1) 
+		{
+			adios_error(err_invalid_argument, "Error in accuracy specification for variable %s: %s. "
+					"Provide a double value.\n",
+					zbuff->name, zbuff->ctol);
+			zbuff->error = true;
+			return;
+		}
+	       	zfp_stream_set_accuracy(zbuff->zstream, tol, zbuff->type);
+	}
+	else if (zbuff->mode == 1) 	// precision
+	{
+		uint tol;
+		long int ct;
+		char* end;
+		ct = strtol(zbuff->ctol, &end, 10);
+		if (ct == 0)
+		{
+			adios_error(err_invalid_argument, "Error in precision specification for variable %s: %s. "
+					"Provide an integer value.\n",
+					zbuff->name, zbuff->ctol);
+			zbuff->error = true;
+			return;
+		}
+
+		if (*end != '\0')
+		{
+			log_warn("A float was given for ZFP precision for variable %s: %s "
+					"-- the value was cast to an integer. ZFP accepts integer precisions.",
+					zbuff->name, zbuff->ctol);
+		}
+		tol = (uint) ct;
+
+
+		zfp_stream_set_precision(zbuff->zstream, tol, zbuff->type);
+	}
+	else if (zbuff->mode == 2) 	// rate
+	{
+		double tol;
+		int success = sscanf(zbuff->ctol, "%lf", &tol);
+		if (success != 1)
+		{
+		       	adios_error(err_invalid_argument, "Error in rate specification for variable %s: %s. "
+					"Provide a double value.\n",
+					zbuff->name, zbuff->ctol);
+			zbuff->error = true;
+			return;
+		}
+		zfp_stream_set_rate(zbuff->zstream, tol, zbuff->type, zbuff->ndims, 0);  // I don't know what the 0 is.
+	}
+	
+	zbuff->buffsize = zfp_stream_maximum_size(zbuff->zstream, zbuff->field);
+}
+
+
+/* Do the bit streaming */
+static void zfp_streaming(struct zfp_buffer* zbuff, void* abuff, bool decompress, uint64_t* finalsize)
+{
+
+	/* associate bit stream with allocated buffer */
+	zbuff->bstream = stream_open(abuff, zbuff->buffsize);
+	zfp_stream_set_bit_stream(zbuff->zstream, zbuff->bstream);
+	zfp_stream_rewind(zbuff->zstream);
+
+	/* (de)compress array */
+	if (decompress)
+	{
+		int success = zfp_decompress(zbuff->zstream, zbuff->field);
+		if (!success)
+		{
+			adios_error(err_transform_failure, "ZFP decompression failed for variable %s\n", zbuff->name);
+			zbuff->error = true;
+			return;
+		}
+	}
+	else 
+	{
+		*finalsize = (uint64_t) zfp_compress(zbuff->zstream, zbuff->field);
+		if (! *finalsize)
+		{
+			adios_error(err_transform_failure, "ZFP compression failed for variable %s\n", zbuff->name);
+			zbuff->error = true;
+			return;
+		}
+	}
+
+	/* clean up */
+	zfp_field_free(zbuff->field);
+	zfp_stream_close(zbuff->zstream);
+	stream_close(zbuff->bstream);
+	free(zbuff->dims);
+}
+
+
+#endif /* ADIOS_TRANSFORM_ZFP_COMMON_H_ */
diff --git a/src/transforms/adios_transform_zfp_read.c b/src/transforms/adios_transform_zfp_read.c
new file mode 100755
index 0000000..e63f753
--- /dev/null
+++ b/src/transforms/adios_transform_zfp_read.c
@@ -0,0 +1,223 @@
+/*
+ * adios_transform_zfp_read.c
+ *
+ * 	Author: Eric Suchyta
+ * 	Contact: eric.d.suchyta at gmail.com
+ */
+
+#include "core/transforms/adios_transforms_hooks_read.h"
+
+#ifdef ZFP
+
+/* general C stuff */
+#include <stdint.h>	// uint64_t
+#include <stdio.h> 	// NULL, sprintf
+#include <stdlib.h>	// NULL, malloc, free
+#include <string.h>	// memcpy, strcmp, strlen  
+#include <assert.h>
+
+
+/* Were in the template included from ADIOS. Not necessarily sure if they're all strictly needed. */
+#include "util.h"
+#include "core/transforms/adios_transforms_reqgroup.h"
+
+
+/* Extra ADIOS headers that weren't added in the template */
+#include "core/adios_internals.h" 	// adios_get_type_size()
+
+
+/* ZFP specific */
+#include "adios_transform_zfp_common.h"
+#include "zfp.h"
+
+
+
+/* Basically giving an address and a size */
+static void* zfp_read_metadata_var(const void* pos, size_t size, size_t* offset)
+{
+    *offset += size;
+    return ((void*) pos + *offset - size);
+}
+
+
+/* Read string by iterating over byes */
+static void read_metastring(char s[ZFP_STRSIZE], const void* pos, size_t* offset)
+{
+    int i;
+    for (i=0; i<ZFP_STRSIZE; i++)
+    {
+        s[i] = *((char*)zfp_read_metadata_var(pos, 1, offset));
+    }
+    return;
+}
+
+
+/* Read each memory location and cast to the correct type */
+static struct zfp_metadata* zfp_read_metadata(struct zfp_metadata* metadata, adios_transform_pg_read_request *completed_pg_reqgroup)
+{
+    const void* pos = completed_pg_reqgroup->transform_metadata;
+    size_t offset = 0;
+
+    metadata->usize = *((uint64_t*)zfp_read_metadata_var(pos, sizeof(uint64_t), &offset));
+    metadata->csize = *((uint64_t*)zfp_read_metadata_var(pos, sizeof(uint64_t), &offset));
+    metadata->cmode = *((uint*)zfp_read_metadata_var(pos, sizeof(uint), &offset));
+    read_metastring(metadata->ctol, pos, &offset);
+    read_metastring(metadata->name, pos, &offset);
+
+    return metadata;
+}
+
+
+
+/* This is called in the main transform-level function.
+ * In a nutshell: decompress array, using (undoing) the settings in the other args. Connect to the ADIOS buffer.
+ */
+static int zfp_decompression(struct zfp_buffer* zbuff, void* uarray, void* carray)
+{
+    zfp_initialize(uarray, zbuff);
+    if (zbuff->error)
+    {
+        return 0;
+    }
+
+
+    zfp_streaming(zbuff, carray, 1, NULL);
+    if (zbuff->error)
+    {
+        return 0;
+    }
+    /* Possibly add a check for output size later, if it matches what ADIOS though it should be.
+    if (zusize != usize)
+    {
+        log_warn("ZFP thinks uncompressed size is %u" \
+                "bytes. ADIOS thinks uncompressed size is %" PRIu64 \
+                "bytes. Likely corruption.\n", zusize, usize);
+    }
+    */
+
+    return 1;
+}
+
+
+/* ZFP is installed */
+int adios_transform_zfp_is_implemented (void) {return 1;}
+
+
+/* Kept the default. I think this is piecing together how to read a "block" from smaller subrequests*/
+int adios_transform_zfp_generate_read_subrequests(adios_transform_read_request *reqgroup, adios_transform_pg_read_request *pg_reqgroup)
+{
+    void *buf = malloc(pg_reqgroup->raw_var_length);
+    assert(buf);
+    adios_transform_raw_read_request *subreq = adios_transform_raw_read_request_new_whole_pg(pg_reqgroup, buf);
+    adios_transform_raw_read_request_append(pg_reqgroup, subreq);
+    return 0;
+}
+
+
+/* Kept the default. Template says "Do nothing for individual subrequest" */
+adios_datablock * adios_transform_zfp_subrequest_completed(adios_transform_read_request *reqgroup, 
+		adios_transform_pg_read_request *pg_reqgroup, adios_transform_raw_read_request *completed_subreq)
+{
+    return NULL;
+}
+
+
+adios_datablock * adios_transform_zfp_pg_reqgroup_completed(adios_transform_read_request *reqgroup, 
+		adios_transform_pg_read_request *completed_pg_reqgroup)
+{
+
+	int i;
+	int success;	// was (a piece of) the decompression okay
+
+
+	/* Get the transform metadata */
+	struct zfp_metadata* metadata = (struct zfp_metadata*) malloc(sizeof(struct zfp_metadata));	// allocate metadata
+	metadata = zfp_read_metadata(metadata, completed_pg_reqgroup);
+
+
+	/* Set up ZFP */
+	void* cdata = completed_pg_reqgroup->subreqs->data;						// get the compressed data
+	struct zfp_buffer* zbuff = (struct zfp_buffer*) malloc(sizeof(struct zfp_buffer));		// Handle zfp streaming
+	init_zfp_buffer(zbuff, metadata->name);
+
+	
+	/* Get the data native to ADIOS (as opposed to the metadata which only the tranform plugin knows about) */
+	uint64_t csize = (uint64_t)completed_pg_reqgroup->raw_var_length;
+	uint64_t usize = adios_get_type_size(reqgroup->transinfo->orig_type, "");
+
+	zbuff->ndims = (uint) reqgroup->transinfo->orig_ndim;
+	zbuff->dims = malloc(zbuff->ndims*sizeof(uint));
+	for(i=0; i<zbuff->ndims; i++)
+	{
+		usize *= completed_pg_reqgroup->orig_varblock->count[i];
+		zbuff->dims[i] = (uint) completed_pg_reqgroup->orig_varblock->count[i];
+	}
+
+
+	/* Do the metadata and ADIOS agree? */
+	if (metadata->csize != csize)
+	{
+		log_warn("zfp processing variable %s: Metadata thinks compressed size is %" PRIu64 \
+				"bytes. ADIOS thinks compressed size is %" PRIu64 \
+				"bytes. Likely corruption.\n", zbuff->name, metadata->csize, csize);
+	}
+
+	if (metadata->usize != usize)
+	{
+		log_warn("zfp processing variable %s: Metadata thinks uncompressed size is %" PRIu64 \
+				"bytes. ADIOS thinks uncompressed size is %" PRIu64 \
+				"bytes. Likely corruption.\n", zbuff->name, metadata->usize, usize);
+	}
+
+
+	/* zfp datatype */
+	success = zfp_get_datatype(zbuff, reqgroup->transinfo->orig_type);
+	if (!success)
+	{
+		return NULL;
+	}
+
+	
+	/* mode */
+	zbuff->mode = metadata->cmode;
+	strcpy(zbuff->ctol, metadata->ctol);
+
+
+	/* Allocate the array we'll store the uncompressed data in */
+	void* udata;
+	udata = malloc(usize);
+	if(!udata)
+	{
+		adios_error(err_no_memory, "Ran out of memory allocating uncompressed "
+				"buffer for ZFP transformation.\n");
+		return NULL;
+	}
+
+
+       	/* possibly add check for successful decompression eventually */ 
+	success = zfp_decompression(zbuff, udata, cdata);
+        if(!success)
+        {
+            return NULL;
+        }
+
+	free(zbuff);
+	free(metadata);
+	
+	return adios_datablock_new_whole_pg(reqgroup, completed_pg_reqgroup, udata);
+}
+
+
+/* Kept the default. Template says "Do nothing for the full read request complete (typical)" */
+adios_datablock * adios_transform_zfp_reqgroup_completed(adios_transform_read_request *completed_reqgroup)
+{
+    return NULL;
+}
+
+
+#else
+
+DECLARE_TRANSFORM_READ_METHOD_UNIMPL(zfp);
+
+#endif
+
diff --git a/src/transforms/adios_transform_zfp_write.c b/src/transforms/adios_transform_zfp_write.c
new file mode 100755
index 0000000..b4e6412
--- /dev/null
+++ b/src/transforms/adios_transform_zfp_write.c
@@ -0,0 +1,268 @@
+/*
+ * adios_transform_zfp_write.c
+ *
+ * 	Author: Eric Suchyta
+ * 	Contact: eric.d.suchyta at gmail.com
+ */
+
+#include "core/transforms/adios_transforms_hooks_write.h"
+
+#ifdef ZFP
+
+/* general C stuff */
+#include <stdint.h>	// uint64_t
+#include <stdio.h> 	// NULL, sprintf
+#include <stdlib.h>	// NULL, malloc, free
+#include <string.h>	// memcpy, strcmp, strlen
+
+
+/* Were in the template included from ADIOS. Not necessarily sure if they're all strictly needed. */
+#include "core/transforms/adios_transforms_common.h"
+#include "core/transforms/adios_transforms_write.h"
+#include "core/transforms/adios_transforms_util.h"
+
+
+/* Extra ADIOS headers that weren't added in the template */
+//#include "core/adios_internals.h" 	// count_dimensions
+
+
+/* ZFP specific */
+#include "adios_transform_zfp_common.h"
+#include "zfp.h"
+
+
+/* Basically giving an address and a size */
+static void zfp_write_metadata_var(char* pos, void* towrite, size_t size, size_t* offset)
+{
+    memcpy(pos + *offset, towrite, size);
+    *offset += size;
+    return;
+}
+
+
+/* This is called in the main transform-level function.
+ * In a nutshell: compress array, using the settings in the other args to configure the compression. Connect to the ADIOS output buffer.
+ */
+static int zfp_compression(struct zfp_buffer* zbuff, const void* array, void** abuff, uint64_t* asize, int sharedbuffer, struct adios_file_struct* fd)
+{
+    zfp_initialize((void*) array, zbuff);
+    if (zbuff->error)
+    {
+        return 0;
+    }
+
+
+    if (sharedbuffer)
+    {
+        if (!shared_buffer_reserve(fd, zbuff->buffsize))
+        {
+            adios_error(err_no_memory, "Cannot allocate shared buffer of %zu bytes for ZFP transform for variable %s\n",
+                        zbuff->buffsize, zbuff->name);
+            zbuff->error = true;
+
+            return 0;
+        }
+        *abuff =  fd->offset + fd->buffer;
+    }
+    else
+    {
+        *abuff = malloc(zbuff->buffsize);
+        if (! *abuff)
+        {
+            adios_error(err_no_memory, "Cannot allocate buffer of %zu bytes for ZFP transform for variable %s\n",
+                        zbuff->buffsize, zbuff->name);
+            zbuff->error = true;
+            return 0;
+        }
+    }
+
+
+    zfp_streaming(zbuff, *abuff, 0, asize);
+    if (zbuff->error)
+    {
+        return 0;
+    }
+
+
+    return 1;
+}
+
+
+
+/* see zfp_metadata in adios_transform_zfp_common.h */
+uint16_t adios_transform_zfp_get_metadata_size(struct adios_transform_spec *transform_spec)
+{
+	return (2*sizeof(uint64_t) + sizeof(uint) + 2*ZFP_STRSIZE);
+}
+
+
+/* Template says: 'Doing nothing defaults to "no transform effect on data size"'. 
+ * I think this means a blank function equates to I don't need to grow the array to do transform */
+void adios_transform_zfp_transformed_size_growth(const struct adios_var_struct *var, const struct adios_transform_spec *transform_spec,
+		uint64_t *constant_factor, double *linear_factor, double *capped_linear_factor, uint64_t *capped_linear_cap)
+{
+	return;
+}
+
+
+/* Get the length of each dimension. ZFP needs to know this. */
+static void get_dims(const struct adios_dimension_struct* d, struct zfp_buffer* zbuff, struct adios_var_struct* var, struct adios_file_struct *fd)
+{
+	uint zdim;
+	int i, ii;
+	struct adios_dimension_struct *ddim = (struct adios_dimension_struct *) d;
+
+	zbuff->ndims = (uint) count_dimensions(d);
+	zbuff->dims = malloc(zbuff->ndims*sizeof(uint));
+
+	for (i=0; i<zbuff->ndims; i++)
+	{
+		zdim = (uint) adios_get_dim_value(&ddim->dimension);
+		if (fd->group->adios_host_language_fortran == adios_flag_yes) ii = zbuff->ndims - 1 - i;
+		else ii = i;
+		zbuff->dims[ii] = zdim;
+		ddim = ddim->next;
+	}
+
+	return;
+}
+
+
+/* Does the main compression work */
+int adios_transform_zfp_apply(struct adios_file_struct *fd, struct adios_var_struct *var, 
+		uint64_t *transformed_len, int use_shared_buffer, int *wrote_to_shared_buffer)
+{
+
+	int success; 			// Did (some part of) compression succeed?
+	void* outbuffer = NULL;		// What to send to ADIOS
+	uint64_t outsize;		// size of output buffer
+
+	uint64_t insize = adios_transform_get_pre_transform_var_size(var); 			// size of input buffer
+	struct zfp_buffer* zbuff = (struct zfp_buffer*) malloc(sizeof(struct zfp_buffer));	// Handle zfp streaming
+	init_zfp_buffer(zbuff, var->name);
+
+
+	/* adios to zfp datatype */
+	success = zfp_get_datatype(zbuff, var->pre_transform_type);
+	if (!success)
+	{
+		return 0;
+	}
+
+
+	/* dimensionality */
+	struct adios_dimension_struct* d = var->pre_transform_dimensions;
+	get_dims(d, zbuff, var, fd);
+
+
+	/* make sure the user only gives the sensible number of key:values -- 1. */
+	if (var->transform_spec->param_count == 0)
+	{
+	    adios_error(err_invalid_argument, "No ZFP compression mode specified for variable %s. "
+	                "Choose from: accuracy, precision, rate\n", zbuff->name);
+	    zbuff->error = true;
+	    return 0;
+	}
+	else if (var->transform_spec->param_count > 1)
+	{
+	    adios_error(err_invalid_argument, "Too many ZFP parameters specified for variable %s. "
+	                "You can only give one key:value, the compression mode and it's tolerance.\n",
+	                zbuff->name);
+	    zbuff->error = true;
+		return 0;
+	}
+	else if (var->transform_spec->param_count < 0)
+	{
+	    adios_error(err_invalid_argument, "Negative number of ZFP parameters for variable %s indicates corruption.\n",
+	                zbuff->name);
+        zbuff->error = true;
+		return 0;
+	}
+
+
+	/* Which zfp mode to use */
+	const struct adios_transform_spec_kv_pair* const param = &var->transform_spec->params[0];
+	if (strcmp(param->key, "accuracy") == 0) 
+	{
+		zbuff->mode = 0;
+	}
+	else if (strcmp(param->key, "precision") == 0)
+	{
+		zbuff->mode = 1;
+	}
+	else if (strcmp(param->key, "rate") == 0)
+	{
+		zbuff->mode = 2;
+	}
+	else 
+	{
+        adios_error(err_invalid_argument, "An unknown ZFP compression mode '%s' was specified for variable %s. "
+                    "Available choices are: accuracy, precision, rate.\n",
+                    param->key, zbuff->name);
+        zbuff->error = true;
+		return 0;
+	}
+
+	if (param->value == NULL)
+	{
+        adios_error(err_invalid_argument, "ZFP compression type %s must be given a value "
+                    "to set the output storage parameter for variable %s.\n",
+                    param->key, zbuff->name);
+        zbuff->error = true;
+		return 0;
+	}
+	strcpy(zbuff->ctol, param->value);
+
+
+	/* do compression */
+	success = zfp_compression(zbuff, var->data, &outbuffer, &outsize, use_shared_buffer, fd);
+
+  
+	/* What do do if compresssion fails. For now, just give up. Maybe eventually use raw data. */
+	if(!success)
+	{
+		return 0;
+	}
+
+	
+	/* Write the data */
+	*wrote_to_shared_buffer = use_shared_buffer;
+	if (*wrote_to_shared_buffer) 
+	{
+		shared_buffer_mark_written(fd, outsize);
+	} 
+	else 
+	{
+		var->adata = outbuffer;
+		var->data_size = outsize;
+		var->free_data = adios_flag_yes;
+	}
+
+
+	/* Write the transform metadata */
+	char* pos = (char*)var->transform_metadata;
+	size_t offset = 0;
+	
+	if(var->transform_metadata && var->transform_metadata_len > 0)
+	{
+		zfp_write_metadata_var(pos, &insize, sizeof(uint64_t), &offset);
+		zfp_write_metadata_var(pos, &outsize, sizeof(uint64_t), &offset);
+		zfp_write_metadata_var(pos, &zbuff->mode, sizeof(uint), &offset);
+		zfp_write_metadata_var(pos, zbuff->ctol, ZFP_STRSIZE, &offset);
+		zfp_write_metadata_var(pos, zbuff->name, ZFP_STRSIZE, &offset);
+	}
+
+
+	/* clean up */
+	free(zbuff);
+
+	*transformed_len = outsize; // Return the size of the data buffer
+	return 1;
+}
+
+#else
+
+DECLARE_TRANSFORM_WRITE_METHOD_UNIMPL(zfp)
+
+#endif
+
diff --git a/src/transforms/transform_plugins.h b/src/transforms/transform_plugins.h
index 0ee1938..a0b97d9 100644
--- a/src/transforms/transform_plugins.h
+++ b/src/transforms/transform_plugins.h
@@ -11,4 +11,5 @@ REGISTER_TRANSFORM_PLUGIN(szip, "szip", "szip", "szip compression")
 REGISTER_TRANSFORM_PLUGIN(isobar, "isobar", "ncsu-isobar", "ISOBAR compression")
 REGISTER_TRANSFORM_PLUGIN(aplod, "aplod", "ncsu-aplod", "APLOD byte-columnar precision-level-of-detail access format")
 REGISTER_TRANSFORM_PLUGIN(alacrity, "alacrity", "ncsu-alacrity", "ALACRITY indexing")
+REGISTER_TRANSFORM_PLUGIN(zfp, "zfp", "zfp", "zfp compression")
 
diff --git a/src/write/adios_dataspaces.c b/src/write/adios_dataspaces.c
index 5066aad..15d5952 100644
--- a/src/write/adios_dataspaces.c
+++ b/src/write/adios_dataspaces.c
@@ -1015,7 +1015,7 @@ void adios_dataspaces_finalize (int mype, struct adios_method_struct * method)
             }
         }
 
-        free_dspaces_stream_info(md);
+        free_dspaces_stream_info();
 
         log_info("%s: Disconnect from DATASPACES server now, rank=%d ...\n", __func__, mype);
         // disconnect from dataspaces if we are connected from writer but not anymore from reader
diff --git a/src/write/adios_flexpath.c b/src/write/adios_flexpath.c
index 4ef7963..e462074 100644
--- a/src/write/adios_flexpath.c
+++ b/src/write/adios_flexpath.c
@@ -48,7 +48,7 @@
 
 /************************* Structure and Type Definitions ***********************/
 // used for messages in the control queue
-typedef enum {VAR=0, DATA_FLUSH, OPEN, CLOSE, INIT, EVGROUP_FLUSH, DATA_BUFFER} FlexpathMessageType;
+typedef enum {VAR=0, DATA_FLUSH, OPEN, CLOSE, INIT, EVGROUP_FLUSH, DATA_BUFFER, FINALIZE} FlexpathMessageType;
 
 // maintains connection information
 typedef struct _flexpath_stone {
@@ -1131,6 +1131,7 @@ process_data_flush(FlexpathWriteFileData *fileData,
 void
 process_var_msg(FlexpathWriteFileData *fileData, Var_msg *varMsg)
 {
+    fp_verbose(fileData, "process Var msg for variable \"%s\"\n", varMsg->var_name);
     fileData->askedVars = add_var(fileData->askedVars, 
 				  strdup(varMsg->var_name), 
 				  NULL, 
@@ -1138,8 +1139,30 @@ process_var_msg(FlexpathWriteFileData *fileData, Var_msg *varMsg)
 }
 
 void
+drop_queued_data(FlexpathWriteFileData *fileData, int timestep)
+{
+    FlexpathQueueNode* node = threaded_dequeue(&fileData->dataQueue,
+					       &fileData->dataMutex,
+					       &fileData->dataCondition, 1);
+    FMfree_var_rec_elements(fileData->fm->ioFormat, node->data);
+
+    drop_evgroup_msg *dropMsg = malloc(sizeof(drop_evgroup_msg));
+    dropMsg->step = fileData->readerStep;
+    int wait = CMCondition_get(flexpathWriteData.cm, NULL);
+    dropMsg->condition = wait;
+    fp_verbose(fileData, "******* Triggering drop MSG\n");
+    EVsubmit_general(fileData->dropSource, dropMsg, drop_evgroup_msg_free, fileData->attrs);
+    //EVsubmit_general(fileData->dropSource, dropMsg, NULL, fileData->attrs);
+    // Will have to change when not using ctrl thread.
+    CMCondition_wait(flexpathWriteData.cm,  wait);
+    
+    fileData->readerStep++;
+}
+
+void
 process_open_msg(FlexpathWriteFileData *fileData, op_msg *open)
 {
+    fp_verbose(fileData, " Process Open msg, bridge %d, timestep %d\n", open->process_id, open->step);
     fileData->bridges[open->process_id].step = open->step;
     fileData->bridges[open->process_id].condition = open->condition;
     if (!fileData->bridges[open->process_id].created) {
@@ -1157,6 +1180,10 @@ process_open_msg(FlexpathWriteFileData *fileData, op_msg *open)
 			    fileData->bridges[open->process_id].myNum);
     }	
 	
+    if (open->step == fileData->readerStep + 1) {
+	drop_queued_data(fileData, fileData->readerStep);
+    }
+
     if (open->step == fileData->readerStep) {
 	pthread_mutex_lock(&fileData->openMutex);
 	fileData->openCount++;  
@@ -1181,32 +1208,54 @@ process_open_msg(FlexpathWriteFileData *fileData, op_msg *open)
 }
 
 void
+process_finalize_msg(FlexpathWriteFileData *fileData, op_msg *finalize)
+{
+    fp_verbose(fileData, " Process Finalize msg, bridge %d, timestep %d\n", finalize->process_id, finalize->step);
+	
+    FlexpathQueueNode* node = threaded_dequeue(&fileData->dataQueue,
+					       &fileData->dataMutex,
+					       &fileData->dataCondition, 1);
+    FMfree_var_rec_elements(fileData->fm->ioFormat, node->data);
+
+    drop_evgroup_msg *dropMsg = malloc(sizeof(drop_evgroup_msg));
+    dropMsg->step = fileData->readerStep;
+    int wait = CMCondition_get(flexpathWriteData.cm, NULL);
+    dropMsg->condition = wait;
+    fp_verbose(fileData, "******* Triggering drop MSG\n");
+    EVsubmit_general(fileData->dropSource, dropMsg, drop_evgroup_msg_free, fileData->attrs);
+    //EVsubmit_general(fileData->dropSource, dropMsg, NULL, fileData->attrs);
+    // Will have to change when not using ctrl thread.
+    CMCondition_wait(flexpathWriteData.cm,  wait);
+}
+
+void
 process_close_msg(FlexpathWriteFileData *fileData, op_msg *close)
 {
 
+    fp_verbose(fileData, " process close msg, bridge %d\n", close->process_id);
     pthread_mutex_lock(&fileData->openMutex);
     fileData->openCount--;
     fileData->bridges[close->process_id].opened=0;
     fileData->bridges[close->process_id].condition = close->condition;
     pthread_mutex_unlock(&fileData->openMutex);
 
-    if (fileData->openCount==0) {
-	FlexpathQueueNode* node = threaded_dequeue(&fileData->dataQueue, 
-						   &fileData->dataMutex, 
-						   &fileData->dataCondition, 1);
-	FMfree_var_rec_elements(fileData->fm->ioFormat, node->data);
-
-	drop_evgroup_msg *dropMsg = malloc(sizeof(drop_evgroup_msg));
-	dropMsg->step = fileData->readerStep;
-	int wait = CMCondition_get(flexpathWriteData.cm, NULL);
-	dropMsg->condition = wait;
-	EVsubmit_general(fileData->dropSource, dropMsg, drop_evgroup_msg_free, fileData->attrs);
-	//EVsubmit_general(fileData->dropSource, dropMsg, NULL, fileData->attrs);
-	// Will have to change when not using ctrl thread.
-	CMCondition_wait(flexpathWriteData.cm,  wait); 		    
+    /* if (fileData->openCount==0) { */
+    /* 	FlexpathQueueNode* node = threaded_dequeue(&fileData->dataQueue,  */
+    /* 						   &fileData->dataMutex,  */
+    /* 						   &fileData->dataCondition, 1); */
+    /* 	FMfree_var_rec_elements(fileData->fm->ioFormat, node->data); */
+
+    /* 	drop_evgroup_msg *dropMsg = malloc(sizeof(drop_evgroup_msg)); */
+    /* 	dropMsg->step = fileData->readerStep; */
+    /* 	int wait = CMCondition_get(flexpathWriteData.cm, NULL); */
+    /* 	dropMsg->condition = wait; */
+    /* 	EVsubmit_general(fileData->dropSource, dropMsg, drop_evgroup_msg_free, fileData->attrs); */
+    /* 	//EVsubmit_general(fileData->dropSource, dropMsg, NULL, fileData->attrs); */
+    /* 	// Will have to change when not using ctrl thread. */
+    /* 	CMCondition_wait(flexpathWriteData.cm,  wait); 		     */
 		     
-	fileData->readerStep++;
-    }
+    /* 	fileData->readerStep++; */
+    /* } */
 		
     op_msg *ack = malloc(sizeof(op_msg));
     ack->file_name = strdup(fileData->name);
@@ -1228,6 +1277,7 @@ var_handler(CManager cm, void *vevent, void *client_data, attr_list attrs)
 {
     FlexpathWriteFileData* fileData = (FlexpathWriteFileData*) client_data;
     Var_msg* msg = (Var_msg*) vevent;
+    fp_verbose(fileData, " var_msg received and queued\n");
     EVtake_event_buffer(cm, vevent);
     threaded_enqueue(&fileData->controlQueue, msg, VAR, 
 		     &fileData->controlMutex, &fileData->controlCondition, -1);
@@ -1240,7 +1290,7 @@ flush_handler(CManager cm, void* vevent, void* client_data, attr_list attrs)
     FlexpathWriteFileData* fileData = (FlexpathWriteFileData*) client_data;
     Flush_msg* msg = (Flush_msg*) vevent;
     int err = EVtake_event_buffer(cm, vevent);
-    //fprintf(stderr, "writer:%d:got_flush for reader:%d:reader_step:%d:writer_step:%d\n", fileData->rank, msg->process_id, fileData->readerStep, fileData->writerStep);
+    fp_verbose(fileData, "flush_msg received and queued\n");
     threaded_enqueue(&fileData->controlQueue, msg, DATA_FLUSH, 
 		     &fileData->controlMutex, &fileData->controlCondition,
 		     -1);
@@ -1250,8 +1300,10 @@ flush_handler(CManager cm, void* vevent, void* client_data, attr_list attrs)
 
 static int
 drop_evgroup_handler(CManager cm, void *vevent, void *client_data, attr_list attrs) {
+    FlexpathWriteFileData* fileData = (FlexpathWriteFileData*) client_data;
     drop_evgroup_msg *msg = vevent;
     // will have to change when not using control thread.
+    fp_verbose(fileData, "got drop evgroup message, signalling\n");
     CMCondition_signal(cm, msg->condition);    
     return 0;
 }
@@ -1262,12 +1314,19 @@ op_handler(CManager cm, void* vevent, void* client_data, attr_list attrs)
     FlexpathWriteFileData* fileData = (FlexpathWriteFileData*) client_data;
     op_msg* msg = (op_msg*) vevent;
     EVtake_event_buffer(cm, vevent);
-    if (msg->type == OPEN_MSG) {
+    fp_verbose(fileData, " op_msg received, message type %d\n", msg->type);
+    if(msg->type == OPEN_MSG) {
+	fp_verbose(fileData, " enqueueing open msg, bridge %d, step %d\n", msg->process_id, msg->step);
         threaded_enqueue(&fileData->controlQueue, msg, OPEN, 
 			 &fileData->controlMutex, &fileData->controlCondition, -1);
-    } else if (msg->type == CLOSE_MSG) {
+    } else if(msg->type == CLOSE_MSG) {
+	fp_verbose(fileData, " enqueueing close msg, bridge %d, step %d\n", msg->process_id, msg->step);
         threaded_enqueue(&fileData->controlQueue, msg, CLOSE, 
 			 &fileData->controlMutex, &fileData->controlCondition, -1);  			
+    } else if(msg->type == FINALIZE_MSG) {
+	fp_verbose(fileData, " enqueueing finalize msg, bridge %d\n", msg->process_id);
+        threaded_enqueue(&fileData->controlQueue, msg, FINALIZE, 
+			 &fileData->controlMutex, &fileData->controlCondition, -1);  			
     }
     return 0;
 }
@@ -1281,8 +1340,10 @@ control_thread(void *arg)
     FlexpathQueueNode *controlMsg;
     FlexpathQueueNode *dataNode;
     while (1) {
+//	fp_verbose(fileData, " Control thread waiting on msg\n");
 	if ((controlMsg = threaded_dequeue(&fileData->controlQueue, 
 	    &fileData->controlMutex, &fileData->controlCondition, 0))) {
+//	    fp_verbose(fileData, " Control thread got a msg\n");
 	    if (controlMsg->type==VAR) {
 		Var_msg *varMsg = (Var_msg*) controlMsg->data;
 		process_var_msg(fileData, varMsg);
@@ -1301,6 +1362,11 @@ control_thread(void *arg)
 		process_open_msg(fileData, open);                
 		EVreturn_event_buffer(flexpathWriteData.cm, open);
             }
+	    else if (controlMsg->type==FINALIZE) {
+                op_msg *open = (op_msg*) controlMsg->data;
+		process_finalize_msg(fileData, open);                
+		EVreturn_event_buffer(flexpathWriteData.cm, open);
+            }
 	    else if (controlMsg->type==CLOSE) {
                 op_msg* close = (op_msg*) controlMsg->data;
 		process_close_msg(fileData, close);
@@ -1341,6 +1407,30 @@ find_open_file(char* name)
 }
 
 
+void
+stone_close_handler(CManager cm, CMConnection conn, int closed_stone, void *client_data)
+{
+    FlexpathWriteFileData* file = flexpathWriteData.openFiles;
+    while (file) {
+	int i;
+	for (i=0; i < file->numBridges; i++) {
+	    if (file->bridges[i].myNum == closed_stone) {
+		int j;
+		file->bridges[i].opened = 0;
+		for (j=0; j< file->numBridges; j++) {
+		    if (file->bridges[j].opened == 1) {
+			/* if any bridge still open, simply return at this point, we're done */
+			return;
+		    }
+		}
+		/* no bridges in this file still open, drop all data */
+		drop_queued_data(file, -1);
+	    }
+	}
+        file = file->next;
+    }
+}
+
 // Initializes flexpath write local data structures
 extern void 
 adios_flexpath_init(const PairStruct *params, struct adios_method_struct *method) 
@@ -1380,6 +1470,8 @@ adios_flexpath_init(const PairStruct *params, struct adios_method_struct *method
     if (!forked) {
 	fprintf(stderr, "Wrtier error forking comm thread\n");
     }
+
+    EVregister_close_handler(flexpathWriteData.cm, stone_close_handler, &flexpathWriteData);
 }
 
 extern int 
@@ -1600,6 +1692,7 @@ adios_flexpath_write(
     FlexpathWriteFileData* fileData = find_open_file(method->group->name);
     FlexpathFMStructure* fm = fileData->fm;
 
+    fp_verbose(fileData, " adios_flexpath_write called\n");
     if (fm == NULL)
     {
 	log_error("adios_flexpath_write: something has gone wrong with format registration: %s\n", 
@@ -1683,6 +1776,7 @@ adios_flexpath_close(struct adios_file_struct *fd, struct adios_method_struct *m
     void *buffer = malloc(fileData->fm->size);    
     memcpy(buffer, fileData->fm->buffer, fileData->fm->size);
 
+    fp_verbose(fileData, " adios_flexpath_close called\n");
     threaded_enqueue(&fileData->dataQueue, buffer, 
 		     DATA_BUFFER,
 		     &fileData->dataMutex, 
@@ -1790,7 +1884,8 @@ extern void
 adios_flexpath_finalize(int mype, struct adios_method_struct *method) 
 {
     FlexpathWriteFileData* fileData = flexpathWriteData.openFiles;
-    while (fileData) {
+    fp_verbose(fileData, "adios_flexpath_finalize called\n");
+    while(fileData) {
 
 	update_step_msg *stepmsg = malloc(sizeof(update_step_msg));
 	stepmsg->finalized = 1;
@@ -1800,6 +1895,7 @@ adios_flexpath_finalize(int mype, struct adios_method_struct *method)
 
         pthread_mutex_lock(&fileData->dataMutex);
         while (fileData->dataQueue != NULL) {
+	    fp_verbose(fileData, " Wait in flexpath finalize\n");
 	    pthread_cond_wait(&fileData->dataCondition, &fileData->dataMutex);
 	}
 	pthread_mutex_unlock(&fileData->dataMutex);
diff --git a/src/write/adios_icee.c b/src/write/adios_icee.c
index b3d7e1e..99dca22 100644
--- a/src/write/adios_icee.c
+++ b/src/write/adios_icee.c
@@ -54,7 +54,7 @@
 ///////////////////////////
 #include "core/globals.h"
 
-#define DUMP(fmt, ...) fprintf(stderr, ">>> "fmt"\n", ## __VA_ARGS__); 
+#define DUMP(fmt, ...) fprintf(stderr, ">>> "fmt"\n", ## __VA_ARGS__);
 
 #define MYMALLOC(var, size) {                       \
         var = malloc(size);                         \
@@ -82,6 +82,7 @@ EVsource (*source)[ICEE_MAX_PARALLEL];
 static int n_client = 0;
 static int max_client = 1;
 static int is_cm_passive = 0;
+static int use_probe = 0;
 
 static icee_fileinfo_rec_ptr_t fp = NULL;
 static int reverse_dim = 0;
@@ -516,11 +517,11 @@ icee_contactinfo_handler(CManager cm, void *vevent, void *client_data, attr_list
     log_debug ("%s\n", __FUNCTION__);
 
     icee_contactinfo_rec_ptr_t event = vevent;
-    if (adios_verbose_level > 5) 
+    if (adios_verbose_level > 5)
         icee_contactinfo_print(event);
 
     icee_contactinfo_rec_ptr_t prev = NULL;
-    int num_parallel = 0;    
+    int num_parallel = 0;
     while (event != NULL)
     {
         icee_contactinfo_rec_t *c = malloc(sizeof(icee_contactinfo_rec_t));
@@ -546,10 +547,10 @@ icee_contactinfo_handler(CManager cm, void *vevent, void *client_data, attr_list
     return 1;
 }
 
-void *dosubmit(icee_fileinfo_rec_t *fp)  
+void *dosubmit(icee_fileinfo_rec_t *fp)
 {
-    if (adios_verbose_level > 5) 
-        DUMP("threadid is %lu, submitting %d(%s)", 
+    if (adios_verbose_level > 5)
+        DUMP("threadid is %lu, submitting %d(%s)",
              (unsigned long)pthread_self(), fp->varinfo->varid, fp->varinfo->varname);
 
     int i;
@@ -559,18 +560,18 @@ void *dosubmit(icee_fileinfo_rec_t *fp)
         EVsubmit(source[i][k], fp, NULL);
     }
 
-    
+
     icee_varinfo_rec_ptr_t vp = fp->varinfo;
     free(vp->varname);
     free(vp->gdims);
     free(vp->ldims);
     free(vp->offsets);
     free(fp);
-    
-    return NULL;  
-}  
 
-void 
+    return NULL;
+}
+
+void
 on_icee_passivecheckin_request (CManager cm, CMConnection conn, icee_passivecheckin_rec_t *m)
 {
     log_debug("%s\n", __FUNCTION__);
@@ -581,9 +582,39 @@ on_icee_passivecheckin_request (CManager cm, CMConnection conn, icee_passivechec
     return;
 }
 
+void
+send_probe (int nprobe)
+{
+    icee_fileinfo_rec_ptr_t f;    
+    MYCALLOC(f, 1, sizeof(icee_fileinfo_rec_t));
+
+    f->fname = "_icee_.probe";
+    f->next = NULL;
+
+    int i;
+    for (i=0; i<nprobe; i++)
+    {
+        f->timestamp = MPI_Wtime();
+        
+        if (!is_cm_passive)
+            EVsubmit(icee_write_source, f, NULL);
+        else
+        {
+            CMFormat fm = CMlookup_format(icee_write_cm, icee_fileinfo_format_list);
+            int i;
+            for (i=0; i<n_client; i++)
+                if (CMwrite(icee_write_cm_conn[i], fm, (void*)f) != 1)
+                    log_error ("Sending fileinfo failed\n");
+        }
+        usleep(0.1*1E7);
+    }
+
+    free(f);
+}
+
 // Initializes icee write local data structures
-extern void 
-adios_icee_init(const PairStruct *params, struct adios_method_struct *method) 
+extern void
+adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
 {
     log_debug ("%s\n", __FUNCTION__);
 
@@ -595,7 +626,7 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
     int rank;
     MPI_Comm_rank(method->init_comm, &rank);
     log_debug ("rank : %d\n", rank);
-    
+
 
     const PairStruct * p = params;
 
@@ -622,7 +653,7 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
 
             char* token = strtok(p->value, ",");
             int len = 0;
-            while (token) 
+            while (token)
             {
                 plist[len] = token;
 
@@ -681,6 +712,10 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
         {
             is_cm_passive = atoi(p->value);
         }
+        else if (!strcasecmp (p->name, "use_probe"))
+        {
+            use_probe = atoi(p->value);
+        }
 
         p = p->next;
     }
@@ -697,10 +732,10 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
         // Init parallel
         if (icee_num_parallel > 1)
         {
-            pthread_attr_t attr;  
-            pthread_attr_init(&attr);  
-            pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);  
-            icee_pool = thr_pool_create(icee_num_parallel,icee_num_parallel,10,NULL);  
+            pthread_attr_t attr;
+            pthread_attr_init(&attr);
+            pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
+            icee_pool = thr_pool_create(icee_num_parallel,icee_num_parallel,10,NULL);
         }
 
         EVstone stone, remote_stone;
@@ -719,7 +754,7 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
 
             CMlisten_specific(wpcm, attr);
             DUMP("Passive mode at port %d.", cm_passive_port);
-            
+
             CMFormat fm = CMregister_format(wpcm, icee_passivecheckin_format_list);
             CMregister_handler(fm, icee_passivecheckin_request_handler, on_icee_passivecheckin_request);
 
@@ -735,57 +770,57 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
             goto done;
         }
 #endif
-        
+
         contact_list = create_attr_list();
         switch (icee_transport)
         {
         case ENET:
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("CM_TRANSPORT"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("CM_TRANSPORT"),
                             "enet");
-            add_int_attr(contact_list, 
-                         attr_atom_from_string("CM_ENET_PORT"), 
+            add_int_attr(contact_list,
+                         attr_atom_from_string("CM_ENET_PORT"),
                          cm_port);
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("CM_ENET_HOST"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("CM_ENET_HOST"),
                             cm_host);
             break;
         case NNTI:
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("CM_TRANSPORT"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("CM_TRANSPORT"),
                             "nnti");
-            add_int_attr(contact_list, 
-                         attr_atom_from_string("NNTI_PORT"), 
+            add_int_attr(contact_list,
+                         attr_atom_from_string("NNTI_PORT"),
                          cm_port);
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("CM_NNTI_TRANSPORT"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("CM_NNTI_TRANSPORT"),
                             "ib");
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("IP_HOST"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("IP_HOST"),
                             cm_host);
             break;
         case IB:
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("CM_TRANSPORT"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("CM_TRANSPORT"),
                             "ib");
-            add_int_attr(contact_list, 
-                         attr_atom_from_string("IP_PORT"), 
+            add_int_attr(contact_list,
+                         attr_atom_from_string("IP_PORT"),
                          cm_port);
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("IP_HOST"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("IP_HOST"),
                             cm_host);
             break;
         default:
-            add_int_attr(contact_list, 
-                         attr_atom_from_string("IP_PORT"), 
+            add_int_attr(contact_list,
+                         attr_atom_from_string("IP_PORT"),
                          cm_port);
-            add_string_attr(contact_list, 
-                            attr_atom_from_string("IP_HOST"), 
+            add_string_attr(contact_list,
+                            attr_atom_from_string("IP_HOST"),
                             cm_host);
             break;
         }
 
-        if (CMlisten_specific(icee_write_cm, contact_list) == 0) 
+        if (CMlisten_specific(icee_write_cm, contact_list) == 0)
         {
             fprintf(stderr, "error: unable to initialize connection manager.\n");
             exit(-1);
@@ -805,7 +840,7 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
         EVassoc_terminal_action(icee_write_cm, stone, icee_contactinfo_format_list, icee_contactinfo_handler, NULL);
 
         MYCALLOC(remote_info, max_client, sizeof(icee_remoteinfo_rec_t));
-        
+
         if (is_cm_passive == 1)
         {
             CMFormat fm;
@@ -843,7 +878,7 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
                 contact_list = attr_list_from_string(cinfo->contact_string);
 
                 EVaction evaction;
-                evaction = EVassoc_bridge_action(icee_write_cm, stone, 
+                evaction = EVassoc_bridge_action(icee_write_cm, stone,
                                                  contact_list, remote_stone);
                 if (evaction == -1)
                 {
@@ -880,7 +915,7 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
                     stone = EValloc_stone(cm[i][k]);
                     remote_stone = cinfo->stone_id;
                     contact_list = attr_list_from_string(cinfo->contact_string);
-                    
+
                     EVassoc_bridge_action(cm[i][k], stone, contact_list, remote_stone);
                     source[i][k] = EVcreate_submit_handle(cm[i][k], stone, icee_fileinfo_format_list);
 
@@ -892,14 +927,17 @@ adios_icee_init(const PairStruct *params, struct adios_method_struct *method)
         }
     done:
         adios_icee_initialized = 1;
+
+        if (use_probe)
+            send_probe(10);
     }
 }
 
-extern int 
-adios_icee_open(struct adios_file_struct *fd, 
-                struct adios_method_struct *method, 
-                MPI_Comm comm) 
-{    
+extern int
+adios_icee_open(struct adios_file_struct *fd,
+                struct adios_method_struct *method,
+                MPI_Comm comm)
+{
     log_debug ("%s\n", __FUNCTION__);
 
     if( fd == NULL || method == NULL) {
@@ -909,7 +947,7 @@ adios_icee_open(struct adios_file_struct *fd,
 
     if (fp == NULL)
         MYCALLOC(fp, 1, sizeof(icee_fileinfo_rec_t));
-    
+
     fp->fname = fd->name;
     MPI_Comm_size(comm, &(fp->comm_size));
     MPI_Comm_rank(comm, &(fp->comm_rank));
@@ -921,10 +959,10 @@ adios_icee_open(struct adios_file_struct *fd,
 //  writes data to multiqueue
 extern void
 adios_icee_write(
-    struct adios_file_struct *fd, 
-    struct adios_var_struct *f, 
-    const void *data, 
-    struct adios_method_struct *method) 
+    struct adios_file_struct *fd,
+    struct adios_var_struct *f,
+    const void *data,
+    struct adios_method_struct *method)
 {
     log_debug ("%s\n", __FUNCTION__);
 
@@ -959,7 +997,7 @@ adios_icee_write(
 
     vp->varid = f->id;
     vp->type = f->type;
-    vp->typesize = adios_get_type_size(f->type, ""); 
+    vp->typesize = adios_get_type_size(f->type, "");
 
     vp->ndims = count_dimensions(f->dimensions);
 
@@ -969,9 +1007,9 @@ adios_icee_write(
         vp->gdims = calloc(vp->ndims, sizeof(uint64_t));
         vp->ldims = calloc(vp->ndims, sizeof(uint64_t));
         vp->offsets = calloc(vp->ndims, sizeof(uint64_t));
-        
+
         struct adios_dimension_struct *d = f->dimensions;
-        // Default: Fortran. 
+        // Default: Fortran.
         if (reverse_dim)
         {
             int i;
@@ -980,9 +1018,9 @@ adios_icee_write(
                 vp->gdims[i] = adios_get_dim_value(&d->global_dimension);
                 vp->ldims[i] = adios_get_dim_value(&d->dimension);
                 vp->offsets[i] = adios_get_dim_value(&d->local_offset);
-                
+
                 vp->varlen *= vp->ldims[i];
-                
+
                 d = d->next;
             }
         }
@@ -994,24 +1032,61 @@ adios_icee_write(
                 vp->gdims[i] = adios_get_dim_value(&d->global_dimension);
                 vp->ldims[i] = adios_get_dim_value(&d->dimension);
                 vp->offsets[i] = adios_get_dim_value(&d->local_offset);
-                
+
                 vp->varlen *= vp->ldims[i];
-                
+
                 d = d->next;
             }
         }
     }
-    
+
     vp->data = (char*)f->data;
     if (adios_verbose_level > 5) icee_varinfo_print(vp);
 
     fp->nvars++;
 }
 
-extern void 
-adios_icee_close(struct adios_file_struct *fd, struct adios_method_struct *method) 
+extern void
+adios_icee_close(struct adios_file_struct *fd, struct adios_method_struct *method)
 {
     log_debug ("%s\n", __FUNCTION__);
+    double timestamp = MPI_Wtime();
+    fp->timestamp = timestamp;
+
+    if (use_probe)
+    {
+        icee_varinfo_rec_ptr_t v;
+        MYCALLOC(v, 1, sizeof(icee_varinfo_rec_t));
+        
+        int max_varid = 0;
+        icee_varinfo_rec_ptr_t vp = fp->varinfo;
+        if (vp == NULL)
+        {
+            fp->varinfo = v;
+        }
+        else
+        {
+            if (max_varid < vp->varid) 
+                max_varid = vp->varid + 1;
+            while (vp->next != NULL)
+            {
+                vp = vp->next;
+                if (max_varid < vp->varid) 
+                    max_varid = vp->varid + 1;
+            }
+            vp->next = v;
+        }
+
+        fp->nvars++;
+        v->varname = strdup("__icee_deltat__");
+        v->varid = max_varid;
+        v->type = adios_double;
+        v->typesize = sizeof(double);
+        v->varlen = sizeof(double);
+        v->data = (char*) ×tamp;
+        v->next = NULL;
+
+    }
 
     if( fd == NULL || method == NULL) {
         perror("open: Bad input parameters\n");
@@ -1068,10 +1143,10 @@ adios_icee_close(struct adios_file_struct *fd, struct adios_method_struct *metho
             free(vp->gdims);
             free(vp->ldims);
             free(vp->offsets);
-            
+
             icee_varinfo_rec_ptr_t prev = vp;
             vp = vp->next;
-            
+
             free(prev);
         }
     }
@@ -1082,8 +1157,8 @@ done:
 }
 
 // wait until all open files have finished sending data to shutdown
-extern void 
-adios_icee_finalize(int mype, struct adios_method_struct *method) 
+extern void
+adios_icee_finalize(int mype, struct adios_method_struct *method)
 {
     log_debug ("%s\n", __FUNCTION__);
 
@@ -1097,7 +1172,7 @@ adios_icee_finalize(int mype, struct adios_method_struct *method)
             for (i=0; i<max_client; i++)
                 for (k=0; k<remote_info[i].num_parallel; k++)
                     CManager_close(cm[i][k]);
-            
+
             free(cm);
             free(source);
         }
@@ -1106,89 +1181,88 @@ adios_icee_finalize(int mype, struct adios_method_struct *method)
 }
 
 // provides unknown functionality
-extern enum BUFFERING_STRATEGY 
-adios_icee_should_buffer (struct adios_file_struct * fd,struct adios_method_struct * method) 
+extern enum BUFFERING_STRATEGY
+adios_icee_should_buffer (struct adios_file_struct * fd,struct adios_method_struct * method)
 {
     return no_buffering;
 }
 
-extern void 
+extern void
 adios_icee_buffer_overflow (struct adios_file_struct * fd,
                             struct adios_method_struct * method)
 {
 }
 
 // provides unknown functionality
-extern void 
-adios_icee_end_iteration(struct adios_method_struct *method) 
+extern void
+adios_icee_end_iteration(struct adios_method_struct *method)
 {
 }
 
 // provides unknown functionality
-extern void 
-adios_icee_start_calculation(struct adios_method_struct *method) 
+extern void
+adios_icee_start_calculation(struct adios_method_struct *method)
 {
 }
 
 // provides unknown functionality
-extern void 
-adios_icee_stop_calculation(struct adios_method_struct *method) 
+extern void
+adios_icee_stop_calculation(struct adios_method_struct *method)
 {
 }
 
 // provides unknown functionality
-extern void 
-adios_icee_get_write_buffer(struct adios_file_struct *fd, 
-                            struct adios_var_struct *v, 
-                            uint64_t *size, 
-                            void **buffer, 
-                            struct adios_method_struct *method) 
+extern void
+adios_icee_get_write_buffer(struct adios_file_struct *fd,
+                            struct adios_var_struct *v,
+                            uint64_t *size,
+                            void **buffer,
+                            struct adios_method_struct *method)
 {
 }
 
 // should not be called from write, reason for inclusion here unknown
-void 
-adios_icee_read(struct adios_file_struct *fd, 
-                struct adios_var_struct *f, 
-                void *buffer, 
-                uint64_t buffer_size, 
-                struct adios_method_struct *method) 
+void
+adios_icee_read(struct adios_file_struct *fd,
+                struct adios_var_struct *f,
+                void *buffer,
+                uint64_t buffer_size,
+                struct adios_method_struct *method)
 {
 }
 
 #else // print empty version of all functions (if HAVE_ICEE == 0)
 
-void 
-adios_icee_read(struct adios_file_struct *fd, 
-                struct adios_var_struct *f, 
-                void *buffer, 
-                struct adios_method_struct *method) 
+void
+adios_icee_read(struct adios_file_struct *fd,
+                struct adios_var_struct *f,
+                void *buffer,
+                struct adios_method_struct *method)
 {
 }
 
-extern void 
-adios_icee_get_write_buffer(struct adios_file_struct *fd, 
-                            struct adios_var_struct *f, 
-                            unsigned long long *size, 
-                            void **buffer, 
-                            struct adios_method_struct *method) 
+extern void
+adios_icee_get_write_buffer(struct adios_file_struct *fd,
+                            struct adios_var_struct *f,
+                            unsigned long long *size,
+                            void **buffer,
+                            struct adios_method_struct *method)
 {
 }
 
-extern void 
-adios_icee_stop_calculation(struct adios_method_struct *method) 
+extern void
+adios_icee_stop_calculation(struct adios_method_struct *method)
 {
 }
 
-extern void 
-adios_icee_start_calculation(struct adios_method_struct *method) 
+extern void
+adios_icee_start_calculation(struct adios_method_struct *method)
 {
 }
 
-extern void 
-adios_icee_end_iteration(struct adios_method_struct *method) 
+extern void
+adios_icee_end_iteration(struct adios_method_struct *method)
 {
 }
 
 #endif
-
diff --git a/src/write/adios_mpi.c b/src/write/adios_mpi.c
index 2867958..bf0c642 100644
--- a/src/write/adios_mpi.c
+++ b/src/write/adios_mpi.c
@@ -263,6 +263,34 @@ static void print_metric (FILE * f, struct timing_metrics * t, int iteration, in
 }
 #endif
 
+/** Set up a simple MPI communication chain from ranks 0,...,size-1
+ *  This chain is used in the cascaded open, which is faster if
+ *  this chain is already set up by MPI.
+ */
+
+static void init_mpi_chain(MPI_Comm comm)
+{
+	int rank, size;
+	int token=1;
+	MPI_Request req;
+	MPI_Status status;
+	MPI_Comm_rank(comm, &rank);
+	MPI_Comm_size(comm, &size);
+
+	//if (rank == 0)
+	//	log_info ("Initialize MPI chain between ranks 0..%d\n", size-1);
+
+    // Send a message to next process and receive from previous to
+    if (rank < size-1)
+    {
+    	MPI_Isend (&token, 1, MPI_INT, rank+1, rank, comm, &req);
+    }
+
+    if (rank > 0)
+    {
+    	MPI_Recv (&token, 1, MPI_INT, rank-1, rank-1, comm, &status);
+    }
+}
 
 void adios_mpi_init (const PairStruct * parameters
                     ,struct adios_method_struct * method
@@ -289,6 +317,7 @@ void adios_mpi_init (const PairStruct * parameters
     md->index = adios_alloc_index_v1(1); // with hashtables
 
     adios_buffer_struct_init (&md->b);
+    init_mpi_chain (md->group_comm);
 #if COLLECT_METRICS
     // init the pointer for the first go around avoiding the bad free in open
     timing.t24 = 0;
@@ -683,9 +712,6 @@ int adios_mpi_open (struct adios_file_struct * fd
                             max_time_index = p->time_index;
                         p = p->next;
                     }
-                    if (fd->mode == adios_mode_append) {
-                        ++max_time_index;
-                    }
                     fd->group->time_index = max_time_index;
                     MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0
                               ,md->group_comm
diff --git a/src/write/adios_mpi_amr.c b/src/write/adios_mpi_amr.c
index d714d1e..981b6c2 100644
--- a/src/write/adios_mpi_amr.c
+++ b/src/write/adios_mpi_amr.c
@@ -995,7 +995,7 @@ void * adios_mpi_amr_do_reopen_thread (void * param)
                 max_time_index = p->time_index;
             p = p->next;
         }
-        fd->group->time_index = ++max_time_index;
+        fd->group->time_index = max_time_index;
 
         adios_init_buffer_read_vars_index (&md->b);
         MPI_File_seek (md->fh, md->b.vars_index_offset, MPI_SEEK_SET);
@@ -1584,6 +1584,32 @@ int adios_MPI_Recv(void *buf, uint64_t count, int source,
 
 }
 
+/* Help routine to receive data size greater than 2 GB non-blocking
+ * Returns the number of MPI_Irecv requests made.
+ * requests should be pre-allocated before calling.
+ */
+int adios_MPI_Irecv(void *buf, uint64_t count, int source,
+                    int tag, MPI_Comm comm, MPI_Request *requests)
+{
+    int n = 0;
+    while (count > INT32_MAX)
+    {
+        MPI_Irecv (buf, INT32_MAX, MPI_BYTE, source, tag, comm, requests+n);
+        count -= INT32_MAX;
+        buf += INT32_MAX;
+        n++;
+    }
+
+    if (count)
+    {
+        int temp_count = (int) count;
+        MPI_Irecv (buf, temp_count, MPI_BYTE, source, tag, comm, requests+n);
+    }
+    n++;
+
+    return n;
+}
+
 void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                             ,struct adios_method_struct * method
                             )
@@ -1630,7 +1656,6 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
             {
                 //printf ("do not merge pg\n");
                 uint64_t pg_size;
-                MPI_Status status;
 
                 pg_size = fd->bytes_written;
                 pg_sizes = (uint64_t *) malloc (new_group_size * 8);
@@ -1657,6 +1682,10 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                     max_data_size = (pg_sizes[i] > max_data_size) ? pg_sizes[i] : max_data_size;
                 }
 
+                int nMPIrequests = max_data_size / UINT32_MAX + 1;
+                MPI_Request *requests = (MPI_Request *) malloc (nMPIrequests * sizeof (MPI_Request));
+                MPI_Status *statuses = (MPI_Status *) malloc (nMPIrequests * sizeof (MPI_Status));
+
                 if (is_aggregator (md->rank))
                 {
                     aggr_buff = malloc (max_data_size);
@@ -1702,8 +1731,8 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                         if (i + 1 < new_group_size)
                         {
                             START_TIMER (ADIOS_TIMER_COMM);
-                            adios_MPI_Recv (recv_buff, pg_sizes[i + 1], new_rank + 1
-                                      ,0, md->g_comm1, &status);
+                            nMPIrequests = adios_MPI_Irecv (recv_buff, pg_sizes[i + 1], new_rank + 1
+                                                            ,0, md->g_comm1, requests);
                             STOP_TIMER (ADIOS_TIMER_COMM);
                         }
 
@@ -1724,7 +1753,14 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                         if (i + 1 < new_group_size)
                         {
-                            memcpy (aggr_buff, recv_buff, pg_sizes[i + 1]);
+                            START_TIMER (ADIOS_TIMER_COMM);
+                            MPI_Waitall (nMPIrequests, requests, statuses);
+                            STOP_TIMER (ADIOS_TIMER_COMM);
+                            // swap receive and aggregate buffers, so we can write out the just received PG while getting another one
+                            void *tmp = aggr_buff;
+                            aggr_buff = recv_buff;
+                            recv_buff = tmp;
+                            //memcpy (aggr_buff, recv_buff, pg_sizes[i + 1]);
                         }
                     }
                 }
@@ -1743,15 +1779,15 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                         {
                             START_TIMER (ADIOS_TIMER_COMM);
                             // Recv data from upstream rank
-                            adios_MPI_Recv (recv_buff, pg_sizes[i], new_rank + 1
-                                      ,0, md->g_comm1, &status);
+                            nMPIrequests = adios_MPI_Irecv (recv_buff, pg_sizes[i], new_rank + 1
+                                                            ,0, md->g_comm1, requests);
 
                             if (i == new_rank + 1)
                                 // Send my data to downstream rank
                                 adios_MPI_Send (fd->buffer, pg_size, new_rank - 1
                                          ,0, md->g_comm1);
 
-                            //MPI_Wait (&request, &status);
+                            MPI_Waitall(nMPIrequests, requests, statuses);
                             // Send it to downstream rank
                             adios_MPI_Send (recv_buff, pg_sizes[i], new_rank - 1
                                      ,0, md->g_comm1);
@@ -1762,6 +1798,8 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                 FREE (aggr_buff);
                 FREE (recv_buff);
+                FREE (requests);
+                FREE (statuses);
             }
             else 
             {
@@ -1833,9 +1871,10 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                         adios_parse_process_group_index_v1 (&md->b, &new_pg_root, NULL);
                         adios_parse_vars_index_v1 (&md->b, &new_vars_root, NULL, NULL);
-                        adios_parse_attributes_index_v1 (&md->b
+                        // do not merge attributes from other processes from 1.4
+                        /*adios_parse_attributes_index_v1 (&md->b
                                                         ,&new_attrs_root
-                                                        );
+                                                        );*/
                         if (md->g_merging_pgs)
                             new_pg_root = 0;
 
@@ -1861,10 +1900,11 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                                          ,0, md->index);
 
                     START_TIMER (ADIOS_TIMER_COMM);
-                    MPI_Gather (&buffer_size, 1, MPI_INT, 0, 0, MPI_INT
+                    uint32_t index_size = (uint32_t) buffer_offset;
+                    MPI_Gather (&index_size, 1, MPI_INT, 0, 0, MPI_INT
                                ,0, md->g_comm1
                                );
-                    MPI_Gatherv (buffer, buffer_size, MPI_BYTE
+                    MPI_Gatherv (buffer, index_size, MPI_BYTE
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->g_comm1
                                 );
@@ -1967,9 +2007,10 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
 
                             adios_parse_process_group_index_v1 (&md->b, &new_pg_root, NULL);
                             adios_parse_vars_index_v1 (&md->b, &new_vars_root, NULL, NULL);
-                            adios_parse_attributes_index_v1 (&md->b
+                            // do not merge attributes from other processes from 1.4
+                            /*adios_parse_attributes_index_v1 (&md->b
                                                             ,&new_attrs_root
-                                                            );
+                                                            );*/
 
                             // global index would become unsorted on main aggregator during merging 
                             // so sort timesteps if appending
@@ -1999,11 +2040,12 @@ void adios_mpi_amr_bg_close (struct adios_file_struct * fd
                                              ,0, md->index);
  
                         START_TIMER (ADIOS_TIMER_COMM);
-                        MPI_Gather (&buffer_size2, 1, MPI_INT
+                        uint32_t index_size = (uint32_t) buffer_offset2;
+                        MPI_Gather (&index_size, 1, MPI_INT
                                    ,0, 0, MPI_INT
                                    ,0, md->g_comm2
                                    );
-                        MPI_Gatherv (buffer2, buffer_size2, MPI_BYTE
+                        MPI_Gatherv (buffer2, index_size, MPI_BYTE
                                     ,0, 0, 0, MPI_BYTE
                                     ,0, md->g_comm2
                                     );
@@ -2327,9 +2369,10 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
 
                         adios_parse_process_group_index_v1 (&md->b, &new_pg_root, NULL);
                         adios_parse_vars_index_v1 (&md->b, &new_vars_root, NULL, NULL);
-                        adios_parse_attributes_index_v1 (&md->b
+                        // do not merge attributes from other processes from 1.4
+                        /*adios_parse_attributes_index_v1 (&md->b
                                                         ,&new_attrs_root
-                                                        );
+                                                        );*/
                         if (md->g_merging_pgs)
                             new_pg_root = 0;
 
@@ -2490,9 +2533,10 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
 
                         adios_parse_process_group_index_v1 (&md->b, &new_pg_root, NULL);
                         adios_parse_vars_index_v1 (&md->b, &new_vars_root, NULL, NULL);
-                        adios_parse_attributes_index_v1 (&md->b
+                        // do not merge attributes from other processes from 1.4
+                        /*adios_parse_attributes_index_v1 (&md->b
                                                         ,&new_attrs_root
-                                                        );
+                                                        );*/
 
                         // global index would become unsorted on main aggregator during merging 
                         // so sort timesteps if appending
@@ -2522,11 +2566,12 @@ void adios_mpi_amr_ag_close (struct adios_file_struct * fd
                                          ,0, md->index);
 
                     START_TIMER (ADIOS_TIMER_COMM);
-                    MPI_Gather (&buffer_size2, 1, MPI_INT
+                    uint32_t index_size = (uint32_t) buffer_offset2;
+                    MPI_Gather (&index_size, 1, MPI_INT
                                ,0, 0, MPI_INT
                                ,0, md->g_comm2
                                );
-                    MPI_Gatherv (buffer2, buffer_size2, MPI_BYTE
+                    MPI_Gatherv (buffer2, index_size, MPI_BYTE
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, md->g_comm2
                                 );
diff --git a/src/write/adios_mpi_lustre.c b/src/write/adios_mpi_lustre.c
index e65c267..b12109e 100644
--- a/src/write/adios_mpi_lustre.c
+++ b/src/write/adios_mpi_lustre.c
@@ -947,9 +947,6 @@ int adios_mpi_lustre_open (struct adios_file_struct * fd
                             max_time_index = p->time_index;
                         p = p->next;
                     }
-                    if (fd->mode == adios_mode_append) {
-                        ++max_time_index;
-                    }
                     fd->group->time_index = max_time_index;
                     MPI_Bcast (&fd->group->time_index, 1, MPI_INT, 0
                               ,md->group_comm
diff --git a/src/write/adios_posix.c b/src/write/adios_posix.c
index e9da157..35d6c66 100644
--- a/src/write/adios_posix.c
+++ b/src/write/adios_posix.c
@@ -466,9 +466,6 @@ START_TIMER (ADIOS_TIMER_AD_OPEN);
                                     max_time_index = pg->time_index;
                                 pg = pg->next;
                             }
-                            if (fd->mode == adios_mode_append) {
-                                ++max_time_index;
-                            }
                             fd->group->time_index = max_time_index;
 
                             adios_posix_read_vars_index (&p->b);
@@ -498,10 +495,7 @@ START_TIMER (ADIOS_TIMER_AD_OPEN);
                 }
                 else 
                 {
-                    // index is in memory, update time index and offsets
-                    if (fd->mode == adios_mode_append) {
-                        fd->group->time_index++;
-                    }
+                    // index is in memory, right now there is nothing to do here
                 }
             }
             else 
@@ -1019,13 +1013,13 @@ void adios_posix_close (struct adios_file_struct * fd
                 {
                     START_TIMER (ADIOS_TIMER_COMM);
                     // Added this explicit cast to avoid truncation of low-order bytes on BGP
-                    int i_buffer_size = (int) buffer_size;
+                    int i_buffer_size = (int) buffer_offset;
                     MPI_Gather (&i_buffer_size, 1, MPI_INT
                                ,0, 0, MPI_INT
                                ,0, p->group_comm
                                );
 
-                    MPI_Gatherv (buffer, buffer_size, MPI_BYTE
+                    MPI_Gatherv (buffer, i_buffer_size, MPI_BYTE
                                 ,0, 0, 0, MPI_BYTE
                                 ,0, p->group_comm
                                 );
diff --git a/src/write/adios_var_merge.c b/src/write/adios_var_merge.c
index 7a20f43..41ca100 100644
--- a/src/write/adios_var_merge.c
+++ b/src/write/adios_var_merge.c
@@ -650,7 +650,7 @@ static int do_write (int64_t fd_p, const char * name, void * var)
 // temporary solution for compiling error
 static int declare_group (int64_t * id, const char * name
                         ,const char * time_index
-                        ,enum ADIOS_FLAG stats
+                        ,enum ADIOS_STATISTICS_FLAG stats
                         )
 {
     int ret;
@@ -745,7 +745,8 @@ static void output_vars(struct aggr_var_struct *vars, int varcnt, struct
         vars=vars->next;
     }
     //close the file
-    common_adios_close(md->fpr);
+    struct adios_file_struct * mdf = (struct adios_file_struct *) md->fpr;
+    common_adios_close(mdf);
 }
 
 
@@ -758,7 +759,7 @@ static void define_iogroup(char *group_name)
     grp_name=(char *)malloc(len);
     memset(grp_name, 0x00, len);
     sprintf(grp_name, "agg_%s",group_name);
-    declare_group (&grp,grp_name, "", adios_flag_yes);
+    declare_group (&grp,grp_name, "", adios_stat_default);
     select_method (grp, io_method,io_parameters,"");
     grpflag=1;
 }
diff --git a/src/zfp/CMakeLists.txt b/src/zfp/CMakeLists.txt
new file mode 100644
index 0000000..8d2b424
--- /dev/null
+++ b/src/zfp/CMakeLists.txt
@@ -0,0 +1,40 @@
+set(ZFP_SRCDIR "zfp-0.5.0")
+include_directories(${PROJECT_SOURCE_DIR}/src/zfp/${ZFP_SRCDIR}/inc)
+include_directories(${PROJECT_SOURCE_DIR}/src/zfp/${ZFP_SRCDIR})
+include_directories(${PROJECT_BINARY_DIR}/src/zfp)
+link_directories(${PROJECT_BINARY_DIR}/src/zfp)
+
+
+set(CLEANFILES "")
+set(include_HEADERS "")
+set(nodist_include_HEADERS "")
+set(lib_LIBRARIES "")
+
+if(BUILD_ZFP)
+    set(libzfp_a_SOURCES 
+        ${ZFP_SRCDIR}/src/bitstream.c
+        ${ZFP_SRCDIR}/src/decode1f.c
+        ${ZFP_SRCDIR}/src/decode1d.c
+        ${ZFP_SRCDIR}/src/encode1f.c
+        ${ZFP_SRCDIR}/src/encode1d.c
+        ${ZFP_SRCDIR}/src/decode2f.c
+        ${ZFP_SRCDIR}/src/decode2d.c
+        ${ZFP_SRCDIR}/src/encode2f.c
+        ${ZFP_SRCDIR}/src/encode2d.c
+        ${ZFP_SRCDIR}/src/decode3f.c
+        ${ZFP_SRCDIR}/src/decode3d.c
+        ${ZFP_SRCDIR}/src/encode3f.c
+        ${ZFP_SRCDIR}/src/encode3d.c
+        ${ZFP_SRCDIR}/src/zfp.c 
+       )
+    set(libzfp_a_CPPFLAGS "${AM_CPPFLAGS}")
+    set(libzfp_a_CFLAGS "${AM_CFLAGS}")
+
+    add_library(zfp OBJECT ${libzfp_a_SOURCES})
+    #set_target_properties(zfp PROPERTIES COMPILE_FLAGS "")
+
+## Do not install libzfp.a, adios does not need it
+#install(FILES ${PROJECT_BINARY_DIR}/zfp/libzfp.a
+#        DESTINATION ${libdir})
+
+endif(BUILD_ZFP)
diff --git a/src/zfp/Makefile.am b/src/zfp/Makefile.am
new file mode 100644
index 0000000..549c729
--- /dev/null
+++ b/src/zfp/Makefile.am
@@ -0,0 +1,61 @@
+ZFP_SRCDIR=zfp-0.5.0
+
+AM_CPPFLAGS=-I${srcdir}/${ZFP_SRCDIR}/inc -I${srcdir}/${ZFP_SRCDIR}/src
+
+AUTOMAKE_OPTIONS = no-dependencies subdir-objects
+METASOURCES=AUTO
+
+CLEANFILES= 
+
+noinst_LIBRARIES = libzfp.a
+libzfp_a_SOURCES = ${ZFP_SRCDIR}/src/bitstream.c \
+                   ${ZFP_SRCDIR}/src/decode1f.c \
+                   ${ZFP_SRCDIR}/src/decode1d.c \
+                   ${ZFP_SRCDIR}/src/encode1f.c \
+                   ${ZFP_SRCDIR}/src/encode1d.c \
+                   ${ZFP_SRCDIR}/src/decode2f.c \
+                   ${ZFP_SRCDIR}/src/decode2d.c \
+                   ${ZFP_SRCDIR}/src/encode2f.c \
+                   ${ZFP_SRCDIR}/src/encode2d.c \
+                   ${ZFP_SRCDIR}/src/decode3f.c \
+                   ${ZFP_SRCDIR}/src/decode3d.c \
+                   ${ZFP_SRCDIR}/src/encode3f.c \
+                   ${ZFP_SRCDIR}/src/encode3d.c \
+                   ${ZFP_SRCDIR}/src/zfp.c 
+
+
+libzfp_a_CPPFLAGS=$(AM_CPPFLAGS)
+libzfp_a_CFLAGS= 
+
+
+
+EXTRA_DIST = ${ZFP_SRCDIR}/src/block1.h \
+	     ${ZFP_SRCDIR}/src/block2.h \
+             ${ZFP_SRCDIR}/src/block3.h \
+	     ${ZFP_SRCDIR}/src/traitsd.h \
+             ${ZFP_SRCDIR}/src/traitsf.h \
+             ${ZFP_SRCDIR}/src/Makefile \
+             ${ZFP_SRCDIR}/src/inline \
+             ${ZFP_SRCDIR}/src/template/codec.h \
+             ${ZFP_SRCDIR}/src/template/codec1.c \
+             ${ZFP_SRCDIR}/src/template/codec2.c \
+             ${ZFP_SRCDIR}/src/template/codec3.c \
+             ${ZFP_SRCDIR}/src/template/compress.c \
+             ${ZFP_SRCDIR}/src/template/decode.c \
+             ${ZFP_SRCDIR}/src/template/decode1.c \
+             ${ZFP_SRCDIR}/src/template/decode2.c \
+             ${ZFP_SRCDIR}/src/template/decode3.c \
+             ${ZFP_SRCDIR}/src/template/decompress.c \
+             ${ZFP_SRCDIR}/src/template/encode.c \
+             ${ZFP_SRCDIR}/src/template/encode1.c \
+             ${ZFP_SRCDIR}/src/template/encode2.c \
+             ${ZFP_SRCDIR}/src/template/encode3.c \
+             ${ZFP_SRCDIR}/src/template/template.h \
+             ${ZFP_SRCDIR}/inc/bitstream.h \
+             ${ZFP_SRCDIR}/inc/macros.h   \
+             ${ZFP_SRCDIR}/inc/system.h   \
+             ${ZFP_SRCDIR}/inc/types.h  \
+             ${ZFP_SRCDIR}/inc/zfp.h \
+             ${ZFP_SRCDIR}/API ${ZFP_SRCDIR}/Config ${ZFP_SRCDIR}/FAQ ${ZFP_SRCDIR}/LICENSE \
+             ${ZFP_SRCDIR}/Makefile ${ZFP_SRCDIR}/README ${ZFP_SRCDIR}/VERSIONS \
+             ${ZFP_SRCDIR}/array ${ZFP_SRCDIR}/examples 
diff --git a/src/mxml/Makefile.in b/src/zfp/Makefile.in
similarity index 58%
copy from src/mxml/Makefile.in
copy to src/zfp/Makefile.in
index 9bede00..411d9e0 100644
--- a/src/mxml/Makefile.in
+++ b/src/zfp/Makefile.in
@@ -78,7 +78,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-subdir = src/mxml
+subdir = src/zfp
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
@@ -108,7 +108,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -129,20 +129,24 @@ AM_V_AR = $(am__v_AR_ at AM_V@)
 am__v_AR_ = $(am__v_AR_ at AM_DEFAULT_V@)
 am__v_AR_0 = @echo "  AR      " $@;
 am__v_AR_1 = 
-libmxml_a_AR = $(AR) $(ARFLAGS)
-libmxml_a_LIBADD =
+libzfp_a_AR = $(AR) $(ARFLAGS)
+libzfp_a_LIBADD =
 am__dirstamp = $(am__leading_dot)dirstamp
-am_libmxml_a_OBJECTS = ${MXML_SRCDIR}/libmxml_a-mxml-attr.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-get.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-private.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-string.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-entity.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-index.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-search.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-file.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-node.$(OBJEXT) \
-	${MXML_SRCDIR}/libmxml_a-mxml-set.$(OBJEXT)
-libmxml_a_OBJECTS = $(am_libmxml_a_OBJECTS)
+am_libzfp_a_OBJECTS = ${ZFP_SRCDIR}/src/libzfp_a-bitstream.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-decode1f.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-decode1d.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-encode1f.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-encode1d.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-decode2f.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-decode2d.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-encode2f.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-encode2d.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-decode3f.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-decode3d.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-encode3f.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-encode3d.$(OBJEXT) \
+	${ZFP_SRCDIR}/src/libzfp_a-zfp.$(OBJEXT)
+libzfp_a_OBJECTS = $(am_libzfp_a_OBJECTS)
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -180,8 +184,8 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libmxml_a_SOURCES)
-DIST_SOURCES = $(libmxml_a_SOURCES)
+SOURCES = $(libzfp_a_SOURCES)
+DIST_SOURCES = $(libzfp_a_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -417,6 +421,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -478,38 +485,59 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-MXML_SRCDIR = mxml-2.9
-AM_CPPFLAGS = -I$(top_srcdir)/mxml/${MXML_SRCDIR}
+ZFP_SRCDIR = zfp-0.5.0
+AM_CPPFLAGS = -I${srcdir}/${ZFP_SRCDIR}/inc -I${srcdir}/${ZFP_SRCDIR}/src
 AUTOMAKE_OPTIONS = no-dependencies subdir-objects
 METASOURCES = AUTO
 CLEANFILES = 
-noinst_LIBRARIES = libmxml.a
-libmxml_a_SOURCES = ${MXML_SRCDIR}/mxml-attr.c     \
-                     ${MXML_SRCDIR}/mxml-get.c      \
-                     ${MXML_SRCDIR}/mxml-private.c  \
-                     ${MXML_SRCDIR}/mxml-string.c   \
-                     ${MXML_SRCDIR}/mxml-entity.c   \
-                     ${MXML_SRCDIR}/mxml-index.c    \
-                     ${MXML_SRCDIR}/mxml-search.c   \
-                     ${MXML_SRCDIR}/mxml-file.c     \
-                     ${MXML_SRCDIR}/mxml-node.c     \
-                     ${MXML_SRCDIR}/mxml-set.c 
-
-libmxml_a_CPPFLAGS = $(AM_CPPFLAGS)
-libmxml_a_CFLAGS = 
-EXTRA_DIST = config.h CMakeLists.txt                                    \
-             ${MXML_SRCDIR}/ANNOUNCEMENT    ${MXML_SRCDIR}/CHANGES      \
-             ${MXML_SRCDIR}/COPYING         ${MXML_SRCDIR}/Makefile.in  \
-             ${MXML_SRCDIR}/README          ${MXML_SRCDIR}/config.h.in  \
-             ${MXML_SRCDIR}/configure       ${MXML_SRCDIR}/configure.in \
-             ${MXML_SRCDIR}/install-sh      ${MXML_SRCDIR}/mxml.list.in \
-             ${MXML_SRCDIR}/mxml.pc.in      ${MXML_SRCDIR}/mxml.spec    \
-             ${MXML_SRCDIR}/mxml.xml        ${MXML_SRCDIR}/mxmldoc.c    \
-             ${MXML_SRCDIR}/test.xml        ${MXML_SRCDIR}/testmxml.c   \
-             ${MXML_SRCDIR}/mxml-private.h  ${MXML_SRCDIR}/mxml.h       \
-             ${MXML_SRCDIR}/doc                                         \
-             ${MXML_SRCDIR}/test                                        \
-             ${MXML_SRCDIR}/vcnet
+noinst_LIBRARIES = libzfp.a
+libzfp_a_SOURCES = ${ZFP_SRCDIR}/src/bitstream.c \
+                   ${ZFP_SRCDIR}/src/decode1f.c \
+                   ${ZFP_SRCDIR}/src/decode1d.c \
+                   ${ZFP_SRCDIR}/src/encode1f.c \
+                   ${ZFP_SRCDIR}/src/encode1d.c \
+                   ${ZFP_SRCDIR}/src/decode2f.c \
+                   ${ZFP_SRCDIR}/src/decode2d.c \
+                   ${ZFP_SRCDIR}/src/encode2f.c \
+                   ${ZFP_SRCDIR}/src/encode2d.c \
+                   ${ZFP_SRCDIR}/src/decode3f.c \
+                   ${ZFP_SRCDIR}/src/decode3d.c \
+                   ${ZFP_SRCDIR}/src/encode3f.c \
+                   ${ZFP_SRCDIR}/src/encode3d.c \
+                   ${ZFP_SRCDIR}/src/zfp.c 
+
+libzfp_a_CPPFLAGS = $(AM_CPPFLAGS)
+libzfp_a_CFLAGS = 
+EXTRA_DIST = ${ZFP_SRCDIR}/src/block1.h \
+	     ${ZFP_SRCDIR}/src/block2.h \
+             ${ZFP_SRCDIR}/src/block3.h \
+	     ${ZFP_SRCDIR}/src/traitsd.h \
+             ${ZFP_SRCDIR}/src/traitsf.h \
+             ${ZFP_SRCDIR}/src/Makefile \
+             ${ZFP_SRCDIR}/src/inline \
+             ${ZFP_SRCDIR}/src/template/codec.h \
+             ${ZFP_SRCDIR}/src/template/codec1.c \
+             ${ZFP_SRCDIR}/src/template/codec2.c \
+             ${ZFP_SRCDIR}/src/template/codec3.c \
+             ${ZFP_SRCDIR}/src/template/compress.c \
+             ${ZFP_SRCDIR}/src/template/decode.c \
+             ${ZFP_SRCDIR}/src/template/decode1.c \
+             ${ZFP_SRCDIR}/src/template/decode2.c \
+             ${ZFP_SRCDIR}/src/template/decode3.c \
+             ${ZFP_SRCDIR}/src/template/decompress.c \
+             ${ZFP_SRCDIR}/src/template/encode.c \
+             ${ZFP_SRCDIR}/src/template/encode1.c \
+             ${ZFP_SRCDIR}/src/template/encode2.c \
+             ${ZFP_SRCDIR}/src/template/encode3.c \
+             ${ZFP_SRCDIR}/src/template/template.h \
+             ${ZFP_SRCDIR}/inc/bitstream.h \
+             ${ZFP_SRCDIR}/inc/macros.h   \
+             ${ZFP_SRCDIR}/inc/system.h   \
+             ${ZFP_SRCDIR}/inc/types.h  \
+             ${ZFP_SRCDIR}/inc/zfp.h \
+             ${ZFP_SRCDIR}/API ${ZFP_SRCDIR}/Config ${ZFP_SRCDIR}/FAQ ${ZFP_SRCDIR}/LICENSE \
+             ${ZFP_SRCDIR}/Makefile ${ZFP_SRCDIR}/README ${ZFP_SRCDIR}/VERSIONS \
+             ${ZFP_SRCDIR}/array ${ZFP_SRCDIR}/examples 
 
 all: all-am
 
@@ -524,9 +552,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mxml/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/zfp/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/mxml/Makefile
+	  $(AUTOMAKE) --gnu src/zfp/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -548,38 +576,46 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLIBRARIES:
 	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-${MXML_SRCDIR}/$(am__dirstamp):
-	@$(MKDIR_P) ${MXML_SRCDIR}
-	@: > ${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-attr.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-get.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-private.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-string.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-entity.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-index.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-search.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-file.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-node.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-${MXML_SRCDIR}/libmxml_a-mxml-set.$(OBJEXT):  \
-	${MXML_SRCDIR}/$(am__dirstamp)
-
-libmxml.a: $(libmxml_a_OBJECTS) $(libmxml_a_DEPENDENCIES) $(EXTRA_libmxml_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libmxml.a
-	$(AM_V_AR)$(libmxml_a_AR) libmxml.a $(libmxml_a_OBJECTS) $(libmxml_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libmxml.a
+${ZFP_SRCDIR}/src/$(am__dirstamp):
+	@$(MKDIR_P) ${ZFP_SRCDIR}/src
+	@: > ${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-bitstream.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-decode1f.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-decode1d.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-encode1f.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-encode1d.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-decode2f.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-decode2d.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-encode2f.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-encode2d.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-decode3f.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-decode3d.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-encode3f.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-encode3d.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+${ZFP_SRCDIR}/src/libzfp_a-zfp.$(OBJEXT):  \
+	${ZFP_SRCDIR}/src/$(am__dirstamp)
+
+libzfp.a: $(libzfp_a_OBJECTS) $(libzfp_a_DEPENDENCIES) $(EXTRA_libzfp_a_DEPENDENCIES) 
+	$(AM_V_at)-rm -f libzfp.a
+	$(AM_V_AR)$(libzfp_a_AR) libzfp.a $(libzfp_a_OBJECTS) $(libzfp_a_LIBADD)
+	$(AM_V_at)$(RANLIB) libzfp.a
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
-	-rm -f ${MXML_SRCDIR}/*.$(OBJEXT)
+	-rm -f ${ZFP_SRCDIR}/src/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
@@ -593,65 +629,89 @@ distclean-compile:
 .c.lo:
 	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
 
-${MXML_SRCDIR}/libmxml_a-mxml-attr.o: ${MXML_SRCDIR}/mxml-attr.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-attr.o `test -f '${MXML_SRCDIR}/mxml-attr.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-attr.c
+${ZFP_SRCDIR}/src/libzfp_a-bitstream.o: ${ZFP_SRCDIR}/src/bitstream.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-bitstream.o `test -f '${ZFP_SRCDIR}/src/bitstream.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/bitstream.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-attr.obj: ${MXML_SRCDIR}/mxml-attr.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-attr.obj `if test -f '${MXML_SRCDIR}/mxml-attr.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-attr.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-attr.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-bitstream.obj: ${ZFP_SRCDIR}/src/bitstream.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-bitstream.obj `if test -f '${ZFP_SRCDIR}/src/bitstream.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/bitstream.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/bitstream.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-get.o: ${MXML_SRCDIR}/mxml-get.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-get.o `test -f '${MXML_SRCDIR}/mxml-get.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-get.c
+${ZFP_SRCDIR}/src/libzfp_a-decode1f.o: ${ZFP_SRCDIR}/src/decode1f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode1f.o `test -f '${ZFP_SRCDIR}/src/decode1f.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/decode1f.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-get.obj: ${MXML_SRCDIR}/mxml-get.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-get.obj `if test -f '${MXML_SRCDIR}/mxml-get.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-get.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-get.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-decode1f.obj: ${ZFP_SRCDIR}/src/decode1f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode1f.obj `if test -f '${ZFP_SRCDIR}/src/decode1f.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/decode1f.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/decode1f.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-private.o: ${MXML_SRCDIR}/mxml-private.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-private.o `test -f '${MXML_SRCDIR}/mxml-private.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-private.c
+${ZFP_SRCDIR}/src/libzfp_a-decode1d.o: ${ZFP_SRCDIR}/src/decode1d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode1d.o `test -f '${ZFP_SRCDIR}/src/decode1d.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/decode1d.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-private.obj: ${MXML_SRCDIR}/mxml-private.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-private.obj `if test -f '${MXML_SRCDIR}/mxml-private.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-private.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-private.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-decode1d.obj: ${ZFP_SRCDIR}/src/decode1d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode1d.obj `if test -f '${ZFP_SRCDIR}/src/decode1d.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/decode1d.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/decode1d.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-string.o: ${MXML_SRCDIR}/mxml-string.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-string.o `test -f '${MXML_SRCDIR}/mxml-string.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-string.c
+${ZFP_SRCDIR}/src/libzfp_a-encode1f.o: ${ZFP_SRCDIR}/src/encode1f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode1f.o `test -f '${ZFP_SRCDIR}/src/encode1f.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/encode1f.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-string.obj: ${MXML_SRCDIR}/mxml-string.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-string.obj `if test -f '${MXML_SRCDIR}/mxml-string.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-string.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-string.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-encode1f.obj: ${ZFP_SRCDIR}/src/encode1f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode1f.obj `if test -f '${ZFP_SRCDIR}/src/encode1f.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/encode1f.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/encode1f.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-entity.o: ${MXML_SRCDIR}/mxml-entity.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-entity.o `test -f '${MXML_SRCDIR}/mxml-entity.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-entity.c
+${ZFP_SRCDIR}/src/libzfp_a-encode1d.o: ${ZFP_SRCDIR}/src/encode1d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode1d.o `test -f '${ZFP_SRCDIR}/src/encode1d.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/encode1d.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-entity.obj: ${MXML_SRCDIR}/mxml-entity.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-entity.obj `if test -f '${MXML_SRCDIR}/mxml-entity.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-entity.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-entity.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-encode1d.obj: ${ZFP_SRCDIR}/src/encode1d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode1d.obj `if test -f '${ZFP_SRCDIR}/src/encode1d.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/encode1d.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/encode1d.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-index.o: ${MXML_SRCDIR}/mxml-index.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-index.o `test -f '${MXML_SRCDIR}/mxml-index.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-index.c
+${ZFP_SRCDIR}/src/libzfp_a-decode2f.o: ${ZFP_SRCDIR}/src/decode2f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode2f.o `test -f '${ZFP_SRCDIR}/src/decode2f.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/decode2f.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-index.obj: ${MXML_SRCDIR}/mxml-index.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-index.obj `if test -f '${MXML_SRCDIR}/mxml-index.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-index.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-index.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-decode2f.obj: ${ZFP_SRCDIR}/src/decode2f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode2f.obj `if test -f '${ZFP_SRCDIR}/src/decode2f.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/decode2f.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/decode2f.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-search.o: ${MXML_SRCDIR}/mxml-search.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-search.o `test -f '${MXML_SRCDIR}/mxml-search.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-search.c
+${ZFP_SRCDIR}/src/libzfp_a-decode2d.o: ${ZFP_SRCDIR}/src/decode2d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode2d.o `test -f '${ZFP_SRCDIR}/src/decode2d.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/decode2d.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-search.obj: ${MXML_SRCDIR}/mxml-search.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-search.obj `if test -f '${MXML_SRCDIR}/mxml-search.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-search.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-search.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-decode2d.obj: ${ZFP_SRCDIR}/src/decode2d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode2d.obj `if test -f '${ZFP_SRCDIR}/src/decode2d.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/decode2d.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/decode2d.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-file.o: ${MXML_SRCDIR}/mxml-file.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-file.o `test -f '${MXML_SRCDIR}/mxml-file.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-file.c
+${ZFP_SRCDIR}/src/libzfp_a-encode2f.o: ${ZFP_SRCDIR}/src/encode2f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode2f.o `test -f '${ZFP_SRCDIR}/src/encode2f.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/encode2f.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-file.obj: ${MXML_SRCDIR}/mxml-file.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-file.obj `if test -f '${MXML_SRCDIR}/mxml-file.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-file.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-file.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-encode2f.obj: ${ZFP_SRCDIR}/src/encode2f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode2f.obj `if test -f '${ZFP_SRCDIR}/src/encode2f.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/encode2f.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/encode2f.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-node.o: ${MXML_SRCDIR}/mxml-node.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-node.o `test -f '${MXML_SRCDIR}/mxml-node.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-node.c
+${ZFP_SRCDIR}/src/libzfp_a-encode2d.o: ${ZFP_SRCDIR}/src/encode2d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode2d.o `test -f '${ZFP_SRCDIR}/src/encode2d.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/encode2d.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-node.obj: ${MXML_SRCDIR}/mxml-node.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-node.obj `if test -f '${MXML_SRCDIR}/mxml-node.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-node.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-node.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-encode2d.obj: ${ZFP_SRCDIR}/src/encode2d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode2d.obj `if test -f '${ZFP_SRCDIR}/src/encode2d.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/encode2d.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/encode2d.c'; fi`
 
-${MXML_SRCDIR}/libmxml_a-mxml-set.o: ${MXML_SRCDIR}/mxml-set.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-set.o `test -f '${MXML_SRCDIR}/mxml-set.c' || echo '$(srcdir)/'`${MXML_SRCDIR}/mxml-set.c
+${ZFP_SRCDIR}/src/libzfp_a-decode3f.o: ${ZFP_SRCDIR}/src/decode3f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode3f.o `test -f '${ZFP_SRCDIR}/src/decode3f.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/decode3f.c
 
-${MXML_SRCDIR}/libmxml_a-mxml-set.obj: ${MXML_SRCDIR}/mxml-set.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmxml_a_CPPFLAGS) $(CPPFLAGS) $(libmxml_a_CFLAGS) $(CFLAGS) -c -o ${MXML_SRCDIR}/libmxml_a-mxml-set.obj `if test -f '${MXML_SRCDIR}/mxml-set.c'; then $(CYGPATH_W) '${MXML_SRCDIR}/mxml-set.c'; else $(CYGPATH_W) '$(srcdir)/${MXML_SRCDIR}/mxml-set.c'; fi`
+${ZFP_SRCDIR}/src/libzfp_a-decode3f.obj: ${ZFP_SRCDIR}/src/decode3f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode3f.obj `if test -f '${ZFP_SRCDIR}/src/decode3f.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/decode3f.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/decode3f.c'; fi`
+
+${ZFP_SRCDIR}/src/libzfp_a-decode3d.o: ${ZFP_SRCDIR}/src/decode3d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode3d.o `test -f '${ZFP_SRCDIR}/src/decode3d.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/decode3d.c
+
+${ZFP_SRCDIR}/src/libzfp_a-decode3d.obj: ${ZFP_SRCDIR}/src/decode3d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-decode3d.obj `if test -f '${ZFP_SRCDIR}/src/decode3d.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/decode3d.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/decode3d.c'; fi`
+
+${ZFP_SRCDIR}/src/libzfp_a-encode3f.o: ${ZFP_SRCDIR}/src/encode3f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode3f.o `test -f '${ZFP_SRCDIR}/src/encode3f.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/encode3f.c
+
+${ZFP_SRCDIR}/src/libzfp_a-encode3f.obj: ${ZFP_SRCDIR}/src/encode3f.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode3f.obj `if test -f '${ZFP_SRCDIR}/src/encode3f.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/encode3f.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/encode3f.c'; fi`
+
+${ZFP_SRCDIR}/src/libzfp_a-encode3d.o: ${ZFP_SRCDIR}/src/encode3d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode3d.o `test -f '${ZFP_SRCDIR}/src/encode3d.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/encode3d.c
+
+${ZFP_SRCDIR}/src/libzfp_a-encode3d.obj: ${ZFP_SRCDIR}/src/encode3d.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-encode3d.obj `if test -f '${ZFP_SRCDIR}/src/encode3d.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/encode3d.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/encode3d.c'; fi`
+
+${ZFP_SRCDIR}/src/libzfp_a-zfp.o: ${ZFP_SRCDIR}/src/zfp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-zfp.o `test -f '${ZFP_SRCDIR}/src/zfp.c' || echo '$(srcdir)/'`${ZFP_SRCDIR}/src/zfp.c
+
+${ZFP_SRCDIR}/src/libzfp_a-zfp.obj: ${ZFP_SRCDIR}/src/zfp.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libzfp_a_CPPFLAGS) $(CPPFLAGS) $(libzfp_a_CFLAGS) $(CFLAGS) -c -o ${ZFP_SRCDIR}/src/libzfp_a-zfp.obj `if test -f '${ZFP_SRCDIR}/src/zfp.c'; then $(CYGPATH_W) '${ZFP_SRCDIR}/src/zfp.c'; else $(CYGPATH_W) '$(srcdir)/${ZFP_SRCDIR}/src/zfp.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -772,7 +832,7 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-rm -f ${MXML_SRCDIR}/$(am__dirstamp)
+	-rm -f ${ZFP_SRCDIR}/src/$(am__dirstamp)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/src/zfp/zfp-0.5.0/API b/src/zfp/zfp-0.5.0/API
new file mode 100644
index 0000000..381e310
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/API
@@ -0,0 +1,439 @@
+OVERVIEW
+
+zfp consists of three distinct components: (1) a set of low-level C codecs
+for compressing and decompressing block subsets of one-, two-, and three-
+dimensional single- and double-precision arrays; (2) a set of corresponding
+C++ compressed array classes that support random access; and (3) a high-level
+C interface for compressing and decompressing entire floating-point arrays.
+
+The compression codecs operate on individual d-dimensional blocks of size
+4^d, e.g. 4 values in 1D, 4x4 = 16 values in 2D, and 4x4x4 = 64 values in
+3D.  The block being compressed need not be stored contiguously but can
+be processed by specifying regular strides in each dimension.  This is
+useful if the block is initially stored uncompressed as part of a larger
+array.
+
+The array classes represent an entire array of floating-point values as
+a collection of compressed blocks, each whose compressed size in number
+of bits is fixed and specified by the user.  The array classes cache
+uncompressed blocks to reduce the number of compression and decompression
+calls.  Whenever an array value is read, the corresponding block is first
+looked up in the cache, and if found the uncompressed value is returned.
+Otherwise the block is first decompressed and stored in the cache.
+Whenever an array element is written (whether actually modified or not),
+a "dirty bit" is set with its cached block to indicate that the block
+must be compressed back to persistent storage when evicted from the cache.
+
+The libzfp C interface is useful for quickly compressing and archiving
+large floating-point arrays of arbitrary dimensions without having to
+understand the technical details of the compression algorithm and codec.
+This library comes with utility functions for specifying the compression
+rate, precision, or accuracy of the compressed data.
+
+All code examples below are for 3D arrays of doubles, but it should be
+clear how to modify the function calls for single precision and for 1D
+or 2D arrays.
+
+
+GENERAL DESIGN AND LIMITATIONS
+
+The zfp API has been designed to facilitate integration with existing
+applications.  After initial array declaration, a zfp array can often
+be used in place of a regular C/C++ array or STL vector, e.g. using flat
+indexing via a[index] or using multidimensional indexing via a(i),
+a(i, j), or a(i, j, k).  There are, however, some important differences.
+For instance, it is not possible to take the address of an array element,
+i.e. constructions like &a[i] and a + i are not allowed.  Moreover, the
+operators [] and () do not return regular C++ references.  Instead, a
+proxy reference class is used (similar to how STL bit vectors are
+implemented).  These proxy references can, however, safely be passed to
+functions and used where regular references can.
+
+zfp does not support special floating-point values like infinities and
+NaNs, although denormalized numbers are handled correctly.  Similarly,
+because the compressor assumes that the array values vary smoothly,
+using finite but large values like HUGE_VAL in place of infinities is
+not advised, as this will introduce large errors in smaller values
+within the same block.  Future extensions will provide support for a
+bit mask to mark the presence of non-values.
+
+The zfp C++ classes are implemented entirely as header files and make
+extensive use of C++ templates to reduce code redundancy.  Most classes
+are wrapped in the 'zfp' namespace.
+
+
+API OVERVIEW
+
+The documentation is divided into three parts: the high-level libzfp
+library; the low-level compression codecs; and the compressed array
+classes (in that order).  Users interested only in the compressed arrays,
+which do not directly expose anything related to compression other than
+compression rate control, may safely skip the next two sections.
+
+
+ZFP HIGH-LEVEL C INTERFACE
+
+Users concerned only with storing their floating-point data compressed may
+use zfp as a black box that maps a possibly non-contiguous floating-point
+array to a compressed bit stream.  The intent of libzfp is to provide both
+a high- and low-level interface to the compressor that can be called from
+both C and C++ (and possibly other languages).  libzfp supports strided
+access, e.g. for compressing vector fields one scalar at a time, or for
+compressing arrays of structs.
+
+Consider compressing the 3D C/C++ array
+
+  // define an uncompressed array
+  double a[nz][ny][nx];
+
+where nx, ny, and nz can be any positive dimensions.  To invoke the libzfp
+compressor, the dimensions and type must first be specified in a zfp_field
+parameter object that encapsulates the type, size, and memory layout of the
+array:
+
+  // allocate metadata for the 3D array a[nz][ny][nx]
+  uint dims = 3;
+  zfp_type type = zfp_type_double;
+  zfp_field* field = zfp_field_3d(&a[0][0][0], type, nx, ny, nz);
+
+For single-precision data, use zfp_type_float.  Note that the high-level
+API does not support integer arrays (zfp_type_int32 and zfp_type_int64).
+Such arrays must be compressed via the low-level interface.
+
+Functions similar to zfp_field_3d exist for declaring 1D and 2D arrays.
+If the dimensionality of the array is unknown at this point, then a generic
+zfp_field_alloc() call can be made to just allocate a zfp_field struct,
+which can be filled in later using the zfp_field_set_* functions.  If the
+array is non-contiguous, then zfp_field_set_stride_3d should be called.
+
+The zfp_field parameter object holds information about the uncompressed
+array.  To specify the compressed array, a zfp_stream object must be
+allocated:
+
+  // allocate metadata for a compressed stream
+  zfp_stream* zfp = zfp_stream_open(NULL);
+
+We may now specify the rate, precision, or accuracy (see the README file
+for more details on the meaning of these parameters):
+
+  // set compression mode and parameters
+  zfp_stream_set_rate(zfp, rate, type, dims, 0);
+  zfp_stream_set_precision(zfp, precision, type);
+  zfp_stream_set_accuracy(zfp, tolerance, type);
+
+Note that only one of these three functions should be called.  The return
+value from these functions gives the actual rate, precision, or tolerance,
+and may differ slightly from the argument passed due to constraints imposed
+by the compressor, e.g. each block must be stored using a whole number of
+bits at least as large as the number of bits in the floating-point exponent;
+the precision cannot exceed the number of bits in a floating-point value
+(i.e. 32 for single and 64 for double precision); and the tolerance must
+be a (possibly negative) power of two.
+
+The compression parameters have now been specified, but before compression
+can occur a buffer large enough to hold the compressed bit stream must be
+allocated.  Another utility function exists for estimating how many bytes
+are needed:
+
+  // allocate buffer for compressed data
+  size_t bufsize = zfp_stream_maximum_size(zfp, field);
+  uchar* buffer = new uchar[bufsize];
+
+Note that zfp_stream_maximum_size returns the smallest buffer size
+necessary to safely compress the data--the actual compressed size may be
+smaller.  If the members of zfp and field are for whatever reason not
+initialized correctly, then zfp_stream_maximum_size returns 0.
+
+Before compression can commence, we must associate the allocated buffer
+with a bit stream used by the compressor to read and write bits:
+
+  // associate bit stream with allocated buffer
+  bitstream* stream = stream_open(buffer, bufsize);
+  zfp_stream_set_bit_stream(zfp, stream);
+
+Finally, the array is compressed as follows:
+
+  // compress entire array
+  size_t size = zfp_compress(zfp, field);
+
+The return value is the actual number of bytes of compressed storage, and
+as already mentioned, size <= bufsize.  If size = 0, then the compressor
+failed.  Since zfp 0.5.0, the compressor does not rewind the bit stream
+before compressing, which allows multiple fields to be compressed one
+after the other.  The return value from zfp_compress is always the total
+number of bytes of compressed storage so far relative to the memory
+location pointed to by 'buffer'.
+
+To decompress the data, the field and compression parameters must be
+initialized with the same values as used for compression, either via
+the same sequence of function calls as above, or by recording these
+fields and setting them directly.  Metadata such as array dimensions and
+compression parameters are by default not stored in the compressed stream.
+It is up to the caller to store this information, either separately from
+the compressed data, or via the zfp_write_header and zfp_read_header calls.
+These calls allow the user to specify what information to store in the
+header, including a 'magic' format identifier, the field type and
+dimensions, and the compression parameters (see the ZFP_HEADER_* macros).
+
+In addition to this initialization, the bit stream has to be rewound to
+the beginning:
+
+  // rewind compressed stream and decompress array
+  zfp_stream_rewind(zfp);
+  int success = zfp_decompress(zfp, field);
+
+The return value is zero if the decompressor failed.
+
+
+ZFP LOW-LEVEL COMPRESSION AND DECOMPRESSION CODEC
+
+For applications that wish to compress or decompress portions of an array
+on demand, a low-level interface is available.  Since this API is useful
+primarily for supporting random access, the user also needs to manipulate
+the bit stream (see inc/bitstream.h), e.g. to position the bit pointer
+to where data is to be read or written.  Please be advised that the bit
+stream functions have been optimized for speed, and do not check for
+buffer overruns or other types of programmer error.
+
+Like the high-level API, the low-level API also makes use of the zfp_stream
+parameter object (see section above) to specify compression parameters and
+storage, but does not encapsulate array metadata in a zfp_field object.
+Functions exists for encoding and decoding complete or partial blocks, with
+or without strided access.  In non-strided mode, the uncompressed block to
+be encoded or decoded is assumed to be stored contiguously.  For example,
+
+  // compress a single contiguous block
+  double block[4 * 4 * 4] = { /* some set of values */ };
+  uint bits = zfp_encode_block_double_3(zfp, block);
+
+The return value is the number of bits of compressed storage for the block.
+For fixed-rate streams, if random access is desired, then the stream should
+also be flushed after each block is encoded:
+
+  // flush any buffered bits
+  zfp_stream_flush(zfp);
+
+This flushing should be done only after the last block has been compressed in
+fixed-precision and fixed-accuracy mode, or when random access is not needed
+in fixed-rate mode.
+
+The block above could also have been compressed as follows using strides:
+
+  // compress a single contiguous block using strides
+  double block[4][4][4] = { /* some set of values */ };
+  int sx = &block[0][0][1] - &block[0][0][0]; // x stride =  1
+  int sy = &block[0][1][0] - &block[0][0][0]; // y stride =  4
+  int sz = &block[1][0][0] - &block[0][0][0]; // z stride = 16
+  uint bits = zfp_encode_block_strided_double_3(zfp, block, sx, sy, sz);
+
+The strides are measured in number of scalars, not in bytes.
+
+For partial blocks, e.g. near the boundaries of arrays whose dimensions
+are not multiples of four, there are corresponding functions that accept
+parameters (nx, ny, nz) to specify the actual block dimensions, with
+1 <= nx, ny, nz <= 4.  Corresponding functions exist for decompression.
+
+To position a bit stream for reading (decompression), use
+
+  // position the stream at given bit offset for reading
+  stream_rseek(stream, offset);
+
+where the offset is measured in number of bits from the beginning of the
+stream.  For writing (compression), a corresponding call exists:
+
+  // position the stream at given bit offset for writing
+  stream_wseek(stream, offset);
+
+Note that it is possible to decompress fewer bits than are stored with a
+compressed block to quickly obtain an approximation.  This is done by
+setting zfp->maxbits to fewer bits than used during compression, e.g. to
+decompress only the first 256 bits of each block:
+
+  // modify decompression parameters to decode 256 bits per block
+  uint maxbits;
+  uint maxprec;
+  int minexp;
+  zfp_stream_params(zfp, NULL, &maxbits, &maxprec, &minexp);
+  assert(maxbits >= 256);
+  zfp_stream_set_params(zfp, 256, 256, maxprec, minexp);
+
+This feature may be combined with progressive decompression, as discussed
+further in the FAQ.
+
+
+COMPRESSED ARRAYS
+
+Currently there are six array classes for 1D, 2D, and 3D arrays, each of
+which can represent single- or double-precision values.  Although these
+arrays store values in a form different from conventional single- and
+double-precision floating point, the user interacts with the arrays via
+floats and doubles.
+
+The description below is for 3D arrays of doubles--the necessary changes
+for other array types should be obvious.  To declare and zero initialize
+an array, use
+
+  // declare nx * ny * nz array of compressed doubles
+  zfp::array3<double> a(nx, ny, nz, rate);
+
+This declaration is conceptually equivalent to
+
+  double a[nz][ny][nx] = {};
+
+or
+
+  std::vector<double> a(nx * ny * nz, 0.0);
+
+but with the user specifying the amount of storage used.  (A predefined type
+array3d also exists, while the suffix 'f' is used for floats.)  Note that
+the array dimensions can be arbitrary, and need not be multiples of four
+(see above for a discussion of incomplete blocks).  The 'rate' argument
+specifies how many bits per value (amortized) to store in the compressed
+representation.  By default the block size is restricted to a multiple of
+64 bits, and therefore the rate argument can be specified in increments of
+64 / 4^d bits in d dimensions, i.e.
+
+  1D arrays: 16-bit granularity
+  2D arrays: 4-bit granularity
+  3D arrays: 1-bit granularity
+
+For finer granularity, the BITSTREAM_WORD_TYPE macro needs to be set to a
+type narrower than 64 bits, e.g. if set to uint8 the rate granularity
+becomes 8 / 4^d bits in d dimensions, or
+
+  1D arrays: 2-bit granularity
+  2D arrays: 1/2-bit granularity
+  3D arrays: 1/8-bit granularity
+
+Note that finer granularity implies lower performance.  Also note that
+because the arrays are stored compressed, their effective precision is
+likely to be higher than the user-specified rate.
+
+The array can also optionally be initialized from an existing contiguous
+floating-point array stored at 'pointer' with an x stride of 1, y stride
+of nx, and z stride of nx * ny:
+
+  // declare and initialize 3D array of doubles
+  zfp::array3d a(nx, ny, nz, precision, pointer, cache_size);
+
+The 'cache_size' argument specifies the minimum number of bytes to allocate
+for the cache of uncompressed blocks (see the section on Caching below for
+more details).
+
+If not already initialized, a function set() can be used to copy uncompressed
+data to the compressed array:
+
+  const double* pointer; // pointer to uncompressed, initialized data
+  a.set(pointer); // initialize compressed array with floating-point data
+
+Similarly, a get() function exists for retrieving uncompressed data:
+
+  double* pointer; // pointer to where to write uncompressed data
+  a.get(pointer); // decompress and store the array at pointer
+
+The compressed representation of an array can also be queried or initialized 
+directly without having to convert to/from its floating-point representation:
+
+  size_t bytes = compressed_size(); // number of bytes of compressed storage
+  uchar* compressed_data(); // pointer to compressed data
+
+The array can through this pointer be initialized from offline compressed
+storage, but only after its dimensions and rate have been specified (see
+above).  For this to work properly, the cache must first be emptied via a
+clear_cache() call (see below).
+
+Through operator overloading, the array can be accessed in one of two ways.
+For read accesses, use
+
+  double value = a[index]; // fetch value with given flat array index
+  double value = a(i, j, k); // fetch value with 3D index (i, j, k)
+
+These access the same value if and only if index = i + nx * (j + ny * k).
+Note that 0 <= i < nx, 0 <= j < ny, and 0 <= k < nz, and i varies faster
+than j, which varies faster than k.
+
+Array values may be written and updated using the usual set of C++ assignment
+and compound assignment operators.  For example:
+
+  a[index] = value; // set value at flat array index
+  a(i, j, k) += value; // increment value with 3D index (i, j, k)
+
+Whereas one might expect these operators to return a (non-const) reference
+to an array element, this would allow seating a reference to a value that
+currently is cached but is transient, which could be unsafe.  Moreover,
+this would preclude detecting when an array element is modified.  Therefore,
+the return type of both operators [] and () is a proxy reference class,
+similar to std::vector<bool>::reference from the STL library.  Because
+read accesses to a mutable object cannot call the const-qualified accessor,
+a proxy reference may be returned even for read calls, e.g. in
+
+  a[i - 1] = a[i];
+
+the array a clearly must be mutable to allow assignment to a[i - 1], and
+therefore the read access a[i] returns type zfp::array3d::reference.  The
+value associated with the read access is obtained via an implicit conversion.
+
+Array dimensions (nx, ny, nz) can be queried using these functions:
+
+  size_t size(); // total number of elements nx * ny * nz
+  uint size_x(); // nx
+  uint size_y(); // ny
+  uint size_z(); // nz
+
+The array dimensions can also be changed dynamically, e.g. if not known
+at declaration time, using
+
+  void resize(uint nx, uint ny, uint nz, bool clear = true);
+
+When clear = true, the array is explicitly zeroed.  In either case, all
+previous contents of the array are lost.  If nx = ny = nz = 0, all storage
+is freed.
+
+Finally, the rate supported by the array may be queried via
+
+  double rate(); // number of compressed bits per value
+
+and changed using
+
+  void set_rate(rate); // change rate
+
+This also destroys prior contents.
+
+
+CACHING
+
+As mentioned above, the array class maintains a software write-back cache
+of at least one uncompressed block.  When a block in this cache is evicted
+(e.g. due to a conflict), it is compressed back to permanent storage only
+if it has previously been modified.
+
+The size cache to use is specified by the user, and is an important
+parameter that needs careful consideration in order to balance the extra
+memory usage, performance, and quality (recall that data loss is incurred
+only when a block is evicted from the cache and compressed).  Although the
+best choice varies from one application to another, we suggest allocating
+at least two layers of blocks (2 * (nx / 4) * (ny / 4) blocks) for
+applications that stream through the array and perform stencil computations
+such as gathering data from neighboring elements.  This allows limiting the
+cache misses to compulsory ones.  If the cache_size parameter is set to
+zero bytes, then this default of two layers is used.
+
+The cache size can be set during construction, or can be set at a later
+time via
+
+  void set_cache_size(bytes); // change cache size
+
+Note that if bytes = 0, then the array dimensions must have already been
+specified for the default size to be computed correctly.  When the cache
+is resized, it is first flushed if not already empty.  The cache can
+also be flushed explicitly if desired by calling
+
+  void flush_cache(); // empty cache by first compressing any modified blocks
+
+To empty the cache without compressing any cached data, call
+
+  void clear_cache(); // empty cache without compression
+
+To query the byte size of the cache, use
+
+  size_t cache_size(); // actual cache size in bytes
diff --git a/src/zfp/zfp-0.5.0/Config b/src/zfp/zfp-0.5.0/Config
new file mode 100644
index 0000000..663804c
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/Config
@@ -0,0 +1,49 @@
+# compiler settings -----------------------------------------------------------
+
+# GNU compiler
+CC = gcc
+CXX = g++
+FLAGS = -O3 -fPIC -Wall -I../inc $(DEFS)
+CFLAGS = $(FLAGS) -std=c89 -Wno-unused-function
+#CFLAGS = $(FLAGS) -std=c99
+CXXFLAGS = $(FLAGS) -std=c++98
+
+# IBM compiler
+# CC = xlc
+# CXX = xlc++
+# CFLAGS = -O2 -qmaxmem=-1 -qpic=large -I../inc $(DEFS)
+# CXXFLAGS= $(CFLAGS)
+
+# optional compiler macros ----------------------------------------------------
+
+# use smaller bit stream word type for finer rate granularity
+# DEFS += -DBIT_STREAM_WORD_TYPE=uint8
+# DEFS += -DBIT_STREAM_WORD_TYPE=uint16
+# DEFS += -DBIT_STREAM_WORD_TYPE=uint32
+
+# enable strided access for progressive zfp streams
+# DEFS += -DBIT_STREAM_STRIDED
+
+# run regression test with medium sized arrays
+# DEFS += -DTESTZFP_MEDIUM_ARRAYS
+
+# run regression test with large arrays
+# DEFS += -DTESTZFP_LARGE_ARRAYS
+
+# run diffusion without compression
+# DEFS += -DWITHOUT_COMPRESSION
+
+# use aligned memory allocation
+# DEFS += -DALIGNED_ALLOC
+
+# use two-way skew-associative cache
+# DEFS += -DCACHE_TWOWAY
+
+# use faster but more collision prone hash function
+# DEFS += -DCACHE_FAST_HASH
+
+# count cache misses
+# DEFS += -DCACHE_PROFILE
+
+# for recent versions of MSVC
+# DEFS += -DHAVE_C99_MATH
diff --git a/src/zfp/zfp-0.5.0/FAQ b/src/zfp/zfp-0.5.0/FAQ
new file mode 100644
index 0000000..c822231
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/FAQ
@@ -0,0 +1,371 @@
+The following is a list of answers to frequently asked questions.  For
+questions not answered here or elsewhere in the documentation, please
+e-mail the author at pl at llnl.gov.
+
+Questions answered in this FAQ:
+
+ Q1: Can zfp compress vector fields?
+ Q2: Should I declare a 2D array as zfp::array1d a(nx * ny, rate)?
+ Q3: How can I initialize a zfp compressed array from disk?
+ Q4: Can I use zfp to represent dense matrices?
+ Q5: Can zfp compress logically regular but geometrically irregular data?
+ Q6: Does zfp handle infinities, NaNs, and denormal floating-point numbers?
+ Q7: Can zfp handle data with some missing values?
+ Q8: Can I use zfp to store integer data?
+ Q9: Can I compress 32-bit integers using zfp?
+Q10: Why does zfp corrupt memory if my allocated buffer is too small?
+Q11: Are zfp compressed streams portable across platforms?
+Q12: How can I achieve finer rate granularity?
+Q13: Can I generate progressive zfp streams?
+Q14: How do I initialize the decompressor?
+Q15: Must I use the same parameters during compression and decompression?
+Q16: Do strides have to match during compression and decompression?
+Q17: Why does zfp sometimes not respect my error tolerance?
+
+-------------------------------------------------------------------------------
+
+Q1: I have a 2D vector field
+
+  double velocity[ny][nx][2];
+
+of dimensions nx * ny.  Can I use a 3D zfp array to store this as
+
+  array3d velocity(2, nx, ny, rate);
+
+A: Although this could be done, zfp assumes that consecutive values are
+related.  The two velocity components (vx, vy) are almost suredly independent,
+and would not exhibit smoothness.  This will severely hurt the compression
+rate or quality.  Instead, consider storing vx and vy as two separate 2D
+scalar arrays
+
+  array2d vx(nx, ny, rate);
+  array2d vy(nx, ny, rate);
+
+or as
+
+  array2d velocity[2] = {array2d(nx, ny, rate), array2d(nx, ny, rate)};
+
+-------------------------------------------------------------------------------
+
+Q2: I have a 2D scalar field of dimensions nx * ny that I allocate as
+
+  double* a = new double[nx * ny];
+
+and index as
+
+  a[x + nx * y]
+
+Should I use a corresponding zfp array
+
+  array1d a(nx * ny, rate);
+
+to store my data in compressed form?
+
+A: Although this is certainly possible, if the scalar field exhibits
+coherence in both spatial dimensions, then far better results can be
+achieved by using a 2D array
+
+  array2d a(nx, ny, rate);
+
+Although both compressed arrays can be indexed as above, the 2D array can
+exploit smoothness in both dimensions and improve the quality dramatically
+for the same rate.
+
+-------------------------------------------------------------------------------
+
+Q3: I have a large, uncompressed, 3D data set
+
+  double a[nz][ny][nx];
+
+stored on disk that I would like to read into a compressed array.  This data
+set will not fit in memory uncompressed.  What is the best way of doing this?
+
+A: Using a zfp array
+
+  array3d a(nx, ny, nz, rate);
+
+the most straightforward way is to read one floating-point value at a time
+and copy it into the array:
+
+  for (uint z = 0; z < nz; z++)
+    for (uint y = 0; y < ny; y++)
+      for (uint x = 0; x < nx; x++) {
+        double f;
+        if (fread(&f, sizeof(f), 1, file) == 1)
+          a(x, y, z) = f;
+        else
+          // handle I/O error
+      }
+
+Note, however, that if the array cache is not large enough, then this may
+compress blocks before they have been completely filled.  Therefore it is
+recommended that the cache holds at least one complete layer of blocks,
+i.e. (nx / 4) * (ny / 4) blocks in the example above.
+
+-------------------------------------------------------------------------------
+
+Q4: Can I use zfp to represent dense matrices?
+
+A: Yes, but your mileage may vary.  Dense matrices, unlike smooth scalar
+fields, rarely exhibit correlation between adjacent rows and columns.  Thus,
+the quality or compression ratio may suffer.
+
+-------------------------------------------------------------------------------
+
+Q5: My data is logically structured but irregularly sampled, e.g. it is
+rectilinear, curvilinear, or Lagrangian, or uses an irregular spacing of
+quadrature points.  Can I still use zfp to compress it?
+
+A: Yes, as long as the data is (or can be) represented as a logical
+multidimensional array, though your mileage may vary.  zfp has been designed
+for uniformly sampled data, and compression will in general suffer the more
+irregular the sampling is.
+
+-------------------------------------------------------------------------------
+
+Q6: Does zfp handle infinities and NaNs?  What about denormal floating-point
+numbers?
+
+A: No, only finite, valid floating-point values are supported.  If a block
+contains a NaN or an infinity, undefined behavior is invoked due to the
+C math function frexp being undefined for non-numbers.  Denorms are, however,
+handled correctly.
+
+-------------------------------------------------------------------------------
+
+Q7: My data has some missing values that are flagged by very large numbers,
+e.g. 1e30.  Is that OK?
+
+A: Although all finite numbers are "correctly" handled, such large sentinel
+values are likely to pollute nearby values, because all values within a block
+are expressed with respect to a common largest exponent.  The presence of
+very large values may result in complete loss of precision of nearby, valid
+numbers.  Currently no solution to this problem is available, but future
+versions of zfp will likely support a bit mask to tag values that should be
+excluded from compression.
+
+-------------------------------------------------------------------------------
+
+Q8: Can I use zfp to store integer data such as 8-bit quantized images or
+16-bit digital elevation models?
+
+A: Yes (as of version 0.4.0), but the data has to be promoted to 32-bit signed
+integers first.  This should be done one block at a time using an appropriate
+zfp_promote_*_to_int32 function call (see zfp.h).  Note that these functions
+shift the low-precision integers into the most significant bits of 31-bit (not
+32-bit) integers and also convert unsigned to signed integers.  Do use these
+functions rather than simply casting 8-bit integers to 32 bits to avoid wasting
+compressed bits to encode leading zeros.  Moreover, in fixed-precision mode,
+set the precision relative to the precision of the source data.
+
+-------------------------------------------------------------------------------
+
+Q9: I have some 32-bit integer data.  Can I compress it using zfp's 32-bit
+integer support?
+
+A: Maybe.  zfp compression of 32-bit and 64-bit integers requires that each
+integer f have magnitude |f| < 2^30 and |f| < 2^62, respectively.  To handle
+signed integers that span the entire range -2^31 <= x < 2^31, or unsigned
+integers 0 <= x < 2^32, the data has to be promoted to 64 bits first.
+
+-------------------------------------------------------------------------------
+
+Q10: Why does zfp corrupt memory rather than return an error code if not enough
+memory is allocated for the compressed data?
+
+A: This is for performance reasons.  zfp was primarily designed for fast
+random access to fixed-rate compressed arrays, where checking for buffer
+overruns is unnecessary.  Adding a test for every compressed byte output
+would significantly compromise performance.
+
+One way around this problem (when not in fixed-rate mode) is to use the
+maxbits parameter in conjunction with the maximum precision or maximum
+absolute error parameters to limit the size of compressed blocks.  Finally,
+the function zfp_stream_maximum_size returns a conservative buffer size
+that is guaranteed to be large enough to hold the compressed data and the
+optional header.
+
+-------------------------------------------------------------------------------
+
+Q11: Are zfp compressed streams portable across platforms?  Are there, for
+example, endianness issues?
+
+A: To ensure portability across different endian platforms, the bit stream
+must be written in increments of single bytes on big endian processors (e.g.
+PowerPC, SPARC), which is achieved by compiling zfp with
+
+  -DBITSTREAM_WORD_TYPE=uint8
+
+See the Config file.  Note that on little endian processors (e.g. Intel
+x86-64 and AMD64), the word size does not affect the bit stream produced,
+and thus the default word size may be used.  By default, zfp uses a word
+size of 64 bits, which results in the coarsest rate granularity but fastest
+(de)compression.  If cross-platform portability is not needed, then the
+maximum word size is recommended (but see also the next question).
+
+Furthermore, zfp assumes that the floating-point format conforms to IEEE 754.
+Issues may arise on architectures that do not support IEEE floating point.
+
+-------------------------------------------------------------------------------
+
+Q12: How can I achieve finer rate granularity?
+
+A: For d-dimensional arrays, zfp supports a granularity of 8 / 4^d bits, i.e.
+the rate can be specified in increments of a fraction of a bit for 2D and 3D
+arrays.  Such fine rate selection is always available for sequential
+compression (e.g. when calling zfp_compress).  
+
+Unlike in sequential compression, zfp's compressed arrays require random
+access writes, which are supported only at the granularity of whole words.
+By default, a word is 64 bits, which gives a rate granularity of 64 / 4^d
+in d dimensions, i.e. 16 bits in 1D, 4 bits in 2D, and 1 bit in 3D.
+
+To achieve finer granularity, recompile zfp with a smaller (but as large as
+possible) stream word size, e.g.
+
+  -DBITSTREAM_WORD_TYPE=uint8
+
+gives the finest possible granularity, but at the expense of (de)compression
+speed.  See the Config file.
+
+-------------------------------------------------------------------------------
+
+Q13: Can I generate progressive zfp streams?
+
+A: Yes, but it requires some coding effort.  There is no high-level support
+for progressive zfp streams.  To implement progressive fixed-rate streams, 
+the fixed-length bit streams should be interleaved among the blocks that
+make up an array.  For instance, if a 3D array uses 1024 bits per block,
+then those 1024 bits could be broken down into, say, 16 pieces of 64 bits
+each, resulting in 16 discrete quality settings.  By storing the blocks
+interleaved such that the first 64 bits of all blocks are contiguous,
+followed by the next 64 bits of all blocks, etc., one can achieve progressive
+decompression by setting the maxbits parameter (see zfp_stream_set_params)
+to the number of bits per block received so far.
+
+To enable interleaving of blocks, zfp must first be compiled with
+
+  -DBIT_STREAM_STRIDED
+
+to enable strided bit stream access.  In the example above, if the stream
+word size is 64 bits and there are n blocks, then
+
+  stream_set_stride(stream, m, n);
+
+implies that after every m 64-bit words have been decoded, the bit stream
+is advanced by m * n words to the next set of m 64-bit words associated
+with the block.
+
+-------------------------------------------------------------------------------
+
+Q14: How do I initialize the decompressor?
+
+A: The zfp_stream and zfp_field objects usually need to be initialized with
+the same values as they had during compression (but see Q15 for exceptions).
+These objects hold the compression mode and parameters, and field data like
+the scalar type and dimensions.  By default, these parameters are not stored
+with the compressed stream (the "codestream") and prior to zfp 0.5.0 had to
+be maintained separately by the application.
+
+Since version 0.5.0, functions exist for reading and writing a 12- to 19-byte
+header that encodes compression and field parameters.  For applications that
+wish to embed only the compression parameters, e.g. when the field dimensions
+are already known, there are separate functions that encode and decode this
+information independently.
+
+-------------------------------------------------------------------------------
+
+Q15: Must I use the same parameters during compression and decompression?
+
+A: Not necessarily.  It is possible to use more tightly constrained zfp_stream
+parameters during decompression than were used during compression.  For
+instance, one may use a larger minbits, smaller maxbits, smaller maxprec, or
+larger minexp during decompression to process fewer compressed bits than are
+stored, and to decompress the array more quickly at a lower precision.  This
+may be useful in situations where the precision and accuracy requirements are
+not known a priori, thus forcing conservative settings during compression, or
+when the compressed stream is used for multiple purposes.  For instance,
+visualization usually has less stringent precision requirements than
+quantitative data analysis.  This feature of decompressing to a lower precision
+is particularly useful when the stream is stored progressively (see Q13).
+
+Note that one may not use less constrained parameters during decompression,
+e.g. one cannot ask for more than maxprec bits of precision when decompressing.
+
+-------------------------------------------------------------------------------
+
+Q16: Do strides have to match during compression and decompression?
+
+A: No.  For instance, a 2D vector field
+
+  float in[ny][nx][2];
+
+could be compressed as two scalar fields with strides sx = 2, sy = 2 * nx,
+and with pointers &in[0][0][0] and &in[0][0][1] to the first value of each
+scalar field.  These two scalar fields can later be decompressed as
+non-interleaved fields
+
+  float out[2][ny][nx];
+
+using strides sx = 1, sy = nx and pointers &out[0][0][0] and &out[1][0][0].
+
+-------------------------------------------------------------------------------
+
+Q17: Why does zfp sometimes not respect my error tolerance?
+
+A: zfp does not store each floating-point value independently, but represents
+a group of values (4, 16, or 64 values, depending on dimensionality) as linear
+combinations like averages by evaluating arithmetic expressions.  Just like in
+uncompressed IEEE floating-point arithmetic, both representation error and
+roundoff error in the least significant bit(s) often occur.
+
+To illustrate this, consider compressing the following 1D array of four floats
+
+  float f[4] = { 1, 1e-1, 1e-2, 1e-3 };
+
+using the zfp command-line tool:
+
+  zfp -f -a 0 4 0 0 input.dat output.dat
+
+In spite of an error tolerance of zero, the reconstructed values are
+
+  float g[4] = { 1, 1e-1, 9.999998e-03, 9.999946e-04 };
+
+with a (computed) maximum error of 5.472e-9.  Because f[3] = 1e-3 can only
+be approximately represented in radix-2 floating-point, the actual error
+is even smaller: 5.424e-9.  This reconstruction error is primarily due to zfp's
+block-floating-point representation, which expresses the four values relative
+to a single, common binary exponent.  Such exponent alignment occurs also in
+regular IEEE floating-point operations like addition.  For instance,
+
+  float x = (f[0] + f[3]) - 1;
+
+should of course result in x = f[3] = 1e-3, but due to exponent alignment
+a few of the least significant bits of f[3] are lost in the addition, giving
+a result of x = 1.0000467e-3 and a roundoff error of 4.668e-8.  Similarly,
+
+  float sum = f[0] + f[1] + f[2] + f[3];
+
+should return sum = 1.111, but is computed as 1.1110000610.  Moreover, the
+value 1.111 cannot even be represented exactly in (radix-2) floating-point;
+the closest float is 1.1109999.  Thus the computed error
+
+  float error = sum - 1.111f;
+
+which itself has some roundoff error, is 1.192e-7.
+
+Phew!  Note how the error introduced by zfp (5.472e-9) is in fact one to two
+orders of magnitude smaller than the roundoff errors (4.668e-8 and 1.192e-7)
+introduced by IEEE floating-point in these computations.  This lower error
+is in part due to zfp's use of 30-bit significands compared to IEEE's 24-bit
+single-precision significands.  Note that data sets with a large dynamic
+range, e.g. where adjacent values differ a lot in magnitude, are more
+susceptible to representation errors.
+
+The moral of the story is that error tolerances smaller than machine epsilon
+(relative to the data range) cannot always be satisfied by zfp.  Nor are such
+tolerances necessarily meaningful for representing floating-point data that
+originated in floating-point arithmetic expressions, since accumulated
+roundoff errors are likely to swamp compression errors.  Because such roundoff
+errors occur frequently in floating-point arithmetic, insisting on lossless
+compression on the grounds of accuracy is tenuous at best.
diff --git a/src/zfp/zfp-0.5.0/LICENSE b/src/zfp/zfp-0.5.0/LICENSE
new file mode 100644
index 0000000..b8275dc
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/LICENSE
@@ -0,0 +1,57 @@
+Copyright (c) 2014-2016, Lawrence Livermore National Security, LLC.
+Produced at the Lawrence Livermore National Laboratory.
+Written by Peter Lindstrom.
+LLNL-CODE-663824.
+All rights reserved.
+
+This file is part of the zfp library.
+For details, see http://computation.llnl.gov/casc/zfp/.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the disclaimer below.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the disclaimer (as noted below) in the
+documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the LLNS/LLNL nor the names of its contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
+LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Additional BSD Notice
+
+1. This notice is required to be provided under our contract with the U.S.
+Department of Energy (DOE).  This work was produced at Lawrence Livermore
+National Laboratory under Contract No. DE-AC52-07NA27344 with the DOE.
+
+2. Neither the United States Government nor Lawrence Livermore National
+Security, LLC nor any of their employees, makes any warranty, express or
+implied, or assumes any liability or responsibility for the accuracy,
+completeness, or usefulness of any information, apparatus, product, or
+process disclosed, or represents that its use would not infringe
+privately-owned rights.
+
+3. Also, reference herein to any specific commercial products, process, or
+services by trade name, trademark, manufacturer or otherwise does not
+necessarily constitute or imply its endorsement, recommendation, or
+favoring by the United States Government or Lawrence Livermore National
+Security, LLC.  The views and opinions of authors expressed herein do not
+necessarily state or reflect those of the United States Government or
+Lawrence Livermore National Security, LLC, and shall not be used for
+advertising or product endorsement purposes.
diff --git a/src/zfp/zfp-0.5.0/Makefile b/src/zfp/zfp-0.5.0/Makefile
new file mode 100644
index 0000000..ddaa91d
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/Makefile
@@ -0,0 +1,16 @@
+MAKEFLAGS += --no-print-directory
+
+all:
+	@cd src; $(MAKE) clean static
+	@cd examples; $(MAKE) clean all
+
+shared:
+	@cd src; $(MAKE) shared
+
+test:
+	@cd examples; $(MAKE) test
+
+clean:
+	@cd src; $(MAKE) clean
+	@cd examples; $(MAKE) clean
+
diff --git a/src/zfp/zfp-0.5.0/README b/src/zfp/zfp-0.5.0/README
new file mode 100644
index 0000000..9f50d39
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/README
@@ -0,0 +1,422 @@
+INTRODUCTION
+
+  This is zfp 0.5.0, an open source C/C++ library for compressed numerical
+  arrays that support high throughput read and write random access.  zfp was
+  written by Peter Lindstrom at Lawrence Livermore National Laboratory, and
+  is loosely based on the algorithm described in the following paper:
+
+    Peter Lindstrom
+    "Fixed-Rate Compressed Floating-Point Arrays"
+    IEEE Transactions on Visualization and Computer Graphics,
+      20(12):2674-2683, December 2014
+    doi:10.1109/TVCG.2014.2346458
+
+  zfp was originally designed for floating-point data only, but has been
+  extended to also support integer data, and could for instance be used to
+  compress images and quantized volumetric data.  To achieve high compression
+  ratios, zfp uses lossy but optionally error-bounded compression.  Although
+  bit-for-bit lossless compression of floating-point data is not always
+  possible, zfp is usually accurate to within machine epsilon in near-lossless
+  mode.
+
+  zfp works best for 2D and 3D arrays that exhibit spatial coherence, such
+  as smooth fields from physics simulations, images, regularly sampled terrain
+  surfaces, etc.  Although zfp also provides a 1D array class that can be used
+  for 1D signals such as audio, or even unstructured floating-point streams,
+  the compression scheme has not been well optimized for this use case, and
+  rate and quality may not be competitive with floating-point compressors
+  designed specifically for 1D streams.
+
+  zfp is freely available as open source under a BSD license, as outlined in
+  the file 'LICENSE'.  For information on the API and general usage, please
+  see the file 'API' in this directory.
+
+
+INSTALLATION
+
+  zfp consists of three distinct parts: a compression library written in C;
+  a set of C++ header files that implement compressed arrays; and a set of
+  C and C++ examples.  The main compression codec is written in C and should
+  conform to both the ISO C89 and C99 standards.  The C++ array classes are
+  implemented entirely in header files and can be included as is, but since
+  they call the compression library applications must link with libzfp.
+
+  To compile libzfp and all example programs (see below for more details)
+  on Linux or OS X, type
+
+    make
+
+  from this directory.  This compiles libzfp as a static library and the
+  example programs.  To optionally create a shared library, type
+
+    make shared
+
+  and set LD_LIBRARY_PATH to point to ./lib.  To test the compressor, type
+
+    make test
+
+  If the compilation or regression tests fail, it is possible that some of
+  the macros in the file 'Config' have to be adjusted.  Also, the tests may
+  fail due to minute differences in the computed floating-point fields
+  being compressed (as indicated by checksum errors).  It is surprisingly
+  difficult to portably generate a floating-point array that agrees
+  bit-for-bit across platforms.  If most tests succeed and the failures
+  result in byte sizes and error values reasonably close to the expected
+  values, then it is likely that the compressor is working correctly.
+
+  NOTE: zfp requires 64-bit compiler and operating system support.
+
+  zfp has successfully been built and tested using these compilers:
+
+    gcc versions 4.4.7, 4.7.2, 4.8.2, 4.9.2, 5.1.0
+    icc versions 12.0.5, 12.1.5, 15.0.4, 16.0.1
+    clang versions 3.4.2, 3.6.0
+    xlc version 12.1
+    mingw32-gcc version 4.8.1
+
+
+ALGORITHM OVERVIEW
+
+  The zfp lossy compression scheme is based on the idea of breaking a
+  d-dimensional array into independent blocks of 4^d values, e.g. 4x4x4
+  values in three dimensions.  Each block is compressed/decompressed
+  entirely independently from all other blocks.  In this sense, zfp is
+  similar to current hardware texture compression schemes for image
+  coding implemented on graphics cards and mobile devices.
+
+  The compression scheme implemented in this version of zfp has evolved
+  from the method described in the paper cited above, and can conceptually
+  be thought of as consisting of eight sequential steps (in practice some
+  steps are consolidated or exist only for illustrative purposes):
+
+  (1) The d-dimensional array is partitioned into blocks of dimensions 4^d.
+  If the array dimensions are not multiples of four, then blocks near the
+  boundary are padded to the next multiple of four.  This padding is
+  invisible to the application.
+
+  (2) The independent floating-point values in a block are converted to what
+  is known as a block-floating-point representation, which uses a single,
+  common floating-point exponent for all 4^d values.  The effect of this
+  conversion is to turn each floating-point value into a 31- or 63-bit
+  signed integer.  Note that this step is not performed if the input data
+  already consists of integers.
+
+  (3) The integers are decorrelated using a custom, high-speed, near
+  orthogonal transform similar to the discrete cosine transform used in
+  JPEG image coding.  The transform exploits separability and is implemented
+  efficiently in-place using the lifting scheme, requiring only 2.5*d
+  integer additions and 1.5*d bit shifts by one per integer in d dimensions.
+  If the data is "smooth," then this transform will turn most integers into
+  small signed values clustered around zero.
+
+  (4) The two's complement signed integers are converted to their negabinary
+  (base negative two) representation using one addition and one bit-wise
+  exclusive or per integer.  Because negabinary has no dedicated single sign
+  bit, these integers are subsequently treated as unsigned.
+
+  (5) The unsigned integer coefficients are reordered in a manner similar to
+  JPEG zig-zag ordering so that statistically they appear in a roughly
+  monotonically decreasing order.  Coefficients corresponding to low
+  frequencies tend to have larger magnitude, and are listed first.  In 3D,
+  coefficients corresponding to frequencies i, j, k in the three dimensions
+  are ordered by i + j + k first, and then by i^2 + j^2 + k^2.
+
+  (6) The bits that represent the list of 4^d integers are now ordered by
+  coefficient.  These bits are transposed so that they are instead ordered
+  by bit plane, from most to least significant bit.  Viewing each bit plane
+  as an integer, with the lowest bit corresponding to the lowest frequency
+  coefficient, the anticipation is that the first several of these transposed
+  integers are small, because the coefficients are assumed to be ordered by
+  magnitude.
+
+  (7) The transform coefficients are compressed losslessly using embedded
+  coding by exploiting the property that the coefficients tend to have many
+  leading zeros that need not be encoded explicitly.  Each bit plane is
+  encoded in two parts, from lowest to highest bit.  First the n lowest bits
+  are emitted verbatim, where n depends on previous bit planes and is
+  initially zero.  Then a variable-length representation, x, of the
+  remaining 4^d - n bits is encoded.  For such an integer x, a single bit is
+  emitted to indicate if x = 0, in which case we are done with the current
+  bit plane.  If not, then bits of x are emitted, starting from the lowest
+  bit, until a one bit is emitted.  This triggers another test whether this
+  is the highest set bit of x, and the result of this test is output as a
+  single bit.  If not, then the procedure repeats until all n of x's value
+  bits have been output, where 2^(n-1) <= x < 2^n.  This can be thought of
+  as a run-length encoding of the zeros of x, where the run lengths are
+  expressed in unary.  The current value of n is then passed on to the next
+  bit plane, which is encoded by first emitting its n lowest bits.  The
+  assumption is that these bits correspond to n coefficients whose most
+  significant bits have already been output, i.e. these n bits are
+  essentially random and not compressible.  Following this, the remaining
+  4^d - n bits of the bit plane are run-length encoded as described above,
+  which potentially results in n being increased.
+
+  (8) The embedded coder emits one bit at a time, with each successive bit
+  potentially improving the quality of the reconstructed signal.  The early
+  bits are most important and have the greatest impact on signal quality,
+  with the last few bits providing very small changes.  The resulting
+  compressed bit stream can be truncated at any point and still allow for a
+  valid approximate reconstruction of the original signal.  The final step
+  truncates the bit stream in one of three ways: to a fixed number of bits
+  (the fixed-rate mode); after some fixed number of bit planes have been
+  encoded (the fixed-precision mode); or until a lowest bit plane number has
+  been encoded, as expressed in relation to the common floating-point
+  exponent within the block (the fixed-accuracy mode).
+
+  Various parameters are exposed for controlling the quality and compressed
+  size of a block, and can be specified by the user at a very fine
+  granularity.  These parameters are discussed below.
+
+
+CODE EXAMPLES
+
+  The 'examples' directory includes six programs that make use of the
+  compressor.
+
+  The 'simple' program is a minimal example that shows how to call the
+  compressor and decompressor on a double-precision 3D array.  Without
+  the '-d' option, it will compress the array and write the compressed
+  stream to standard output.  With the '-d' option, it will instead
+  read the compressed stream from standard input and decompress the
+  array:
+
+    simple > compressed.zfp
+    simple -d < compressed.zfp
+
+  For a more elaborate use of the compressor, see the 'zfp' example.
+
+  The 'diffusion' example is a simple forward Euler solver for the heat
+  equation on a 2D regular grid, and is intended to show how to declare
+  and work with zfp's compressed arrays, as well as give an idea of how
+  changing the compression rate affects the error in the solution.  The
+  usage is:
+
+    diffusion-zfp [rate] [nx] [ny] [nt]
+
+  where 'rate' specifies the exact number of compressed bits to store per
+  double-precision floating-point value (default = 64); 'nx' and 'ny'
+  specify the grid size (default = 100x100); and 'nt' specifies the number
+  of time steps to run (the default is to run until time t = 1).
+
+  Running diffusion with the following arguments
+
+    diffusion-zfp 8
+    diffusion-zfp 12
+    diffusion-zfp 20
+    diffusion-zfp 64
+
+  should result in this output
+
+    rate=8 sum=0.996442 error=4.813938e-07
+    rate=12 sum=0.998338 error=1.967777e-07
+    rate=20 sum=0.998326 error=1.967952e-07
+    rate=64 sum=0.998326 error=1.967957e-07
+
+  For speed and quality comparison, diffusion-raw solves the same problem
+  using uncompressed double-precision arrays.
+
+  The 'zfp' program is primarily intended for evaluating the rate-distortion
+  (compression ratio and quality) provided by the compressor, but since
+  version 0.5.0 also allows reading and writing compressed data sets.  zfp
+  takes as input a raw, binary array of floats or doubles, and optionally
+  outputs a compressed or reconstructed array obtained after lossy
+  compression followed by decompression.  Various statistics on compression
+  rate and error are also displayed.
+
+  zfp requires a set of command-line options, the most important being the
+  -i option that specifies that the input is uncompressed.  When present,
+  "-i <file>" tells zfp to read the uncompressed input file and compress it
+  to memory.  If desired, the compressed stream can be written to an ouptut
+  file using "-z <file>".  When -i is absent, on the other hand, -z names
+  the compressed input (not output) file, which is then decompressed.  In
+  either case, "-o <file>" can be used to output the reconstructed array
+  resulting from lossy compression and decompression.
+
+  So, to compress a file, use "-i file.in -z file.zfp".  To later decompress
+  the file, use "-z file.zfp -o file.out".  A single dash "-" can be used in
+  place of a file name to denote standard input or output.
+
+  When reading uncompressed input, the floating-point precision (single or
+  double) must be specified using either -f (float) or -d (double).  In
+  addition, the array dimensions must be specified using "-1 nx" (for 1D
+  arrays), "-2 nx ny" (for 2D arrays), or "-3 nx ny nz" (for 3D arrays).
+  For multidimensional arrays, x varies faster than y, which in turn varies
+  faster than z.  That is, a 3D input file should correspond to a flattened
+  C array declared as a[nz][ny][nx].
+
+  Note that "-2 nx ny" is not equivalent to "-3 nx ny 1", even though the
+  same number of values are compressed.  One invokes the 2D codec, while the
+  other uses the 3D codec, which in this example has to pad the input to an
+  nx * ny * 4 array since arrays are partitioned into blocks of dimensions
+  4^d.  Such padding usually negatively impacts compression.
+
+  Using -h, the array dimensions and type are stored in a header of the
+  compressed stream so that they do not have to be specified on the command
+  line during decompression.  The header also stores compression parameters,
+  which are described below.
+
+  zfp accepts several options for specifying how the data is to be compressed.
+  The most general of these, the -c option, takes four constraint parameters
+  that together can be used to achieve various effects.  These constraints
+  are:
+
+    minbits: the minimum number of bits used to represent a block
+    maxbits: the maximum number of bits used to represent a block
+    maxprec: the maximum number of bit planes encoded
+    minexp:  the smallest bit plane number encoded
+
+  Options -r, -p, and -a provide a simpler interface to setting all of
+  the above parameters (see below).  Bit plane e refers to those bits whose
+  place value is 2^e.  For instance, in single precision, bit planes -149
+  through 127 are supported (when also counting denormalized numbers); for
+  double precision, bit planes -1074 through 1023 are supported.
+
+  Care must be taken to allow all constraints to be met, as encoding
+  terminates as soon as a single constraint is violated (except minbits,
+  which is satisfied at the end of encoding by padding zeros).  The effects
+  of the above four parameters are best explained in terms of the three main
+  compression modes supported by zfp (see Algorithm Overview above for
+  additional details):
+
+  Fixed rate (option -r):
+    In fixed-rate mode, each compressed block of 4^d values in d dimensions
+    is stored using a fixed number of bits specified by the user.  This can
+    be achieved using option -c by setting minbits = maxbits, maxprec = 64,
+    and minexp = -1074.  The fixed-rate mode is needed to support random
+    access to blocks, where the amortized number of bits used per value is
+    given by rate = maxbits / 4^d.  Note that each block stores a leading
+    all-zeros bit and common exponent, and maxbits must be at least 9 for
+    single precision and 12 for double precision.
+
+  Fixed precision (option -p): 
+    In fixed-precision mode, the number of bits used to encode a block may
+    vary, but the number of bit planes (i.e. the precision) encoded for the
+    transform coefficients is fixed.  This mode is achieved by specifying
+    the precision in maxprec and fully relaxing the size constraints, i.e.
+    minbits = 0, maxbits = 4171, and minexp = -1074.  Fixed-precision
+    mode is preferable when relative rather than absolute errors matter.
+
+  Fixed accuracy (option -a):
+    In fixed-accuracy mode, all transform coefficient bit planes up to a
+    minimum bit plane number are encoded.  (The actual minimum bit plane
+    is not necessarily minexp, but depends on the dimensionality of the
+    data.  The reason for this is that the inverse transform incurs range
+    expansion, and the amount of expansion depends on the number of
+    dimensions.)  Thus, minexp should be interpreted as the base-2 logarithm
+    of an absolute error tolerance.  In other words, given an uncompressed
+    value f and a reconstructed value g, the absolute difference |f - g|
+    is guaranteed to be at most 2^minexp.  (Note that it is not possible to
+    guarantee error tolerances smaller than machine epsilon relative to the
+    largest value within a block.)  This error tolerance is not always tight
+    (especially for 3D arrays), but can conservatively be set so that even
+    for worst-case inputs the error tolerance is respected.  To achieve
+    fixed accuracy to within 'tolerance', use the -a <tolerance> option,
+    which sets minexp = floor(log2(tolerance)), minbits = 0, maxbits = 4171,
+    and maxprec = 64.  As in fixed-precision mode, the number of bits used
+    per block is not fixed but is dictated by the data.  Use -a 0 to achieve
+    near-lossless compression.  Fixed-accuracy mode gives the highest quality
+    (in terms of absolute error) for a given compression rate, and is
+    preferable when random access is not needed.
+
+  As mentioned above, other combinations of constraints can be used.
+  For example, to ensure that the compressed stream is not larger than
+  the uncompressed one, or that it fits within the amount of memory
+  allocated, one may in conjunction with other constraints set
+  maxbits = 4^d * CHAR_BIT * sizeof(Type), where Type is either float or
+  double.  The minbits parameter is useful only in fixed-rate mode--when
+  minbits = maxbits, zero-bits are padded to blocks that compress to fewer
+  than maxbits bits.
+
+  The 'speed' program takes two optional parameters:
+
+    speed [rate] [blocks]
+
+  It measures the throughput of compression and decompression of 3D
+  double-precision data (in megabytes of uncompressed data per second).
+  By default, a rate of 1 bit/value and two million blocks are
+  processed.
+
+  The 'pgm' program illustrates how zfp can be used to compress grayscale
+  images in the pgm format.  The usage is:
+
+    pgm <param> <input.pgm >output.pgm
+
+  If param is positive, it is interpreted as the rate in bits per pixel,
+  which ensures that each block of 4x4 pixels is compressed to a fixed
+  number of bits, as in texture compression codecs.  If param is negative,
+  then fixed-precision mode is used with precision -param, which tends to
+  give higher quality for the same rate.  This use of zfp is not intended
+  to compete with existing texture and image compression formats, but
+  exists merely to demonstrate how to compress 8-bit integer data with zfp.
+
+  Finally, the 'testzfp' program performs regression testing that exercises
+  most of the functionality of libzfp and the array classes.  The tests
+  assume the default compiler settings, i.e. with none of the macros in
+  Config defined.  By default, small, pregenerated floating-point arrays are
+  used in the test, since they tend to have the same binary representation
+  across platforms, whereas it can be difficult to computationally generate
+  bit-for-bit identical arrays.  To test larger arrays, modify the TESTZFP_*
+  macros in Config.  When large arrays are used, the (de)compression
+  throughput is also measured and reported in number of uncompressed bytes
+  per second.
+
+
+LIMITATIONS AND MISSING FEATURES
+
+  zfp is released as a beta version with the intent of giving people access
+  to the code and soliciting feedback on how to improve zfp for the first
+  full release.  As such, the zfp API is experimental and has not been
+  fixed, and it is entirely possible that future versions will employ a
+  different API or even a different codec.
+
+  Below is a list of known limitations and desirable features that may make
+  it into future versions of zfp.
+
+  - The current version of zfp allows for near lossless compression through
+    suitable parameter choices, but no guarantees are made that bit-for-bit
+    lossless compression is achieved.  We envision supporting lossless
+    compression in a future version by compressing the difference between
+    the original data and nearly losslessly compressed data.
+
+  - Special values like infinity and NaN are not supported.  Denormalized
+    floating-point numbers are, however, correctly handled.  There is an
+    implicit assumption that floating point conforms to IEEE, though
+    extensions to other floating-point formats should be possible with
+    minor effort.
+
+  - No iterators are provided for traversing an array, and currently one
+    has to use integer indexing.  Performance could in cases be improved
+    by limiting the traversal to sequential access.
+
+  - It is not possible to access subarrays via pointers, e.g. via
+    double* p = &a[offset]; p[i] = ...  A pointer proxy class similar to
+    the reference class would be useful.
+
+  - There currently is no way to make a complete copy of a compressed
+    array, i.e. a = b; does not work for arrays a and b.
+
+  - zfp can potentially provide higher precision than conventional float
+    and double arrays, but the interface currently does not expose this.
+    For example, such added precision could be useful in finite difference
+    computations, where catastrophic cancellation can be an issue when
+    insufficient precision is available.
+
+  - Only single and double precision types are supported.  Generalizations
+    to IEEE half and quad precision would be useful.  For instance,
+    compressed 64-bit-per-value storage of 128-bit quad-precision numbers
+    could greatly improve the accuracy of double-precision floating-point
+    computations using the same amount of storage.
+
+  - zfp arrays are not thread-safe.  We are considering options for
+    supporting multi-threaded access, e.g. for OpenMP parallelization.
+
+  - This version of zfp does not run on the GPU.  Some work has been done to
+    port zfp to CUDA, and we expect to release such a version in the future.
+
+
+QUESTIONS, COMMENTS, AND BUG REPORTS
+
+  For bug reports, questions, and suggestions for improvements, please
+  contact Peter Lindstrom at pl at llnl.gov.  If you end up using zfp in an
+  application, please consider sharing with the author your success story
+  and/or any issues encountered.
diff --git a/src/zfp/zfp-0.5.0/VERSIONS b/src/zfp/zfp-0.5.0/VERSIONS
new file mode 100644
index 0000000..96d4712
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/VERSIONS
@@ -0,0 +1,161 @@
+zfp 0.5.0, February 29, 2016
+
+  - Modified CODEC to more efficiently encode blocks whose values are all
+    zero or are smaller in magnitude than the absolute error tolerance.
+    This allows representing "empty" blocks using only one bit each.  This
+    version is not backwards compatible with prior zfp versions.
+
+  - Changed behavior of zfp_compress and zfp_decompress to not automatically
+    rewind the bit stream.  This makes it easier to concatenate multiple
+    compressed bit streams, e.g. when compressing vector fields or multiple
+    scalars together.
+
+  - Added functions for compactly encoding the compression parameters
+    and field meta data, e.g. for producing self-contained compressed
+    streams.  Also added functions for reading and writing a header
+    containing these parameters.
+
+  - Changed the zfp example program interface to allow reading and writing
+    compressed streams, optionally with a header.  The zfp tool can now be
+    used to compress and decompress files as a stand alone utility.
+
+
+zfp 0.4.1, December 28, 2015
+
+  - Fixed bug that caused segmentation fault when compressing 3D arrays
+    whose dimensions are not multiples of four.  Specifically, arrays of
+    dimensions nx * ny * nz, with ny not a multiple of four, were not
+    handled correctly.
+
+  - Modified examples/fields.h to ensure standard compliance.  Previously,
+    C99 support was needed to handle the hex float constants, which are
+    not supported in C++98.
+
+  - Added simple.c as a minimal example of how to call the compressor.
+
+  - Changed compilation of diffusion example to output two executables:
+    one with and one without compression.
+
+
+zfp 0.4.0, December 5, 2015
+
+  - Substantial changes to the compression algorithm that improve PSNR
+    by about 6 dB and speed by a factor of 2-3.  These changes are not
+    backward compatible with previous versions of zfp.
+
+  - Added support for 31-bit and 63-bit integer data, as well as shorter
+    integer types.
+
+  - Rewrote compression codec entirely in C to make linking and calling
+    easier from other programming languages, and to expose the low-level
+    interface through C instead of C++.  This necessitated significant
+    changes to the API as well.
+
+  - Minor changes to the C++ compressed array API, as well as major
+    implementation changes to support the C library.  The namespace and
+    public types are now all in lower case.
+
+  - Deprecated support for general fixed-point decorrelating transforms
+    and slimmed down implementation.
+
+  - Added new examples for evaluating the throughput of the (de)compressor
+    and for compressing grayscale images in the pgm format.
+
+  - Added FAQ.
+
+
+zfp 0.3.2, December 3, 2015
+
+  - Fixed bug in Array::get() that caused the wrong cached block to be
+    looked up, thus occasionally copying incorrect values back to parts
+    of the array.
+
+
+zfp 0.3.1, May 6, 2015
+
+  - Fixed rare bug caused by exponent underflow in blocks with no normal
+    and some denormal numbers.
+
+
+zfp 0.3.0, March 3, 2015
+
+  - Modified the default decorrelating transform to one that uses only
+    additions and bit shifts.  This new transform, in addition to being
+    faster, also has some theoretical optimality properties and tends to
+    improve rate distortion.
+
+  - Added compile-time support for parameterized transforms, e.g. to
+    support other popular transforms like DCT, HCT, and Walsh-Hadamard.
+
+  - Made forward transform range preserving: (-1, 1) is mapped to (-1, 1).
+    Consequently Q1.62 fixed point can be used throughout.
+
+  - Changed the order in which bits are emitted within each bit plane
+    to be more intelligent.  Group tests are now deferred until they
+    are needed, i.e. just before the value bits for the group being
+    tested.  This improves the quality of fixed-rate encodings, but
+    has no impact on compressed size.
+
+  - Made several optimizations to improve performance.
+
+  - Added floating-point traits to reduce the number of template
+    parameters.  It is now possible to declare a 3D array as
+    Array3<float>, for example.
+
+  - Added functions for setting the array scalar type and dimensions.
+
+  - Consolidated several header files.
+
+  - Added testzfp for regression testing.
+
+
+zfp 0.2.1, December 12, 2014
+
+  - Added Win64 support via Microsoft Visual Studio compiler.
+
+  - Fixed broken support for IBM's xlc compiler.
+
+  - Made several minor changes to suppress compiler warnings.
+
+  - Documented expected output for the diffusion example.
+
+
+zfp 0.2.0, December 2, 2014
+
+  - The compression interface from zfpcompress was relocated to a
+    separate library, called libzfp, and modified to be callable from C.
+    This API now uses a parameter object (zfp_params) to specify array
+    type and dimensions as well as compression parameters.
+
+  - Several utility functions were added to simplify libzfp usage:
+
+    o Functions for setting the rate, precision, and accuracy.
+      Corresponding functions were also added to the Codec class.
+
+    o A function for estimating the buffer size needed for compression.
+
+  - The Array class functionality was expanded:
+
+    o Support for accessing the compressed bit stream stored with an
+      array, e.g. for offline compressed storage and for initializing
+      an already compressed array.
+
+    o Functions for dynamically specifying the cache size.
+
+    o The default cache is now direct-mapped instead of two-way
+      associative.
+
+  - Minor bug fixes:
+
+    o Corrected the value of the lowest possible bit plane to account for
+      both the smallest exponent and the number of bits in the significand.
+
+    o Corrected inconsistent use of rate and precision.  The rate refers
+      to the number of compressed bits per floating-point value, while
+      the precision refers to the number of uncompressed bits.  The Array
+      API was changed accordingly.
+
+
+zfp 0.1.0, November 12, 2014
+
+  - Initial beta release.
diff --git a/src/zfp/zfp-0.5.0/array/cache.h b/src/zfp/zfp-0.5.0/array/cache.h
new file mode 100644
index 0000000..3359b7d
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/cache.h
@@ -0,0 +1,224 @@
+#ifndef CACHE_H
+#define CACHE_H
+
+#include "memory.h"
+
+#ifdef CACHE_PROFILE
+  // maintain stats on hit and miss rates
+  #include <iostream>
+#endif
+
+// direct-mapped or two-way skew-associative write-back cache
+template <class Line>
+class Cache {
+public:
+  // cache line index (zero is reserved for unused lines)
+  typedef uint Index;
+
+  // cache tag containing line meta data
+  class Tag {
+  public:
+    Tag() : x(0) {}
+
+    Tag(Index x, bool d) : x(2 * x + d) {}
+
+    // cache line index
+    Index index() const { return x >> 1; }
+
+    // is line dirty?
+    bool dirty() const { return x & 1; }
+
+    // is line used?
+    bool used() const { return x != 0; }
+
+    // mark line as dirty
+    void mark() { x |= 1u; }
+
+    // mark line as unused
+    void clear() { x = 0; }
+
+  protected:
+    Index x;
+  };
+
+  // sequential iterator for looping over cache lines
+  class const_iterator {
+  public:
+    friend class Cache;
+    class Pair {
+    public:
+      Pair(Line* l, Tag t) : line(l), tag(t) {}
+      Line* line;
+      Tag tag;
+    };
+    const_iterator& operator++()
+    {
+      advance();
+      return *this;
+    }
+    const_iterator operator++(int)
+    {
+      const_iterator iter = *this;
+      advance();
+      return iter;
+    }
+    const Pair& operator*() const { return pair; }
+    const Pair* operator->() const { return &pair; }
+    operator const void*() const { return pair.line ? this : 0; }
+
+  protected:
+    const_iterator(Cache* cache) : c(cache), pair(cache->line, cache->tag[0])
+    {
+      if (!pair.tag.used())
+        advance();
+    }
+    void advance()
+    {
+      if (pair.line) {
+        uint i;
+        for (i = pair.line - c->line + 1; i <= c->mask && !c->tag[i].used(); i++);
+        pair = (i <= c->mask ? Pair(c->line + i, c->tag[i]) : Pair(0, Tag()));
+      }
+    }
+    Cache* c;
+    Pair pair;
+  };
+
+  // allocate cache with at least minsize lines
+  Cache(uint minsize) : tag(0), line(0)
+  {
+    resize(minsize);
+#ifdef CACHE_PROFILE
+    std::cerr << "cache lines=" << mask + 1 << std::endl;
+    hit[0][0] = hit[1][0] = miss[0] = back[0] = 0;
+    hit[0][1] = hit[1][1] = miss[1] = back[1] = 0;
+#endif
+  }
+
+  ~Cache()
+  {
+    deallocate(tag);
+    deallocate(line);
+#ifdef CACHE_PROFILE
+    std::cerr << "cache R1=" << hit[0][0] << " R2=" << hit[1][0] << " RM=" << miss[0] << " RB=" << back[0]
+              <<      " W1=" << hit[0][1] << " W2=" << hit[1][1] << " WM=" << miss[1] << " WB=" << back[1] << std::endl;
+#endif
+  }
+
+  // cache size in number of lines
+  uint size() const { return mask + 1; }
+
+  // change cache size to at least minsize lines (all contents will be lost)
+  void resize(uint minsize)
+  {
+    for (mask = minsize ? minsize - 1 : 1; mask & (mask + 1); mask |= mask + 1);
+    reallocate(tag, ((size_t)mask + 1) * sizeof(Tag), 0x100);
+    reallocate(line, ((size_t)mask + 1) * sizeof(Line), 0x100);
+    clear();
+  }
+
+  // look up cache line #x and return pointer to it if in the cache;
+  // otherwise return null
+  const Line* lookup(Index x) const
+  {
+    uint i = primary(x);
+    if (tag[i].index() == x)
+      return line + i;
+#ifdef CACHE_TWOWAY
+    uint j = secondary(x);
+    if (tag[j].index() == x)
+      return line + j;
+#endif
+    return 0;
+  }
+
+  // look up cache line #x and set ptr to where x is or should be stored;
+  // if the returned tag does not match x, then the caller must implement
+  // write-back (if the line is in use) and then fetch the requested line
+  Tag access(Line*& ptr, Index x, bool write)
+  {
+    uint i = primary(x);
+    if (tag[i].index() == x) {
+      ptr = line + i;
+      if (write)
+        tag[i].mark();
+#ifdef CACHE_PROFILE
+      hit[0][write]++;
+#endif
+      return tag[i];
+    }
+#ifdef CACHE_TWOWAY
+    uint j = secondary(x);
+    if (tag[j].index() == x) {
+      ptr = line + j;
+      if (write)
+        tag[j].mark();
+#ifdef CACHE_PROFILE
+      shit[write]++;
+#endif
+      return tag[j];
+    }
+    // cache line not found; prefer primary and not dirty slots
+    i = tag[j].used() && (!tag[i].dirty() || tag[j].dirty()) ? i : j;
+#endif
+    ptr = line + i;
+    Tag t = tag[i];
+    tag[i] = Tag(x, write);
+#ifdef CACHE_PROFILE
+    miss[write]++;
+    if (tag[i].dirty())
+      back[write]++;
+#endif
+    return t;
+  }
+
+  // clear cache without writing back
+  void clear()
+  {
+    for (uint i = 0; i <= mask; i++)
+      tag[i].clear();
+  }
+
+  // flush cache line
+  void flush(const Line* l)
+  {
+    uint i = l - line;
+    tag[i].clear();
+  }
+
+  // return iterator to first cache line
+  const_iterator first() { return const_iterator(this); }
+
+protected:
+  uint primary(Index x) const { return x & mask; }
+  uint secondary(Index x) const
+  {
+#ifdef CACHE_FAST_HASH
+    // max entropy hash for 26- to 16-bit mapping (not full avalanche)
+    x -= x <<  7;
+    x ^= x >> 16;
+    x -= x <<  3;
+#else
+    // Jenkins hash; see http://burtleburtle.net/bob/hash/integer.html
+    x -= x <<  6;
+    x ^= x >> 17;
+    x -= x <<  9;
+    x ^= x <<  4;
+    x -= x <<  3;
+    x ^= x << 10;
+    x ^= x >> 15;
+#endif
+    return x & mask;
+  }
+
+  Index mask; // cache line mask
+  Tag* tag;   // cache line tags
+  Line* line; // actual decompressed cache lines
+#ifdef CACHE_PROFILE
+  uint64 hit[2][2]; // number of primary/secondary read/write hits
+  uint64 miss[2];   // number of read/write misses
+  uint64 back[2];   // number of write-backs due to read/writes
+#endif
+};
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/memory.h b/src/zfp/zfp-0.5.0/array/memory.h
new file mode 100644
index 0000000..551ea90
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/memory.h
@@ -0,0 +1,42 @@
+#ifndef MEMORY_H
+#define MEMORY_H
+
+#include <cstdlib>
+#include "types.h"
+
+inline void*
+allocate(size_t size, size_t alignment = 0)
+{
+#if defined(__USE_XOPEN2K) && defined(ALIGNED_ALLOC)
+  void* ptr;
+  if (alignment > 1)
+    posix_memalign(&ptr, alignment, size);
+  else
+    ptr = malloc(size);
+  return ptr;
+#else
+  return new uchar[size];
+#endif
+}
+
+template <typename T>
+inline void
+deallocate(T* ptr)
+{
+#if defined(__USE_XOPEN2K) && defined(ALIGNED_ALLOC)
+  if (ptr)
+    free(ptr);
+#else
+  delete[] ptr;
+#endif
+}
+
+template <typename T>
+inline void
+reallocate(T*& ptr, size_t size, size_t alignment = 0)
+{
+  deallocate(ptr);
+  ptr = static_cast<T*>(allocate(size, alignment));
+}
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/zfparray.h b/src/zfp/zfp-0.5.0/array/zfparray.h
new file mode 100644
index 0000000..b27add7
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfparray.h
@@ -0,0 +1,105 @@
+#ifndef ZFP_ARRAY_H
+#define ZFP_ARRAY_H
+
+#include <algorithm>
+#include <climits>
+#include "zfp.h"
+#include "memory.h"
+
+namespace zfp {
+
+// base class for compressed array of scalars
+class array {
+protected:
+  array(uint dims, zfp_type type) :
+    dims(dims), type(type),
+    nx(0), ny(0), nz(0),
+    bx(0), by(0), bz(0),
+    blocks(0), blkvals(1u << (2 * dims)), blkbits(0), blksize(0),
+    bytes(0), data(0),
+    stream(zfp_stream_open(0)),
+    shape(0)
+  {}
+
+  ~array()
+  {
+    free();
+    zfp_stream_close(stream);
+  }
+ 
+public:
+  // rate in bits per value
+  double rate() const { return double(blkbits) / blkvals; }
+
+  // set compression rate in bits per value
+  double set_rate(double rate)
+  {
+    rate = zfp_stream_set_rate(stream, rate, type, dims, 1);
+    blkbits = stream->maxbits;
+    blksize = blkbits / CHAR_BIT;
+    alloc();
+    return rate;
+  }
+
+  // empty cache without compressing modified cached blocks
+  virtual void clear_cache() const = 0;
+
+  // flush cache by compressing all modified cached blocks
+  virtual void flush_cache() const = 0;
+
+  // number of bytes of compressed data
+  size_t compressed_size() const { return bytes; }
+
+  // pointer to compressed data for read or write access
+  uchar* compressed_data() const
+  {
+    // first write back any modified cached data
+    flush_cache();
+    return data;
+  }
+
+protected:
+  // allocate memory for compressed data
+  void alloc(bool clear = true)
+  {
+    bytes = blocks * blksize;
+    reallocate(data, bytes, 0x100u);
+    if (clear)
+      std::fill(data, data + bytes, 0);
+    stream_close(stream->stream);
+    zfp_stream_set_bit_stream(stream, stream_open(data, bytes));
+    clear_cache();
+  }
+
+  // free memory associated with compressed data
+  void free()
+  {
+    nx = ny = nz = 0;
+    bx = by = bz = 0;
+    blocks = 0;
+    stream_close(stream->stream);
+    zfp_stream_set_bit_stream(stream, 0);
+    bytes = 0;
+    deallocate(data);
+    data = 0;
+    deallocate(shape);
+    shape = 0;
+  }
+
+  uint dims;           // array dimensionality (1, 2, or 3)
+  zfp_type type;       // scalar type
+  uint nx, ny, nz;     // array dimensions
+  uint bx, by, bz;     // array dimensions in number of blocks
+  uint blocks;         // number of blocks
+  uint blkvals;        // number of values per block
+  size_t blkbits;      // number of bits per compressed block
+  size_t blksize;      // byte size of single compressed block
+  size_t bytes;        // total bytes of compressed data
+  mutable uchar* data; // pointer to compressed data
+  zfp_stream* stream;  // compressed stream
+  uchar* shape;        // precomputed block dimensions (or null if uniform)
+};
+
+}
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/zfparray1.h b/src/zfp/zfp-0.5.0/array/zfparray1.h
new file mode 100644
index 0000000..dffc934
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfparray1.h
@@ -0,0 +1,243 @@
+#ifndef ZFP_ARRAY1_H
+#define ZFP_ARRAY1_H
+
+#include "zfparray.h"
+#include "zfpcodec.h"
+#include "cache.h"
+
+namespace zfp {
+
+// compressed 1D array of scalars
+template < typename Scalar, class Codec = zfp::codec<Scalar> >
+class array1 : public array {
+public:
+  array1() : array(1, Codec::type) {}
+
+  // constructor of n-sample array using rate bits per value, at least
+  // csize bytes of cache, and optionally initialized from flat array p
+  array1(uint n, double rate, const Scalar* p = 0, size_t csize = 0) :
+    array(1, Codec::type),
+    cache(lines(csize, n))
+  {
+    set_rate(rate);
+    resize(n, p == 0);
+    if (p)
+      set(p);
+  }
+
+  // total number of elements in array
+  size_t size() const { return size_t(nx); }
+
+  // resize the array (all previously stored data will be lost)
+  void resize(uint n, bool clear = true)
+  {
+    if (n == 0)
+      free();
+    else {
+      nx = n;
+      bx = (nx + 3) / 4;
+      blocks = bx;
+      alloc(clear);
+
+      // precompute block dimensions
+      deallocate(shape);
+      if (nx & 3u) {
+        shape = (uchar*)allocate(blocks);
+        uchar* p = shape;
+        for (uint i = 0; i < bx; i++)
+          *p++ = (i == bx - 1 ? -nx & 3u : 0);
+      }
+      else
+        shape = 0;
+    }
+  }
+
+  // cache size in number of bytes
+  size_t cache_size() const { return cache.size() * sizeof(CacheLine); }
+
+  // set minimum cache size in bytes (array dimensions must be known)
+  void set_cache_size(size_t csize)
+  {
+    flush_cache();
+    cache.resize(lines(csize, nx));
+  }
+
+  // empty cache without compressing modified cached blocks
+  void clear_cache() const { cache.clear(); }
+
+  // flush cache by compressing all modified cached blocks
+  void flush_cache() const
+  {
+    for (typename Cache<CacheLine>::const_iterator p = cache.first(); p; p++) {
+      if (p->tag.dirty()) {
+        uint b = p->tag.index() - 1;
+        encode(b, p->line->a);
+      }
+      cache.flush(p->line);
+    }
+  }
+
+  // decompress array and store at p
+  void get(Scalar* p) const
+  {
+    uint b = 0;
+    for (uint i = 0; i < bx; i++, p += 4, b++) {
+      const CacheLine* line = cache.lookup(b + 1);
+      if (line)
+        line->get(p, 1, shape ? shape[b] : 0);
+      else
+        decode(b, p, 1);
+    }
+  }
+
+  // initialize array by copying and compressing data stored at p
+  void set(const Scalar* p)
+  {
+    uint b = 0;
+    for (uint i = 0; i < bx; i++, b++, p += 4)
+      encode(b, p, 1);
+    cache.clear();
+  }
+
+  // reference to a single array value
+  class reference {
+  public:
+    operator Scalar() const { return array->get(i); }
+    reference operator=(const reference& r) { array->set(i, r.operator Scalar()); return *this; }
+    reference operator=(Scalar val) { array->set(i, val); return *this; }
+    reference operator+=(Scalar val) { array->add(i, val); return *this; }
+    reference operator-=(Scalar val) { array->sub(i, val); return *this; }
+    reference operator*=(Scalar val) { array->mul(i, val); return *this; }
+    reference operator/=(Scalar val) { array->div(i, val); return *this; }
+  protected:
+    friend class array1;
+    reference(array1* array, uint i) : array(array), i(i) {}
+    array1* array;
+    uint i;
+  };
+
+  // (i) accessors
+  const Scalar& operator()(uint i) const { return get(i); }
+  reference operator()(uint i) { return reference(this, i); }
+
+  // flat index accessors
+  const Scalar& operator[](uint index) const { return get(index); }
+  reference operator[](uint index) { return reference(this, index); }
+
+protected:
+  // cache line representing one block of decompressed values
+  class CacheLine {
+  public:
+    friend class array1;
+    const Scalar& operator()(uint i) const { return a[index(i)]; }
+    Scalar& operator()(uint i) { return a[index(i)]; }
+    // copy cache line
+    void get(Scalar* p, int sx) const
+    {
+      const Scalar* q = a;
+      for (uint x = 0; x < 4; x++, p += sx, q++)
+        *p = *q;
+    }
+    void get(Scalar* p, int sx, uint shape) const
+    {
+      if (!shape)
+        get(p, sx);
+      else {
+        // determine block dimensions
+        uint nx = 4 - (shape & 3u); shape >>= 2;
+        const Scalar* q = a;
+        for (uint x = 0; x < nx; x++, p += sx, q++)
+          *p = *q;
+      }
+    }
+  protected:
+    static uint index(uint i) { return i & 3u; }
+    Scalar a[4];
+  };
+
+  // inspector
+  const Scalar& get(uint i) const
+  {
+    CacheLine* p = line(i, false);
+    return (*p)(i);
+  }
+
+  // mutator
+  void set(uint i, Scalar val)
+  {
+    CacheLine* p = line(i, true);
+    (*p)(i) = val;
+  }
+
+  // in-place updates
+  void add(uint i, Scalar val) { (*line(i, true))(i) += val; }
+  void sub(uint i, Scalar val) { (*line(i, true))(i) -= val; }
+  void mul(uint i, Scalar val) { (*line(i, true))(i) *= val; }
+  void div(uint i, Scalar val) { (*line(i, true))(i) /= val; }
+
+  // return cache line for i; may require write-back and fetch
+  CacheLine* line(uint i, bool write) const
+  {
+    CacheLine* p = 0;
+    uint b = block(i);
+    typename Cache<CacheLine>::Tag t = cache.access(p, b + 1, write);
+    uint c = t.index() - 1;
+    if (c != b) {
+      // write back occupied cache line if it is dirty
+      if (t.dirty())
+        encode(c, p->a);
+      // fetch cache line
+      decode(b, p->a);
+    }
+    return p;
+  }
+
+  // encode block with given index
+  void encode(uint index, const Scalar* block) const
+  {
+    stream_wseek(stream->stream, index * blkbits);
+    Codec::encode_block_1(stream, block, shape ? shape[index] : 0);
+    stream_flush(stream->stream);
+  }
+
+  // encode block with given index from strided array
+  void encode(uint index, const Scalar* p, int sx) const
+  {
+    stream_wseek(stream->stream, index * blkbits);
+    Codec::encode_block_strided_1(stream, p, shape ? shape[index] : 0, sx);
+    stream_flush(stream->stream);
+  }
+
+  // decode block with given index
+  void decode(uint index, Scalar* block) const
+  {
+    stream_rseek(stream->stream, index * blkbits);
+    Codec::decode_block_1(stream, block, shape ? shape[index] : 0);
+  }
+
+  // decode block with given index to strided array
+  void decode(uint index, Scalar* p, int sx) const
+  {
+    stream_rseek(stream->stream, index * blkbits);
+    Codec::decode_block_strided_1(stream, p, shape ? shape[index] : 0, sx);
+  }
+
+  // block index for i
+  static uint block(uint i) { return i / 4; }
+
+  // number of cache lines corresponding to size (or suggested size if zero)
+  static uint lines(size_t size, uint n)
+  {
+    n = uint((size ? size : 8 * sizeof(Scalar)) / sizeof(CacheLine));
+    return std::max(n, 1u);
+  }
+
+  mutable Cache<CacheLine> cache; // cache of decompressed blocks
+};
+
+typedef array1<float> array1f;
+typedef array1<double> array1d;
+
+}
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/zfparray2.h b/src/zfp/zfp-0.5.0/array/zfparray2.h
new file mode 100644
index 0000000..f5b32ef
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfparray2.h
@@ -0,0 +1,273 @@
+#ifndef ZFP_ARRAY2_H
+#define ZFP_ARRAY2_H
+
+#include "zfparray.h"
+#include "zfpcodec.h"
+#include "cache.h"
+
+namespace zfp {
+
+// compressed 2D array of scalars
+template < typename Scalar, class Codec = zfp::codec<Scalar> >
+class array2 : public array {
+public:
+  array2() : array(2, Codec::type) {}
+
+  // constructor of nx * ny array using rate bits per value, at least
+  // csize bytes of cache, and optionally initialized from flat array p
+  array2(uint nx, uint ny, double rate, const Scalar* p = 0, size_t csize = 0) :
+    array(2, Codec::type),
+    cache(lines(csize, nx, ny))
+  {
+    set_rate(rate);
+    resize(nx, ny, p == 0);
+    if (p)
+      set(p);
+  }
+
+  // total number of elements in array
+  size_t size() const { return size_t(nx) * size_t(ny); }
+
+  // array dimensions
+  uint size_x() const { return nx; }
+  uint size_y() const { return ny; }
+
+  // resize the array (all previously stored data will be lost)
+  void resize(uint nx, uint ny, bool clear = true)
+  {
+    if (nx == 0 || ny == 0)
+      free();
+    else {
+      this->nx = nx;
+      this->ny = ny;
+      bx = (nx + 3) / 4;
+      by = (ny + 3) / 4;
+      blocks = bx * by;
+      alloc(clear);
+
+      // precompute block dimensions
+      deallocate(shape);
+      if ((nx | ny) & 3u) {
+        shape = (uchar*)allocate(blocks);
+        uchar* p = shape;
+        for (uint j = 0; j < by; j++)
+          for (uint i = 0; i < bx; i++)
+            *p++ = (i == bx - 1 ? -nx & 3u : 0) + 4 * (j == by - 1 ? -ny & 3u : 0);
+      }
+      else
+        shape = 0;
+    }
+  }
+
+  // cache size in number of bytes
+  size_t cache_size() const { return cache.size() * sizeof(CacheLine); }
+
+  // set minimum cache size in bytes (array dimensions must be known)
+  void set_cache_size(size_t csize)
+  {
+    flush_cache();
+    cache.resize(lines(csize, nx, ny));
+  }
+
+  // empty cache without compressing modified cached blocks
+  void clear_cache() const { cache.clear(); }
+
+  // flush cache by compressing all modified cached blocks
+  void flush_cache() const
+  {
+    for (typename Cache<CacheLine>::const_iterator p = cache.first(); p; p++) {
+      if (p->tag.dirty()) {
+        uint b = p->tag.index() - 1;
+        encode(b, p->line->a);
+      }
+      cache.flush(p->line);
+    }
+  }
+
+  // decompress array and store at p
+  void get(Scalar* p) const
+  {
+    uint b = 0;
+    for (uint j = 0; j < by; j++, p += 4 * (nx - bx))
+      for (uint i = 0; i < bx; i++, p += 4, b++) {
+        const CacheLine* line = cache.lookup(b + 1);
+        if (line)
+          line->get(p, 1, nx, shape ? shape[b] : 0);
+        else
+          decode(b, p, 1, nx);
+      }
+  }
+
+  // initialize array by copying and compressing data stored at p
+  void set(const Scalar* p)
+  {
+    uint b = 0;
+    for (uint j = 0; j < by; j++, p += 4 * (nx - bx))
+      for (uint i = 0; i < bx; i++, p += 4, b++)
+        encode(b, p, 1, nx);
+    cache.clear();
+  }
+
+  // reference to a single array value
+  class reference {
+  public:
+    operator Scalar() const { return array->get(i, j); }
+    reference operator=(const reference& r) { array->set(i, j, r.operator Scalar()); return *this; }
+    reference operator=(Scalar val) { array->set(i, j, val); return *this; }
+    reference operator+=(Scalar val) { array->add(i, j, val); return *this; }
+    reference operator-=(Scalar val) { array->sub(i, j, val); return *this; }
+    reference operator*=(Scalar val) { array->mul(i, j, val); return *this; }
+    reference operator/=(Scalar val) { array->div(i, j, val); return *this; }
+  protected:
+    friend class array2;
+    reference(array2* array, uint i, uint j) : array(array), i(i), j(j) {}
+    array2* array;
+    uint i, j;
+  };
+
+  // (i, j) accessors
+  const Scalar& operator()(uint i, uint j) const { return get(i, j); }
+  reference operator()(uint i, uint j) { return reference(this, i, j); }
+
+  // flat index accessors
+  const Scalar& operator[](uint index) const
+  {
+    uint i, j;
+    ij(i, j, index);
+    return get(i, j);
+  }
+  reference operator[](uint index)
+  {
+    uint i, j;
+    ij(i, j, index);
+    return reference(this, i, j);
+  }
+
+protected:
+  // cache line representing one block of decompressed values
+  class CacheLine {
+  public:
+    friend class array2;
+    const Scalar& operator()(uint i, uint j) const { return a[index(i, j)]; }
+    Scalar& operator()(uint i, uint j) { return a[index(i, j)]; }
+    // copy cache line
+    void get(Scalar* p, int sx, int sy) const
+    {
+      const Scalar* q = a;
+      for (uint y = 0; y < 4; y++, p += sy - 4 * sx)
+        for (uint x = 0; x < 4; x++, p += sx, q++)
+          *p = *q;
+    }
+    void get(Scalar* p, int sx, int sy, uint shape) const
+    {
+      if (!shape)
+        get(p, sx, sy);
+      else {
+        // determine block dimensions
+        uint nx = 4 - (shape & 3u); shape >>= 2;
+        uint ny = 4 - (shape & 3u); shape >>= 2;
+        const Scalar* q = a;
+        for (uint y = 0; y < ny; y++, p += sy - nx * sx, q += 4 - nx)
+          for (uint x = 0; x < nx; x++, p += sx, q++)
+            *p = *q;
+      }
+    }
+  protected:
+    static uint index(uint i, uint j) { return (i & 3u) + 4 * (j & 3u); }
+    Scalar a[16];
+  };
+
+  // inspector
+  const Scalar& get(uint i, uint j) const
+  {
+    CacheLine* p = line(i, j, false);
+    return (*p)(i, j);
+  }
+
+  // mutator
+  void set(uint i, uint j, Scalar val)
+  {
+    CacheLine* p = line(i, j, true);
+    (*p)(i, j) = val;
+  }
+
+  // in-place updates
+  void add(uint i, uint j, Scalar val) { (*line(i, j, true))(i, j) += val; }
+  void sub(uint i, uint j, Scalar val) { (*line(i, j, true))(i, j) -= val; }
+  void mul(uint i, uint j, Scalar val) { (*line(i, j, true))(i, j) *= val; }
+  void div(uint i, uint j, Scalar val) { (*line(i, j, true))(i, j) /= val; }
+
+  // return cache line for (i, j); may require write-back and fetch
+  CacheLine* line(uint i, uint j, bool write) const
+  {
+    CacheLine* p = 0;
+    uint b = block(i, j);
+    typename Cache<CacheLine>::Tag t = cache.access(p, b + 1, write);
+    uint c = t.index() - 1;
+    if (c != b) {
+      // write back occupied cache line if it is dirty
+      if (t.dirty())
+        encode(c, p->a);
+      // fetch cache line
+      decode(b, p->a);
+    }
+    return p;
+  }
+
+  // encode block with given index
+  void encode(uint index, const Scalar* block) const
+  {
+    stream_wseek(stream->stream, index * blkbits);
+    Codec::encode_block_2(stream, block, shape ? shape[index] : 0);
+    stream_flush(stream->stream);
+  }
+
+  // encode block with given index from strided array
+  void encode(uint index, const Scalar* p, int sx, int sy) const
+  {
+    stream_wseek(stream->stream, index * blkbits);
+    Codec::encode_block_strided_2(stream, p, shape ? shape[index] : 0, sx, sy);
+    stream_flush(stream->stream);
+  }
+
+  // decode block with given index
+  void decode(uint index, Scalar* block) const
+  {
+    stream_rseek(stream->stream, index * blkbits);
+    Codec::decode_block_2(stream, block, shape ? shape[index] : 0);
+  }
+
+  // decode block with given index to strided array
+  void decode(uint index, Scalar* p, int sx, int sy) const
+  {
+    stream_rseek(stream->stream, index * blkbits);
+    Codec::decode_block_strided_2(stream, p, shape ? shape[index] : 0, sx, sy);
+  }
+
+  // block index for (i, j)
+  uint block(uint i, uint j) const { return (i / 4) + bx * (j / 4); }
+
+  // convert flat index to (i, j)
+  void ij(uint& i, uint& j, uint index) const
+  {
+    i = index % nx;
+    index /= nx;
+    j = index;
+  }
+
+  // number of cache lines corresponding to size (or suggested size if zero)
+  static uint lines(size_t size, uint nx, uint ny)
+  {
+    uint n = uint((size ? size : 8 * nx * sizeof(Scalar)) / sizeof(CacheLine));
+    return std::max(n, 1u);
+  }
+
+  mutable Cache<CacheLine> cache; // cache of decompressed blocks
+};
+
+typedef array2<float> array2f;
+typedef array2<double> array2d;
+
+}
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/zfparray3.h b/src/zfp/zfp-0.5.0/array/zfparray3.h
new file mode 100644
index 0000000..cce37d2
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfparray3.h
@@ -0,0 +1,284 @@
+#ifndef ZFP_ARRAY3_H
+#define ZFP_ARRAY3_H
+
+#include "zfparray.h"
+#include "zfpcodec.h"
+#include "cache.h"
+
+namespace zfp {
+
+// compressed 3D array of scalars
+template < typename Scalar, class Codec = zfp::codec<Scalar> >
+class array3 : public array {
+public:
+  array3() : array(3, Codec::type) {}
+
+  // constructor of nx * ny * nz array using rate bits per value, at least
+  // csize bytes of cache, and optionally initialized from flat array p
+  array3(uint nx, uint ny, uint nz, double rate, const Scalar* p = 0, size_t csize = 0) :
+    array(3, Codec::type),
+    cache(lines(csize, nx, ny, nz))
+  {
+    set_rate(rate);
+    resize(nx, ny, nz, p == 0);
+    if (p)
+      set(p);
+  }
+
+  // total number of elements in array
+  size_t size() const { return size_t(nx) * size_t(ny) * size_t(nz); }
+
+  // array dimensions
+  uint size_x() const { return nx; }
+  uint size_y() const { return ny; }
+  uint size_z() const { return nz; }
+
+  // resize the array (all previously stored data will be lost)
+  void resize(uint nx, uint ny, uint nz, bool clear = true)
+  {
+    if (nx == 0 || ny == 0 || nz == 0)
+      free();
+    else {
+      this->nx = nx;
+      this->ny = ny;
+      this->nz = nz;
+      bx = (nx + 3) / 4;
+      by = (ny + 3) / 4;
+      bz = (nz + 3) / 4;
+      blocks = bx * by * bz;
+      alloc(clear);
+
+      // precompute block dimensions
+      deallocate(shape);
+      if ((nx | ny | nz) & 3u) {
+        shape = (uchar*)allocate(blocks);
+        uchar* p = shape;
+        for (uint k = 0; k < bz; k++)
+          for (uint j = 0; j < by; j++)
+            for (uint i = 0; i < bx; i++)
+              *p++ = (i == bx - 1 ? -nx & 3u : 0) + 4 * ((j == by - 1 ? -ny & 3u : 0) + 4 * (k == bz - 1 ? -nz & 3u : 0));
+      }
+      else
+        shape = 0;
+    }
+  }
+
+  // cache size in number of bytes
+  size_t cache_size() const { return cache.size() * sizeof(CacheLine); }
+
+  // set minimum cache size in bytes (array dimensions must be known)
+  void set_cache_size(size_t csize)
+  {
+    flush_cache();
+    cache.resize(lines(csize, nx, ny, nz));
+  }
+
+  // empty cache without compressing modified cached blocks
+  void clear_cache() const { cache.clear(); }
+
+  // flush cache by compressing all modified cached blocks
+  void flush_cache() const
+  {
+    for (typename Cache<CacheLine>::const_iterator p = cache.first(); p; p++) {
+      if (p->tag.dirty()) {
+        uint b = p->tag.index() - 1;
+        encode(b, p->line->a);
+      }
+      cache.flush(p->line);
+    }
+  }
+
+  // decompress array and store at p
+  void get(Scalar* p) const
+  {
+    uint b = 0;
+    for (uint k = 0; k < bz; k++, p += 4 * nx * (ny - by))
+      for (uint j = 0; j < by; j++, p += 4 * (nx - bx))
+        for (uint i = 0; i < bx; i++, p += 4, b++) {
+          const CacheLine* line = cache.lookup(b + 1);
+          if (line)
+            line->get(p, 1, nx, nx * ny, shape ? shape[b] : 0);
+          else
+            decode(b, p, 1, nx, nx * ny);
+        }
+  }
+
+  // initialize array by copying and compressing data stored at p
+  void set(const Scalar* p)
+  {
+    uint b = 0;
+    for (uint k = 0; k < bz; k++, p += 4 * nx * (ny - by))
+      for (uint j = 0; j < by; j++, p += 4 * (nx - bx))
+        for (uint i = 0; i < bx; i++, p += 4, b++)
+          encode(b, p, 1, nx, nx * ny);
+    cache.clear();
+  }
+
+  // reference to a single array value
+  class reference {
+  public:
+    operator Scalar() const { return array->get(i, j, k); }
+    reference operator=(const reference& r) { array->set(i, j, k, r.operator Scalar()); return *this; }
+    reference operator=(Scalar val) { array->set(i, j, k, val); return *this; }
+    reference operator+=(Scalar val) { array->add(i, j, k, val); return *this; }
+    reference operator-=(Scalar val) { array->sub(i, j, k, val); return *this; }
+    reference operator*=(Scalar val) { array->mul(i, j, k, val); return *this; }
+    reference operator/=(Scalar val) { array->div(i, j, k, val); return *this; }
+  protected:
+    friend class array3;
+    reference(array3* array, uint i, uint j, uint k) : array(array), i(i), j(j), k(k) {}
+    array3* array;
+    uint i, j, k;
+  };
+
+  // (i, j, k) accessors
+  const Scalar& operator()(uint i, uint j, uint k) const { return get(i, j, k); }
+  reference operator()(uint i, uint j, uint k) { return reference(this, i, j, k); }
+
+  // flat index accessors
+  const Scalar& operator[](uint index) const
+  {
+    uint i, j, k;
+    ijk(i, j, k, index);
+    return get(i, j, k);
+  }
+  reference operator[](uint index)
+  {
+    uint i, j, k;
+    ijk(i, j, k, index);
+    return reference(this, i, j, k);
+  }
+
+protected:
+  // cache line representing one block of decompressed values
+  class CacheLine {
+  public:
+    friend class array3;
+    const Scalar& operator()(uint i, uint j, uint k) const { return a[index(i, j, k)]; }
+    Scalar& operator()(uint i, uint j, uint k) { return a[index(i, j, k)]; }
+    // copy cache line
+    void get(Scalar* p, int sx, int sy, int sz) const
+    {
+      const Scalar* q = a;
+      for (uint z = 0; z < 4; z++, p += sz - 4 * sy)
+        for (uint y = 0; y < 4; y++, p += sy - 4 * sx)
+          for (uint x = 0; x < 4; x++, p += sx, q++)
+            *p = *q;
+    }
+    void get(Scalar* p, int sx, int sy, int sz, uint shape) const
+    {
+      if (!shape)
+        get(p, sx, sy, sz);
+      else {
+        // determine block dimensions
+        uint nx = 4 - (shape & 3u); shape >>= 2;
+        uint ny = 4 - (shape & 3u); shape >>= 2;
+        uint nz = 4 - (shape & 3u); shape >>= 2;
+        const Scalar* q = a;
+        for (uint z = 0; z < nz; z++, p += sz - ny * sy, q += 16 - 4 * ny)
+          for (uint y = 0; y < ny; y++, p += sy - nx * sx, q += 4 - nx)
+            for (uint x = 0; x < nx; x++, p += sx, q++)
+              *p = *q;
+      }
+    }
+  protected:
+    static uint index(uint i, uint j, uint k) { return (i & 3u) + 4 * ((j & 3u) + 4 * (k & 3u)); }
+    Scalar a[64];
+  };
+
+  // inspector
+  const Scalar& get(uint i, uint j, uint k) const
+  {
+    CacheLine* p = line(i, j, k, false);
+    return (*p)(i, j, k);
+  }
+
+  // mutator
+  void set(uint i, uint j, uint k, Scalar val)
+  {
+    CacheLine* p = line(i, j, k, true);
+    (*p)(i, j, k) = val;
+  }
+
+  // in-place updates
+  void add(uint i, uint j, uint k, Scalar val) { (*line(i, j, k, true))(i, j, k) += val; }
+  void sub(uint i, uint j, uint k, Scalar val) { (*line(i, j, k, true))(i, j, k) -= val; }
+  void mul(uint i, uint j, uint k, Scalar val) { (*line(i, j, k, true))(i, j, k) *= val; }
+  void div(uint i, uint j, uint k, Scalar val) { (*line(i, j, k, true))(i, j, k) /= val; }
+
+  // return cache line for (i, j, k); may require write-back and fetch
+  CacheLine* line(uint i, uint j, uint k, bool write) const
+  {
+    CacheLine* p = 0;
+    uint b = block(i, j, k);
+    typename Cache<CacheLine>::Tag t = cache.access(p, b + 1, write);
+    uint c = t.index() - 1;
+    if (c != b) {
+      // write back occupied cache line if it is dirty
+      if (t.dirty())
+        encode(c, p->a);
+      // fetch cache line
+      decode(b, p->a);
+    }
+    return p;
+  }
+
+  // encode block with given index
+  void encode(uint index, const Scalar* block) const
+  {
+    stream_wseek(stream->stream, index * blkbits);
+    Codec::encode_block_3(stream, block, shape ? shape[index] : 0);
+    stream_flush(stream->stream);
+  }
+
+  // encode block with given index from strided array
+  void encode(uint index, const Scalar* p, int sx, int sy, int sz) const
+  {
+    stream_wseek(stream->stream, index * blkbits);
+    Codec::encode_block_strided_3(stream, p, shape ? shape[index] : 0, sx, sy, sz);
+    stream_flush(stream->stream);
+  }
+
+  // decode block with given index
+  void decode(uint index, Scalar* block) const
+  {
+    stream_rseek(stream->stream, index * blkbits);
+    Codec::decode_block_3(stream, block, shape ? shape[index] : 0);
+  }
+
+  // decode block with given index to strided array
+  void decode(uint index, Scalar* p, int sx, int sy, int sz) const
+  {
+    stream_rseek(stream->stream, index * blkbits);
+    Codec::decode_block_strided_3(stream, p, shape ? shape[index] : 0, sx, sy, sz);
+  }
+
+  // block index for (i, j, k)
+  uint block(uint i, uint j, uint k) const { return (i / 4) + bx * ((j / 4) + by * (k / 4)); }
+
+  // convert flat index to (i, j, k)
+  void ijk(uint& i, uint& j, uint& k, uint index) const
+  {
+    i = index % nx;
+    index /= nx;
+    j = index % ny;
+    index /= ny;
+    k = index;
+  }
+
+  // number of cache lines corresponding to size (or suggested size if zero)
+  static uint lines(size_t size, uint nx, uint ny, uint nz)
+  {
+    uint n = uint((size ? size : 8 * nx * ny * sizeof(Scalar)) / sizeof(CacheLine));
+    return std::max(n, 1u);
+  }
+
+  mutable Cache<CacheLine> cache; // cache of decompressed blocks
+};
+
+typedef array3<float> array3f;
+typedef array3<double> array3d;
+
+}
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/zfpcodec.h b/src/zfp/zfp-0.5.0/array/zfpcodec.h
new file mode 100644
index 0000000..2d46744
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfpcodec.h
@@ -0,0 +1,17 @@
+#ifndef ZFP_CODEC_H
+#define ZFP_CODEC_H
+
+#include "zfp.h"
+
+namespace zfp {
+
+// C++ wrappers around libzfp C functions
+template <typename Scalar>
+struct codec {};
+
+#include "zfpcodecf.h"
+#include "zfpcodecd.h"
+
+}
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/array/zfpcodecd.h b/src/zfp/zfp-0.5.0/array/zfpcodecd.h
new file mode 100644
index 0000000..9e7d893
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfpcodecd.h
@@ -0,0 +1,149 @@
+// double-precision codec
+template <>
+struct codec<double> {
+  // encode contiguous 1D block
+  static void encode_block_1(zfp_stream* zfp, const double* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_double_1(zfp, block, nx, 1);
+    }
+    else
+      zfp_encode_block_double_1(zfp, block);
+  }
+
+  // encode 1D block from strided storage
+  static void encode_block_strided_1(zfp_stream* zfp, const double* p, uint shape, int sx)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_double_1(zfp, p, nx, sx);
+    }
+    else
+      zfp_encode_block_strided_double_1(zfp, p, sx);
+  }
+
+  // encode contiguous 2D block
+  static void encode_block_2(zfp_stream* zfp, const double* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_double_2(zfp, block, nx, ny, 1, 4);
+    }
+    else
+      zfp_encode_block_double_2(zfp, block);
+  }
+
+  // encode 2D block from strided storage
+  static void encode_block_strided_2(zfp_stream* zfp, const double* p, uint shape, int sx, int sy)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_double_2(zfp, p, nx, ny, sx, sy);
+    }
+    else
+      zfp_encode_block_strided_double_2(zfp, p, sx, sy);
+  }
+
+  // encode contiguous 3D block
+  static void encode_block_3(zfp_stream* zfp, const double* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_double_3(zfp, block, nx, ny, nz, 1, 4, 16);
+    }
+    else
+      zfp_encode_block_double_3(zfp, block);
+  }
+
+  // encode 3D block from strided storage
+  static void encode_block_strided_3(zfp_stream* zfp, const double* p, uint shape, int sx, int sy, int sz)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_double_3(zfp, p, nx, ny, nz, sx, sy, sz);
+    }
+    else
+      zfp_encode_block_strided_double_3(zfp, p, sx, sy, sz);
+  }
+
+  // decode contiguous 1D block
+  static void decode_block_1(zfp_stream* zfp, double* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_double_1(zfp, block, nx, 1);
+    }
+    else
+      zfp_decode_block_double_1(zfp, block);
+  }
+
+  // decode 1D block to strided storage
+  static void decode_block_strided_1(zfp_stream* zfp, double* p, uint shape, int sx)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_double_1(zfp, p, nx, sx);
+    }
+    else
+      zfp_decode_block_strided_double_1(zfp, p, sx);
+  }
+
+  // decode contiguous 2D block
+  static void decode_block_2(zfp_stream* zfp, double* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_double_2(zfp, block, nx, ny, 1, 4);
+    }
+    else
+      zfp_decode_block_double_2(zfp, block);
+  }
+
+  // decode 2D block to strided storage
+  static void decode_block_strided_2(zfp_stream* zfp, double* p, uint shape, int sx, int sy)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_double_2(zfp, p, nx, ny, sx, sy);
+    }
+    else
+      zfp_decode_block_strided_double_2(zfp, p, sx, sy);
+  }
+
+  // decode contiguous 3D block
+  static void decode_block_3(zfp_stream* zfp, double* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_double_3(zfp, block, nx, ny, nz, 1, 4, 16);
+    }
+    else
+      zfp_decode_block_double_3(zfp, block);
+  }
+
+  // decode 3D block to strided storage
+  static void decode_block_strided_3(zfp_stream* zfp, double* p, uint shape, int sx, int sy, int sz)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_double_3(zfp, p, nx, ny, nz, sx, sy, sz);
+    }
+    else
+      zfp_decode_block_strided_double_3(zfp, p, sx, sy, sz);
+  }
+
+  static const zfp_type type = zfp_type_double;
+};
diff --git a/src/zfp/zfp-0.5.0/array/zfpcodecf.h b/src/zfp/zfp-0.5.0/array/zfpcodecf.h
new file mode 100644
index 0000000..1ec74a6
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/array/zfpcodecf.h
@@ -0,0 +1,149 @@
+// single-precision codec
+template <>
+struct codec<float> {
+  // encode contiguous 1D block
+  static void encode_block_1(zfp_stream* zfp, const float* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_float_1(zfp, block, nx, 1);
+    }
+    else
+      zfp_encode_block_float_1(zfp, block);
+  }
+
+  // encode 1D block from strided storage
+  static void encode_block_strided_1(zfp_stream* zfp, const float* p, uint shape, int sx)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_float_1(zfp, p, nx, sx);
+    }
+    else
+      zfp_encode_block_strided_float_1(zfp, p, sx);
+  }
+
+  // encode contiguous 2D block
+  static void encode_block_2(zfp_stream* zfp, const float* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_float_2(zfp, block, nx, ny, 1, 4);
+    }
+    else
+      zfp_encode_block_float_2(zfp, block);
+  }
+
+  // encode 2D block from strided storage
+  static void encode_block_strided_2(zfp_stream* zfp, const float* p, uint shape, int sx, int sy)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_float_2(zfp, p, nx, ny, sx, sy);
+    }
+    else
+      zfp_encode_block_strided_float_2(zfp, p, sx, sy);
+  }
+
+  // encode contiguous 3D block
+  static void encode_block_3(zfp_stream* zfp, const float* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_float_3(zfp, block, nx, ny, nz, 1, 4, 16);
+    }
+    else
+      zfp_encode_block_float_3(zfp, block);
+  }
+
+  // encode 3D block from strided storage
+  static void encode_block_strided_3(zfp_stream* zfp, const float* p, uint shape, int sx, int sy, int sz)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_encode_partial_block_strided_float_3(zfp, p, nx, ny, nz, sx, sy, sz);
+    }
+    else
+      zfp_encode_block_strided_float_3(zfp, p, sx, sy, sz);
+  }
+
+  // decode contiguous 1D block
+  static void decode_block_1(zfp_stream* zfp, float* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_float_1(zfp, block, nx, 1);
+    }
+    else
+      zfp_decode_block_float_1(zfp, block);
+  }
+
+  // decode 1D block to strided storage
+  static void decode_block_strided_1(zfp_stream* zfp, float* p, uint shape, int sx)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_float_1(zfp, p, nx, sx);
+    }
+    else
+      zfp_decode_block_strided_float_1(zfp, p, sx);
+  }
+
+  // decode contiguous 2D block
+  static void decode_block_2(zfp_stream* zfp, float* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_float_2(zfp, block, nx, ny, 1, 4);
+    }
+    else
+      zfp_decode_block_float_2(zfp, block);
+  }
+
+  // decode 2D block to strided storage
+  static void decode_block_strided_2(zfp_stream* zfp, float* p, uint shape, int sx, int sy)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_float_2(zfp, p, nx, ny, sx, sy);
+    }
+    else
+      zfp_decode_block_strided_float_2(zfp, p, sx, sy);
+  }
+
+  // decode contiguous 3D block
+  static void decode_block_3(zfp_stream* zfp, float* block, uint shape)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_float_3(zfp, block, nx, ny, nz, 1, 4, 16);
+    }
+    else
+      zfp_decode_block_float_3(zfp, block);
+  }
+
+  // decode 3D block to strided storage
+  static void decode_block_strided_3(zfp_stream* zfp, float* p, uint shape, int sx, int sy, int sz)
+  {
+    if (shape) {
+      uint nx = 4 - (shape & 3u); shape >>= 2;
+      uint ny = 4 - (shape & 3u); shape >>= 2;
+      uint nz = 4 - (shape & 3u); shape >>= 2;
+      zfp_decode_partial_block_strided_float_3(zfp, p, nx, ny, nz, sx, sy, sz);
+    }
+    else
+      zfp_decode_block_strided_float_3(zfp, p, sx, sy, sz);
+  }
+
+  static const zfp_type type = zfp_type_float;
+};
diff --git a/src/zfp/zfp-0.5.0/examples/Makefile b/src/zfp/zfp-0.5.0/examples/Makefile
new file mode 100644
index 0000000..4f0ff71
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/Makefile
@@ -0,0 +1,35 @@
+include ../Config
+
+TARGETS = diffusion-raw diffusion-zfp pgm simple speed testzfp zfp
+
+all: $(TARGETS)
+
+diffusion-raw: diffusion.cpp ../lib/libzfp.a
+	$(CXX) $(CXXFLAGS) -DWITHOUT_COMPRESSION -I../array diffusion.cpp -L../lib -lzfp -o diffusion-raw
+
+diffusion-zfp: diffusion.cpp ../lib/libzfp.a
+	$(CXX) $(CXXFLAGS) -I../array diffusion.cpp -L../lib -lzfp -o diffusion-zfp
+
+pgm: pgm.c ../lib/libzfp.a
+	$(CC) $(CFLAGS) pgm.c -L../lib -lzfp -lm -o pgm
+
+simple: simple.c ../lib/libzfp.a
+	$(CC) $(CFLAGS) simple.c -L../lib -lzfp -lm -o simple
+
+speed: speed.c ../lib/libzfp.a
+	$(CC) $(CFLAGS) speed.c -L../lib -lzfp -lm -o speed
+
+testzfp: testzfp.cpp fields.o ../lib/libzfp.a
+	$(CXX) $(CXXFLAGS) -I../array testzfp.cpp fields.o -L../lib -lzfp -o testzfp
+
+fields.o: fields.c
+	$(CC) $(CFLAGS) -c fields.c
+
+zfp: zfp.c ../lib/libzfp.a
+	$(CC) $(CFLAGS) zfp.c -L../lib -lzfp -lm -o zfp
+
+test: testzfp
+	./testzfp
+
+clean:
+	rm -f $(TARGETS) fields.o
diff --git a/src/zfp/zfp-0.5.0/examples/array2d.h b/src/zfp/zfp-0.5.0/examples/array2d.h
new file mode 100644
index 0000000..7b9f92f
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/array2d.h
@@ -0,0 +1,25 @@
+#ifndef ARRAY2D_H
+#define ARRAY2D_H
+
+#include <climits>
+#include <vector>
+
+typedef unsigned int uint;
+
+// uncompressed 2D double-precision array (for comparison)
+class array2d {
+public:
+  array2d(uint nx, uint ny, uint precision) : nx(nx), ny(ny), data(nx * ny, 0.0) {}
+  size_t size() const { return data.size(); }
+  double rate() const { return CHAR_BIT * sizeof(double); }
+  double& operator()(uint x, uint y) { return data[x + nx * y]; }
+  const double& operator()(uint x, uint y) const { return data[x + nx * y]; }
+  double& operator[](uint i) { return data[i]; }
+  const double& operator[](uint i) const { return data[i]; }
+protected:
+  uint nx;
+  uint ny;
+  std::vector<double> data;
+};
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/examples/diffusion.cpp b/src/zfp/zfp-0.5.0/examples/diffusion.cpp
new file mode 100644
index 0000000..c0c1b4f
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/diffusion.cpp
@@ -0,0 +1,107 @@
+// forward Euler finite difference solution to the heat equation on a 2D grid
+
+#include <algorithm>
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <iomanip>
+#include <iostream>
+
+#ifdef WITHOUT_COMPRESSION
+  #include "array2d.h"
+#else
+  #include "zfparray2.h"
+  using namespace zfp;
+#endif
+
+int main(int argc, char* argv[])
+{
+  int nx = 0;
+  int ny = 0;
+  int nt = 0;
+  double rate = 64;
+
+  // parse arguments
+  switch (argc) {
+    case 5:
+      if (sscanf(argv[4], "%d", &nt) != 1)
+        goto usage;
+      // FALLTHROUGH
+    case 4:
+      if (sscanf(argv[2], "%d", &nx) != 1 ||
+          sscanf(argv[3], "%d", &ny) != 1)
+        goto usage;
+      // FALLTHROUGH
+    case 2:
+      if (sscanf(argv[1], "%lf", &rate) != 1)
+        goto usage;
+      // FALLTHROUGH
+    case 1:
+      break;
+    default:
+    usage:
+      std::cerr << "Usage: diffusion [rate] [nx] [ny] [nt]" << std::endl;
+      return EXIT_FAILURE;
+  }
+
+  // grid dimensions
+  if (nx == 0)
+    nx = 100;
+  if (ny == 0)
+    ny = nx;
+
+  // location of point heat source
+  int x0 = (nx - 1) / 2;
+  int y0 = (ny - 1) / 2;
+
+  // constants used in the solution
+  const double k = 0.04;
+  const double dx = 2.0 / (std::max(nx, ny) - 1);
+  const double dy = 2.0 / (std::max(nx, ny) - 1);
+  const double dt = 0.5 * (dx * dx + dy * dy) / (8 * k);
+  const double tfinal = nt ? nt * dt : 1;
+  const double pi = 3.14159265358979323846;
+
+  // initialize u (constructor zero-initializes)
+  array2d u(nx, ny, rate);
+  rate = u.rate();
+  u(x0, y0) = 1;
+
+  // iterate until final time
+  std::cerr.precision(6);
+  double t;
+  for (t = 0; t < tfinal; t += dt) {
+    std::cerr << "t=" << std::fixed << t << std::endl;
+    // compute du/dt
+    array2d du(nx, ny, rate);
+    for (int y = 1; y < ny - 1; y++) {
+      for (int x = 1; x < nx - 1; x++) {
+        double uxx = (u(x - 1, y) - 2 * u(x, y) + u(x + 1, y)) / (dx * dx);
+        double uyy = (u(x, y - 1) - 2 * u(x, y) + u(x, y + 1)) / (dy * dy);
+        du(x, y) = dt * k * (uxx + uyy);
+      }
+    }
+    // take forward Euler step
+    for (uint i = 0; i < u.size(); i++)
+      u[i] += du[i];
+  }
+
+  // compute root mean square error with respect to exact solution
+  double e = 0;
+  double sum = 0;
+  for (int y = 1; y < ny - 1; y++) {
+    double py = dy * (y - y0);
+    for (int x = 1; x < nx - 1; x++) {
+      double px = dx * (x - x0);
+      double f = u(x, y);
+      double g = dx * dy * std::exp(-(px * px + py * py) / (4 * k * t)) / (4 * pi * k * t);
+      e += (f - g) * (f - g);
+      sum += f;
+    }
+  }
+  e = std::sqrt(e / ((nx - 2) * (ny - 2)));
+  std::cerr.unsetf(std::ios::fixed);
+  std::cerr << "rate=" << rate << " sum=" << std::fixed << sum << " error=" << std::setprecision(6) << std::scientific << e << std::endl;
+
+  return 0;
+}
diff --git a/src/zfp/zfp-0.5.0/examples/fields.c b/src/zfp/zfp-0.5.0/examples/fields.c
new file mode 100644
index 0000000..8d4bab4
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/fields.c
@@ -0,0 +1,12201 @@
+/* single- and double-precision fields for regression testing */
+
+const float array_float[3][4096] = {
+#if __STDC_VERSION__ >= 199901L
+/* C99: hex floats for exact reproduction */
+{
+-0x1.1fd6p-9,-0x1.af43p-8,-0x1.66f98p-7,-0x1.f5fep-7,-0x1.42578p-6,-0x1.8986p-6,
+-0x1.d08bp-6,-0x1.0bb3p-5,-0x1.2f0bcp-5,-0x1.524fcp-5,-0x1.757eep-5,
+-0x1.98994p-5,-0x1.bb9fp-5,-0x1.de9p-5,-0x1.00b62p-4,-0x1.1219fp-4,
+-0x1.23737p-4,-0x1.34c2ap-4,-0x1.46078p-4,-0x1.57422p-4,-0x1.68728p-4,
+-0x1.79989p-4,-0x1.8ab46p-4,-0x1.9bc5fp-4,-0x1.accd5p-4,-0x1.bdca8p-4,
+-0x1.cebd7p-4,-0x1.dfa63p-4,-0x1.f084cp-4,-0x1.00ac9p-3,-0x1.0911bp-3,
+-0x1.1171cp-3,-0x1.19ccb8p-3,-0x1.2222a8p-3,-0x1.2a7388p-3,-0x1.32bf58p-3,
+-0x1.3b062p-3,-0x1.4347d8p-3,-0x1.4b849p-3,-0x1.53bc4p-3,-0x1.5beee8p-3,
+-0x1.641c88p-3,-0x1.6c4528p-3,-0x1.7468dp-3,-0x1.7c877p-3,-0x1.84a11p-3,
+-0x1.8cb5b8p-3,-0x1.94c568p-3,-0x1.9cd018p-3,-0x1.a4d5dp-3,-0x1.acd698p-3,
+-0x1.b4d268p-3,-0x1.bcc94p-3,-0x1.c4bb28p-3,-0x1.cca82p-3,-0x1.d49028p-3,
+-0x1.dc734p-3,-0x1.e4517p-3,-0x1.ec2ab8p-3,-0x1.f3ff1p-3,-0x1.fbce8p-3,
+-0x1.01cc84p-2,-0x1.05af58p-2,-0x1.098fb8p-2,-0x1.0d6da8p-2,-0x1.114928p-2,
+-0x1.152238p-2,-0x1.18f8dcp-2,-0x1.1ccd0cp-2,-0x1.209ed4p-2,-0x1.246e2cp-2,
+-0x1.283b18p-2,-0x1.2c0598p-2,-0x1.2fcdbp-2,-0x1.33935cp-2,-0x1.3756ap-2,
+-0x1.3b177cp-2,-0x1.3ed5fp-2,-0x1.4291fcp-2,-0x1.464bap-2,-0x1.4a02e4p-2,
+-0x1.4db7cp-2,-0x1.516a38p-2,-0x1.551a4cp-2,-0x1.58c7fcp-2,-0x1.5c734cp-2,
+-0x1.601c3cp-2,-0x1.63c2c8p-2,-0x1.6766f8p-2,-0x1.6b08c8p-2,-0x1.6ea838p-2,
+-0x1.72454cp-2,-0x1.75e004p-2,-0x1.79785cp-2,-0x1.7d0e5cp-2,-0x1.80a2p-2,
+-0x1.843348p-2,-0x1.87c23cp-2,-0x1.8b4ed4p-2,-0x1.8ed914p-2,-0x1.9260fcp-2,
+-0x1.95e69p-2,-0x1.9969ccp-2,-0x1.9ceab4p-2,-0x1.a06948p-2,-0x1.a3e584p-2,
+-0x1.a75f74p-2,-0x1.aad70cp-2,-0x1.ae4c58p-2,-0x1.b1bf5p-2,-0x1.b52ff8p-2,
+-0x1.b89e5p-2,-0x1.bc0a5cp-2,-0x1.bf7418p-2,-0x1.c2db84p-2,-0x1.c640a8p-2,
+-0x1.c9a38p-2,-0x1.cd040ap-2,-0x1.d0624cp-2,-0x1.d3be44p-2,-0x1.d717f2p-2,
+-0x1.da6f58p-2,-0x1.ddc478p-2,-0x1.e1174ep-2,-0x1.e467ep-2,-0x1.e7b62cp-2,
+-0x1.eb0234p-2,-0x1.ee4bf8p-2,-0x1.f19378p-2,-0x1.f4d8b6p-2,-0x1.f81bbp-2,
+-0x1.fb5c6ap-2,-0x1.fe9ae4p-2,-0x1.00eb9p-1,-0x1.02888cp-1,-0x1.04246cp-1,
+-0x1.05bf2ap-1,-0x1.0758cap-1,-0x1.08f14cp-1,-0x1.0a88b2p-1,-0x1.0c1ef8p-1,
+-0x1.0db424p-1,-0x1.0f483p-1,-0x1.10db22p-1,-0x1.126cf6p-1,-0x1.13fdbp-1,
+-0x1.158d4cp-1,-0x1.171bdp-1,-0x1.18a938p-1,-0x1.1a3586p-1,-0x1.1bc0bap-1,
+-0x1.1d4ad4p-1,-0x1.1ed3d4p-1,-0x1.205bbcp-1,-0x1.21e28cp-1,-0x1.236844p-1,
+-0x1.24ece2p-1,-0x1.26706ap-1,-0x1.27f2dap-1,-0x1.297434p-1,-0x1.2af478p-1,
+-0x1.2c73a4p-1,-0x1.2df1bcp-1,-0x1.2f6ebcp-1,-0x1.30eaa8p-1,-0x1.32658p-1,
+-0x1.33df44p-1,-0x1.3557f2p-1,-0x1.36cf8ep-1,-0x1.384616p-1,-0x1.39bb8ap-1,
+-0x1.3b2fecp-1,-0x1.3ca33cp-1,-0x1.3e157ap-1,-0x1.3f86a6p-1,-0x1.40f6cp-1,
+-0x1.4265cap-1,-0x1.43d3c4p-1,-0x1.4540acp-1,-0x1.46ac84p-1,-0x1.48174ep-1,
+-0x1.498108p-1,-0x1.4ae9b2p-1,-0x1.4c514ep-1,-0x1.4db7dcp-1,-0x1.4f1d5cp-1,
+-0x1.5081dp-1,-0x1.51e534p-1,-0x1.53478cp-1,-0x1.54a8d8p-1,-0x1.560918p-1,
+-0x1.57684ap-1,-0x1.58c672p-1,-0x1.5a239p-1,-0x1.5b7fa2p-1,-0x1.5cdaa8p-1,
+-0x1.5e34a6p-1,-0x1.5f8d9ap-1,-0x1.60e584p-1,-0x1.623c64p-1,-0x1.63923cp-1,
+-0x1.64e70cp-1,-0x1.663ad2p-1,-0x1.678d92p-1,-0x1.68df4ap-1,-0x1.6a2ffap-1,
+-0x1.6b7fa4p-1,-0x1.6cce48p-1,-0x1.6e1be6p-1,-0x1.6f687cp-1,-0x1.70b41p-1,
+-0x1.71fe9cp-1,-0x1.734824p-1,-0x1.7490a8p-1,-0x1.75d828p-1,-0x1.771ea4p-1,
+-0x1.78641cp-1,-0x1.79a892p-1,-0x1.7aec04p-1,-0x1.7c2e74p-1,-0x1.7d6fe2p-1,
+-0x1.7eb05p-1,-0x1.7fefbap-1,-0x1.812e24p-1,-0x1.826b8cp-1,-0x1.83a7f4p-1,
+-0x1.84e35ep-1,-0x1.861dc6p-1,-0x1.87573p-1,-0x1.888f9ap-1,-0x1.89c706p-1,
+-0x1.8afd72p-1,-0x1.8c32e2p-1,-0x1.8d6752p-1,-0x1.8e9ac6p-1,-0x1.8fcd3cp-1,
+-0x1.90feb6p-1,-0x1.922f34p-1,-0x1.935eb6p-1,-0x1.948d3cp-1,-0x1.95bac6p-1,
+-0x1.96e754p-1,-0x1.9812e8p-1,-0x1.993d82p-1,-0x1.9a6722p-1,-0x1.9b8fc8p-1,
+-0x1.9cb774p-1,-0x1.9dde28p-1,-0x1.9f03e2p-1,-0x1.a028a4p-1,-0x1.a14c6ep-1,
+-0x1.a26f4p-1,-0x1.a3911ap-1,-0x1.a4b1fep-1,-0x1.a5d1ecp-1,-0x1.a6f0e2p-1,
+-0x1.a80ee2p-1,-0x1.a92becp-1,-0x1.aa48p-1,-0x1.ab632p-1,-0x1.ac7d4ap-1,
+-0x1.ad968p-1,-0x1.aeaec2p-1,-0x1.afc61p-1,-0x1.b0dc6ap-1,-0x1.b1f1d2p-1,
+-0x1.b30646p-1,-0x1.b419c8p-1,-0x1.b52c58p-1,-0x1.b63df6p-1,-0x1.b74ea2p-1,
+-0x1.b85e5cp-1,-0x1.b96d26p-1,-0x1.ba7bp-1,-0x1.bb87e8p-1,-0x1.bc93e2p-1,
+-0x1.bd9eecp-1,-0x1.bea906p-1,-0x1.bfb23p-1,-0x1.c0ba6cp-1,-0x1.c1c1bap-1,
+-0x1.c2c81ap-1,-0x1.c3cd8ep-1,-0x1.c4d212p-1,-0x1.c5d5aap-1,-0x1.c6d856p-1,
+-0x1.c7da14p-1,-0x1.c8dae8p-1,-0x1.c9dacep-1,-0x1.cad9cap-1,-0x1.cbd7dap-1,
+-0x1.ccd5p-1,-0x1.cdd13cp-1,-0x1.cecc8cp-1,-0x1.cfc6f4p-1,-0x1.d0c07p-1,
+-0x1.d1b906p-1,-0x1.d2b0b2p-1,-0x1.d3a774p-1,-0x1.d49d5p-1,-0x1.d59242p-1,
+-0x1.d6864ep-1,-0x1.d77972p-1,-0x1.d86bbp-1,-0x1.d95d06p-1,-0x1.da4d76p-1,
+-0x1.db3dp-1,-0x1.dc2ba6p-1,-0x1.dd1964p-1,-0x1.de064p-1,-0x1.def234p-1,
+-0x1.dfdd46p-1,-0x1.e0c774p-1,-0x1.e1b0bcp-1,-0x1.e29922p-1,-0x1.e380a6p-1,
+-0x1.e46746p-1,-0x1.e54d04p-1,-0x1.e631dep-1,-0x1.e715d8p-1,-0x1.e7f8fp-1,
+-0x1.e8db26p-1,-0x1.e9bc7cp-1,-0x1.ea9cf2p-1,-0x1.eb7c88p-1,-0x1.ec5b3cp-1,
+-0x1.ed3912p-1,-0x1.ee1608p-1,-0x1.eef21ep-1,-0x1.efcd58p-1,-0x1.f0a7bp-1,
+-0x1.f1812cp-1,-0x1.f259ccp-1,-0x1.f3318cp-1,-0x1.f4087p-1,-0x1.f4de78p-1,
+-0x1.f5b3ap-1,-0x1.f687fp-1,-0x1.f75b62p-1,-0x1.f82df8p-1,-0x1.f8ffb4p-1,
+-0x1.f9d094p-1,-0x1.faa09ap-1,-0x1.fb6fc6p-1,-0x1.fc3e18p-1,-0x1.fd0b9p-1,
+-0x1.fdd83p-1,-0x1.fea3f4p-1,-0x1.ff6ee2p-1,-0x1.001c7ap+0,-0x1.008118p+0,
+-0x1.00e54cp+0,-0x1.014912p+0,-0x1.01ac6cp+0,-0x1.020f5cp+0,-0x1.0271ep+0,
+-0x1.02d3fap+0,-0x1.0335a8p+0,-0x1.0396eap+0,-0x1.03f7c4p+0,-0x1.045832p+0,
+-0x1.04b836p+0,-0x1.0517cep+0,-0x1.0576fep+0,-0x1.05d5c4p+0,-0x1.06342p+0,
+-0x1.069212p+0,-0x1.06ef9ap+0,-0x1.074cbap+0,-0x1.07a97p+0,-0x1.0805bep+0,
+-0x1.0861a4p+0,-0x1.08bd2p+0,-0x1.091832p+0,-0x1.0972dep+0,-0x1.09cd2p+0,
+-0x1.0a26fcp+0,-0x1.0a806ep+0,-0x1.0ad97ap+0,-0x1.0b321ep+0,-0x1.0b8a5ap+0,
+-0x1.0be22ep+0,-0x1.0c399cp+0,-0x1.0c90a4p+0,-0x1.0ce744p+0,-0x1.0d3d7cp+0,
+-0x1.0d935p+0,-0x1.0de8bcp+0,-0x1.0e3dc2p+0,-0x1.0e9262p+0,-0x1.0ee69cp+0,
+-0x1.0f3a7p+0,-0x1.0f8dep+0,-0x1.0fe0e8p+0,-0x1.10338ep+0,-0x1.1085ccp+0,
+-0x1.10d7a6p+0,-0x1.11291cp+0,-0x1.117a2cp+0,-0x1.11cad8p+0,-0x1.121b2p+0,
+-0x1.126b02p+0,-0x1.12ba8p+0,-0x1.13099cp+0,-0x1.135854p+0,-0x1.13a6a8p+0,
+-0x1.13f498p+0,-0x1.144224p+0,-0x1.148f4ep+0,-0x1.14dc14p+0,-0x1.152878p+0,
+-0x1.15747ap+0,-0x1.15c018p+0,-0x1.160b54p+0,-0x1.16562ep+0,-0x1.16a0a4p+0,
+-0x1.16eabap+0,-0x1.17346ep+0,-0x1.177dcp+0,-0x1.17c6bp+0,-0x1.180f4p+0,
+-0x1.18576ep+0,-0x1.189f3ap+0,-0x1.18e6a6p+0,-0x1.192dbp+0,-0x1.19745cp+0,
+-0x1.19baa4p+0,-0x1.1a008ep+0,-0x1.1a4618p+0,-0x1.1a8b4p+0,-0x1.1ad00ap+0,
+-0x1.1b1474p+0,-0x1.1b587cp+0,-0x1.1b9c28p+0,-0x1.1bdf72p+0,-0x1.1c225ep+0,
+-0x1.1c64ecp+0,-0x1.1ca718p+0,-0x1.1ce8e8p+0,-0x1.1d2a58p+0,-0x1.1d6b6cp+0,
+-0x1.1dac1ep+0,-0x1.1dec74p+0,-0x1.1e2c6cp+0,-0x1.1e6c06p+0,-0x1.1eab42p+0,
+-0x1.1eea2p+0,-0x1.1f28a2p+0,-0x1.1f66c6p+0,-0x1.1fa48cp+0,-0x1.1fe1f8p+0,
+-0x1.201f04p+0,-0x1.205bb4p+0,-0x1.209808p+0,-0x1.20d4p+0,-0x1.210f9cp+0,
+-0x1.214adap+0,-0x1.2185bep+0,-0x1.21c046p+0,-0x1.21fa7p+0,-0x1.223442p+0,
+-0x1.226db6p+0,-0x1.22a6dp+0,-0x1.22df8ep+0,-0x1.2317f2p+0,-0x1.234ffcp+0,
+-0x1.2387aap+0,-0x1.23befcp+0,-0x1.23f5f6p+0,-0x1.242c96p+0,-0x1.2462dcp+0,
+-0x1.2498c6p+0,-0x1.24ce58p+0,-0x1.25039p+0,-0x1.25386ep+0,-0x1.256cf4p+0,
+-0x1.25a12p+0,-0x1.25d4f2p+0,-0x1.26086cp+0,-0x1.263b8cp+0,-0x1.266e54p+0,
+-0x1.26a0c4p+0,-0x1.26d2dcp+0,-0x1.27049cp+0,-0x1.273604p+0,-0x1.276714p+0,
+-0x1.2797ccp+0,-0x1.27c82cp+0,-0x1.27f834p+0,-0x1.2827e6p+0,-0x1.28574p+0,
+-0x1.288644p+0,-0x1.28b4fp+0,-0x1.28e344p+0,-0x1.291144p+0,-0x1.293eecp+0,
+-0x1.296c3ep+0,-0x1.29993ap+0,-0x1.29c5ep+0,-0x1.29f23p+0,-0x1.2a1e2ap+0,
+-0x1.2a49cep+0,-0x1.2a751ep+0,-0x1.2aa018p+0,-0x1.2acabcp+0,-0x1.2af50cp+0,
+-0x1.2b1f06p+0,-0x1.2b48acp+0,-0x1.2b71fcp+0,-0x1.2b9af8p+0,-0x1.2bc3a2p+0,
+-0x1.2bebf6p+0,-0x1.2c13f6p+0,-0x1.2c3ba2p+0,-0x1.2c62fap+0,-0x1.2c89fep+0,
+-0x1.2cb0bp+0,-0x1.2cd70ep+0,-0x1.2cfd18p+0,-0x1.2d22dp+0,-0x1.2d4834p+0,
+-0x1.2d6d46p+0,-0x1.2d9204p+0,-0x1.2db67p+0,-0x1.2dda8cp+0,-0x1.2dfe54p+0,
+-0x1.2e21c8p+0,-0x1.2e44ecp+0,-0x1.2e67bep+0,-0x1.2e8a4p+0,-0x1.2eac6ep+0,
+-0x1.2ece4ap+0,-0x1.2eefd6p+0,-0x1.2f1112p+0,-0x1.2f31fcp+0,-0x1.2f5294p+0,
+-0x1.2f72dcp+0,-0x1.2f92d4p+0,-0x1.2fb27cp+0,-0x1.2fd1d2p+0,-0x1.2ff0dap+0,
+-0x1.300f9p+0,-0x1.302df8p+0,-0x1.304c0ep+0,-0x1.3069d6p+0,-0x1.30874ep+0,
+-0x1.30a476p+0,-0x1.30c15p+0,-0x1.30dddap+0,-0x1.30fa16p+0,-0x1.311602p+0,
+-0x1.3131ap+0,-0x1.314cfp+0,-0x1.3167f2p+0,-0x1.3182a4p+0,-0x1.319d08p+0,
+-0x1.31b72p+0,-0x1.31d0e8p+0,-0x1.31ea64p+0,-0x1.320392p+0,-0x1.321c72p+0,
+-0x1.323506p+0,-0x1.324d4cp+0,-0x1.326544p+0,-0x1.327cfp+0,-0x1.32945p+0,
+-0x1.32ab62p+0,-0x1.32c228p+0,-0x1.32d8a2p+0,-0x1.32eedp+0,-0x1.3304bp+0,
+-0x1.331a46p+0,-0x1.332f9p+0,-0x1.33448ep+0,-0x1.335942p+0,-0x1.336da8p+0,
+-0x1.3381c4p+0,-0x1.339596p+0,-0x1.33a91cp+0,-0x1.33bc56p+0,-0x1.33cf48p+0,
+-0x1.33e1ecp+0,-0x1.33f448p+0,-0x1.340658p+0,-0x1.34182p+0,-0x1.34299cp+0,
+-0x1.343adp+0,-0x1.344bb8p+0,-0x1.345c58p+0,-0x1.346caep+0,-0x1.347cbap+0,
+-0x1.348c7ep+0,-0x1.349bf8p+0,-0x1.34ab28p+0,-0x1.34ba12p+0,-0x1.34c8bp+0,
+-0x1.34d708p+0,-0x1.34e516p+0,-0x1.34f2dcp+0,-0x1.35005cp+0,-0x1.350d9p+0,
+-0x1.351a8p+0,-0x1.352726p+0,-0x1.353384p+0,-0x1.353f9cp+0,-0x1.354b6cp+0,
+-0x1.3556f4p+0,-0x1.356236p+0,-0x1.356d3p+0,-0x1.3577e4p+0,-0x1.35825p+0,
+-0x1.358c78p+0,-0x1.359658p+0,-0x1.359ffp+0,-0x1.35a944p+0,-0x1.35b25p+0,
+-0x1.35bb18p+0,-0x1.35c39ap+0,-0x1.35cbd6p+0,-0x1.35d3ccp+0,-0x1.35db7cp+0,
+-0x1.35e2e8p+0,-0x1.35ea1p+0,-0x1.35f0fp+0,-0x1.35f78cp+0,-0x1.35fde4p+0,
+-0x1.3603f8p+0,-0x1.3609c8p+0,-0x1.360f5p+0,-0x1.361498p+0,-0x1.361998p+0,
+-0x1.361e58p+0,-0x1.3622d2p+0,-0x1.362708p+0,-0x1.362afcp+0,-0x1.362eaap+0,
+-0x1.363216p+0,-0x1.36354p+0,-0x1.363824p+0,-0x1.363ac8p+0,-0x1.363d28p+0,
+-0x1.363f44p+0,-0x1.36412p+0,-0x1.3642b8p+0,-0x1.36440ep+0,-0x1.364522p+0,
+-0x1.3645f4p+0,-0x1.364684p+0,-0x1.3646d2p+0,-0x1.3646dep+0,-0x1.3646a8p+0,
+-0x1.364634p+0,-0x1.36457cp+0,-0x1.364482p+0,-0x1.364348p+0,-0x1.3641ccp+0,
+-0x1.364012p+0,-0x1.363e16p+0,-0x1.363bd8p+0,-0x1.36395cp+0,-0x1.3636ap+0,
+-0x1.3633ap+0,-0x1.363064p+0,-0x1.362ce6p+0,-0x1.362928p+0,-0x1.36252cp+0,
+-0x1.3620fp+0,-0x1.361c74p+0,-0x1.3617bap+0,-0x1.3612cp+0,-0x1.360d88p+0,
+-0x1.36081p+0,-0x1.360258p+0,-0x1.35fc64p+0,-0x1.35f63p+0,-0x1.35efbep+0,
+-0x1.35e90ep+0,-0x1.35e22p+0,-0x1.35daf4p+0,-0x1.35d388p+0,-0x1.35cbe2p+0,
+-0x1.35c3fcp+0,-0x1.35bbd8p+0,-0x1.35b378p+0,-0x1.35aadcp+0,-0x1.35a2p+0,
+-0x1.3598e8p+0,-0x1.358f94p+0,-0x1.358604p+0,-0x1.357c36p+0,-0x1.35722cp+0,
+-0x1.3567e4p+0,-0x1.355d62p+0,-0x1.3552a4p+0,-0x1.3547a8p+0,-0x1.353c7p+0,
+-0x1.3531p+0,-0x1.35255p+0,-0x1.351968p+0,-0x1.350d42p+0,-0x1.3500e2p+0,
+-0x1.34f446p+0,-0x1.34e77p+0,-0x1.34da6p+0,-0x1.34cd14p+0,-0x1.34bf8cp+0,
+-0x1.34b1ccp+0,-0x1.34a3dp+0,-0x1.34959ap+0,-0x1.34872ap+0,-0x1.34788p+0,
+-0x1.34699cp+0,-0x1.345a7ep+0,-0x1.344b28p+0,-0x1.343b98p+0,-0x1.342bccp+0,
+-0x1.341bc8p+0,-0x1.340b8cp+0,-0x1.33fb18p+0,-0x1.33ea68p+0,-0x1.33d98p+0,
+-0x1.33c86p+0,-0x1.33b708p+0,-0x1.33a578p+0,-0x1.3393aep+0,-0x1.3381acp+0,
+-0x1.336f74p+0,-0x1.335d02p+0,-0x1.334a58p+0,-0x1.333778p+0,-0x1.33246p+0,
+-0x1.33111p+0,-0x1.32fd88p+0,-0x1.32e9c8p+0,-0x1.32d5d4p+0,-0x1.32c1a8p+0,
+-0x1.32ad44p+0,-0x1.3298a8p+0,-0x1.3283d8p+0,-0x1.326edp+0,-0x1.325994p+0,
+-0x1.32442p+0,-0x1.322e74p+0,-0x1.321894p+0,-0x1.32028p+0,-0x1.31ec34p+0,
+-0x1.31d5b2p+0,-0x1.31befcp+0,-0x1.31a80ep+0,-0x1.3190ecp+0,-0x1.317996p+0,
+-0x1.31620ap+0,-0x1.314a48p+0,-0x1.313254p+0,-0x1.311a28p+0,-0x1.3101c8p+0,
+-0x1.30e936p+0,-0x1.30d06ep+0,-0x1.30b772p+0,-0x1.309e42p+0,-0x1.3084dcp+0,
+-0x1.306b44p+0,-0x1.305178p+0,-0x1.30377ap+0,-0x1.301d48p+0,-0x1.3002ep+0,
+-0x1.2fe848p+0,-0x1.2fcd7ap+0,-0x1.2fb27ap+0,-0x1.2f9748p+0,-0x1.2f7bep+0,
+-0x1.2f6048p+0,-0x1.2f447cp+0,-0x1.2f288p+0,-0x1.2f0c5p+0,-0x1.2eefeep+0,
+-0x1.2ed35ap+0,-0x1.2eb694p+0,-0x1.2e999cp+0,-0x1.2e7c7p+0,-0x1.2e5f16p+0,
+-0x1.2e4188p+0,-0x1.2e23cap+0,-0x1.2e05dap+0,-0x1.2de7b8p+0,-0x1.2dc968p+0,
+-0x1.2daae4p+0,-0x1.2d8c3p+0,-0x1.2d6d4cp+0,-0x1.2d4e36p+0,-0x1.2d2efp+0,
+-0x1.2d0f7ap+0,-0x1.2cefd4p+0,-0x1.2ccffcp+0,-0x1.2caff6p+0,-0x1.2c8fcp+0,
+-0x1.2c6f58p+0,-0x1.2c4ec4p+0,-0x1.2c2dfcp+0,-0x1.2c0d08p+0,-0x1.2bebe4p+0,
+-0x1.2bca9p+0,-0x1.2ba90cp+0,-0x1.2b875cp+0,-0x1.2b657cp+0,-0x1.2b436cp+0,
+-0x1.2b212cp+0,-0x1.2afecp+0,-0x1.2adc24p+0,-0x1.2ab95cp+0,-0x1.2a9664p+0,
+-0x1.2a733ep+0,-0x1.2a4feap+0,-0x1.2a2c68p+0,-0x1.2a08b8p+0,-0x1.29e4dcp+0,
+-0x1.29c0dp+0,-0x1.299c98p+0,-0x1.297834p+0,-0x1.2953ap+0,-0x1.292eep+0,
+-0x1.2909f4p+0,-0x1.28e4dcp+0,-0x1.28bf94p+0,-0x1.289a2p+0,-0x1.287482p+0,
+-0x1.284eb6p+0,-0x1.2828bep+0,-0x1.28029ap+0,-0x1.27dc48p+0,-0x1.27b5ccp+0,
+-0x1.278f24p+0,-0x1.27685p+0,-0x1.27415p+0,-0x1.271a26p+0,-0x1.26f2dp+0,
+-0x1.26cb4cp+0,-0x1.26a3ap+0,-0x1.267bc8p+0,-0x1.2653c4p+0,-0x1.262b98p+0,
+-0x1.26033ep+0,-0x1.25dabcp+0,-0x1.25b20cp+0,-0x1.258934p+0,-0x1.256034p+0,
+-0x1.253706p+0,-0x1.250dbp+0,-0x1.24e42ep+0,-0x1.24ba84p+0,-0x1.2490bp+0,
+-0x1.2466bp+0,-0x1.243c88p+0,-0x1.241238p+0,-0x1.23e7bep+0,-0x1.23bd1ap+0,
+-0x1.23924ep+0,-0x1.236758p+0,-0x1.233c3ap+0,-0x1.2310f2p+0,-0x1.22e582p+0,
+-0x1.22b9eap+0,-0x1.228e28p+0,-0x1.22624p+0,-0x1.22362ep+0,-0x1.2209f4p+0,
+-0x1.21dd94p+0,-0x1.21b108p+0,-0x1.218458p+0,-0x1.21578p+0,-0x1.212a8p+0,
+-0x1.20fd58p+0,-0x1.20d008p+0,-0x1.20a29p+0,-0x1.2074f4p+0,-0x1.20472ep+0,
+-0x1.201942p+0,-0x1.1feb3p+0,-0x1.1fbcf6p+0,-0x1.1f8e96p+0,-0x1.1f601p+0,
+-0x1.1f3164p+0,-0x1.1f029p+0,-0x1.1ed396p+0,-0x1.1ea478p+0,-0x1.1e7532p+0,
+-0x1.1e45c8p+0,-0x1.1e1636p+0,-0x1.1de68p+0,-0x1.1db6a4p+0,-0x1.1d86ap+0,
+-0x1.1d567ap+0,-0x1.1d262ep+0,-0x1.1cf5bcp+0,-0x1.1cc528p+0,-0x1.1c946cp+0,
+-0x1.1c638cp+0,-0x1.1c3288p+0,-0x1.1c015cp+0,-0x1.1bd01p+0,-0x1.1b9e9ep+0,
+-0x1.1b6d08p+0,-0x1.1b3b4cp+0,-0x1.1b096ep+0,-0x1.1ad76cp+0,-0x1.1aa544p+0,
+-0x1.1a72fap+0,-0x1.1a408cp+0,-0x1.1a0dfcp+0,-0x1.19db46p+0,-0x1.19a86ep+0,
+-0x1.197574p+0,-0x1.194254p+0,-0x1.190f14p+0,-0x1.18dbaep+0,-0x1.18a828p+0,
+-0x1.18747cp+0,-0x1.1840bp+0,-0x1.180ccp+0,-0x1.17d8bp+0,-0x1.17a47cp+0,
+-0x1.177026p+0,-0x1.173bacp+0,-0x1.170714p+0,-0x1.16d258p+0,-0x1.169d7ap+0,
+-0x1.16687ap+0,-0x1.163358p+0,-0x1.15fe18p+0,-0x1.15c8b4p+0,-0x1.15932ep+0,
+-0x1.155d88p+0,-0x1.1527cp+0,-0x1.14f1d8p+0,-0x1.14bbcep+0,-0x1.1485a4p+0,
+-0x1.144f5ap+0,-0x1.1418fp+0,-0x1.13e264p+0,-0x1.13abb8p+0,-0x1.1374ecp+0,
+-0x1.133ep+0,-0x1.1306f2p+0,-0x1.12cfc6p+0,-0x1.12987ap+0,-0x1.12610ep+0,
+-0x1.122982p+0,-0x1.11f1d8p+0,-0x1.11ba0cp+0,-0x1.118224p+0,-0x1.114a1ap+0,
+-0x1.1111fp+0,-0x1.10d9aap+0,-0x1.10a144p+0,-0x1.1068cp+0,-0x1.10301cp+0,
+-0x1.0ff758p+0,-0x1.0fbe78p+0,-0x1.0f8578p+0,-0x1.0f4c5ap+0,-0x1.0f131ep+0,
+-0x1.0ed9c4p+0,-0x1.0ea04cp+0,-0x1.0e66b6p+0,-0x1.0e2d02p+0,-0x1.0df33p+0,
+-0x1.0db94p+0,-0x1.0d7f34p+0,-0x1.0d450ap+0,-0x1.0d0ac2p+0,-0x1.0cd05cp+0,
+-0x1.0c95dcp+0,-0x1.0c5b3cp+0,-0x1.0c208p+0,-0x1.0be5a8p+0,-0x1.0baabp+0,
+-0x1.0b6fap+0,-0x1.0b347p+0,-0x1.0af924p+0,-0x1.0abdbcp+0,-0x1.0a8238p+0,
+-0x1.0a4698p+0,-0x1.0a0adcp+0,-0x1.09cf04p+0,-0x1.09931p+0,-0x1.0957p+0,
+-0x1.091ad4p+0,-0x1.08de8ep+0,-0x1.08a22cp+0,-0x1.0865aep+0,-0x1.082914p+0,
+-0x1.07ec6p+0,-0x1.07af9p+0,-0x1.0772a6p+0,-0x1.0735ap+0,-0x1.06f88p+0,
+-0x1.06bb46p+0,-0x1.067dfp+0,-0x1.06408p+0,-0x1.0602f6p+0,-0x1.05c55p+0,
+-0x1.058792p+0,-0x1.0549b8p+0,-0x1.050bc6p+0,-0x1.04cdb8p+0,-0x1.048f92p+0,
+-0x1.04515p+0,-0x1.0412f8p+0,-0x1.03d484p+0,-0x1.0395f4p+0,-0x1.03574ep+0,
+-0x1.03188ep+0,-0x1.02d9b4p+0,-0x1.029ac4p+0,-0x1.025bb8p+0,-0x1.021c94p+0,
+-0x1.01dd56p+0,-0x1.019ep+0,-0x1.015e92p+0,-0x1.011f0cp+0,-0x1.00df6cp+0,
+-0x1.009fb4p+0,-0x1.005fe4p+0,-0x1.001ffcp+0,-0x1.ffbffap-1,-0x1.ff3fcap-1,
+-0x1.febf6ap-1,-0x1.fe3edcp-1,-0x1.fdbe1cp-1,-0x1.fd3d3p-1,-0x1.fcbc14p-1,
+-0x1.fc3ac8p-1,-0x1.fbb94cp-1,-0x1.fb37a4p-1,-0x1.fab5cep-1,-0x1.fa33c8p-1,
+-0x1.f9b198p-1,-0x1.f92f38p-1,-0x1.f8aca8p-1,-0x1.f829eep-1,-0x1.f7a706p-1,
+-0x1.f723fp-1,-0x1.f6a0bp-1,-0x1.f61d4p-1,-0x1.f599a6p-1,-0x1.f515ep-1,
+-0x1.f491ecp-1,-0x1.f40dccp-1,-0x1.f38984p-1,-0x1.f3050cp-1,-0x1.f2806cp-1,
+-0x1.f1fbap-1,-0x1.f176a8p-1,-0x1.f0f186p-1,-0x1.f06c3ap-1,-0x1.efe6c4p-1,
+-0x1.ef6122p-1,-0x1.eedb58p-1,-0x1.ee5562p-1,-0x1.edcf44p-1,-0x1.ed48fcp-1,
+-0x1.ecc28cp-1,-0x1.ec3bfp-1,-0x1.ebb52cp-1,-0x1.eb2e4p-1,-0x1.eaa72cp-1,
+-0x1.ea1ffp-1,-0x1.e9988cp-1,-0x1.e910fep-1,-0x1.e88948p-1,-0x1.e8016cp-1,
+-0x1.e77968p-1,-0x1.e6f13cp-1,-0x1.e668eap-1,-0x1.e5e07p-1,-0x1.e557dp-1,
+-0x1.e4cf0ap-1,-0x1.e4461cp-1,-0x1.e3bd08p-1,-0x1.e333dp-1,-0x1.e2aa7p-1,
+-0x1.e220ecp-1,-0x1.e1974p-1,-0x1.e10d7p-1,-0x1.e0837cp-1,-0x1.dff962p-1,
+-0x1.df6f24p-1,-0x1.dee4cp-1,-0x1.de5a38p-1,-0x1.ddcf8cp-1,-0x1.dd44bcp-1,
+-0x1.dcb9c6p-1,-0x1.dc2eaep-1,-0x1.dba374p-1,-0x1.db1814p-1,-0x1.da8c9p-1,
+-0x1.da00ecp-1,-0x1.d97524p-1,-0x1.d8e938p-1,-0x1.d85d2cp-1,-0x1.d7d0fcp-1,
+-0x1.d744a8p-1,-0x1.d6b834p-1,-0x1.d62bap-1,-0x1.d59ee8p-1,-0x1.d5120ep-1,
+-0x1.d48514p-1,-0x1.d3f7f8p-1,-0x1.d36abcp-1,-0x1.d2dd5ep-1,-0x1.d24fep-1,
+-0x1.d1c242p-1,-0x1.d13484p-1,-0x1.d0a6a4p-1,-0x1.d018a4p-1,-0x1.cf8a88p-1,
+-0x1.cefc48p-1,-0x1.ce6decp-1,-0x1.cddf6ep-1,-0x1.cd50d2p-1,-0x1.ccc218p-1,
+-0x1.cc333cp-1,-0x1.cba444p-1,-0x1.cb152ep-1,-0x1.ca85f8p-1,-0x1.c9f6a6p-1,
+-0x1.c96734p-1,-0x1.c8d7a6p-1,-0x1.c847fap-1,-0x1.c7b83p-1,-0x1.c72848p-1,
+-0x1.c69844p-1,-0x1.c60824p-1,-0x1.c577e6p-1,-0x1.c4e78cp-1,-0x1.c45714p-1,
+-0x1.c3c684p-1,-0x1.c335d4p-1,-0x1.c2a508p-1,-0x1.c21422p-1,-0x1.c1832p-1,
+-0x1.c0f204p-1,-0x1.c060cap-1,-0x1.bfcf76p-1,-0x1.bf3e08p-1,-0x1.beac7ep-1,
+-0x1.be1adap-1,-0x1.bd891cp-1,-0x1.bcf744p-1,-0x1.bc655p-1,-0x1.bbd344p-1,
+-0x1.bb411cp-1,-0x1.baaedcp-1,-0x1.ba1c84p-1,-0x1.b98a1p-1,-0x1.b8f784p-1,
+-0x1.b864ep-1,-0x1.b7d224p-1,-0x1.b73f4cp-1,-0x1.b6ac5ep-1,-0x1.b61958p-1,
+-0x1.b58638p-1,-0x1.b4f302p-1,-0x1.b45fb4p-1,-0x1.b3cc4cp-1,-0x1.b338dp-1,
+-0x1.b2a53ap-1,-0x1.b2118ep-1,-0x1.b17dccp-1,-0x1.b0e9fp-1,-0x1.b056p-1,
+-0x1.afc1f8p-1,-0x1.af2ddcp-1,-0x1.ae99a8p-1,-0x1.ae056p-1,-0x1.ad71p-1,
+-0x1.acdc8ap-1,-0x1.ac48p-1,-0x1.abb36p-1,-0x1.ab1eaap-1,-0x1.aa89ep-1,
+-0x1.a9f5p-1,-0x1.a9600cp-1,-0x1.a8cb04p-1,-0x1.a835e8p-1,-0x1.a7a0b6p-1,
+-0x1.a70b7p-1,-0x1.a67618p-1,-0x1.a5e0aap-1,-0x1.a54b28p-1,-0x1.a4b594p-1,
+-0x1.a41fecp-1,-0x1.a38a34p-1,-0x1.a2f464p-1,-0x1.a25e84p-1,-0x1.a1c89p-1,
+-0x1.a1328cp-1,-0x1.a09c74p-1,-0x1.a00648p-1,-0x1.9f700cp-1,-0x1.9ed9bep-1,
+-0x1.9e435ep-1,-0x1.9dacecp-1,-0x1.9d1668p-1,-0x1.9c7fd4p-1,-0x1.9be93p-1,
+-0x1.9b5278p-1,-0x1.9abbbp-1,-0x1.9a24d8p-1,-0x1.998dfp-1,-0x1.98f6f8p-1,
+-0x1.985feep-1,-0x1.97c8d4p-1,-0x1.9731acp-1,-0x1.969a74p-1,-0x1.96032ap-1,
+-0x1.956bd2p-1,-0x1.94d46cp-1,-0x1.943cf4p-1,-0x1.93a57p-1,-0x1.930ddcp-1,
+-0x1.927638p-1,-0x1.91de86p-1,-0x1.9146c6p-1,-0x1.90aef8p-1,-0x1.90171cp-1,
+-0x1.8f7f32p-1,-0x1.8ee73ap-1,-0x1.8e4f34p-1,-0x1.8db72p-1,-0x1.8d1fp-1,
+-0x1.8c86d4p-1,-0x1.8bee98p-1,-0x1.8b565p-1,-0x1.8abdfcp-1,-0x1.8a259cp-1,
+-0x1.898d3p-1,-0x1.88f4b4p-1,-0x1.885c3p-1,-0x1.87c39ep-1,-0x1.872bp-1,
+-0x1.869258p-1,-0x1.85f9a2p-1,-0x1.8560e2p-1,-0x1.84c818p-1,-0x1.842f4p-1,
+-0x1.83965ep-1,-0x1.82fd72p-1,-0x1.82647cp-1,-0x1.81cb7ap-1,-0x1.81326ep-1,
+-0x1.809958p-1,-0x1.800038p-1,-0x1.7f670cp-1,-0x1.7ecdd8p-1,-0x1.7e349cp-1,
+-0x1.7d9b54p-1,-0x1.7d0204p-1,-0x1.7c68acp-1,-0x1.7bcf48p-1,-0x1.7b35dcp-1,
+-0x1.7a9c68p-1,-0x1.7a02ecp-1,-0x1.796964p-1,-0x1.78cfd8p-1,-0x1.78364p-1,
+-0x1.779ca4p-1,-0x1.7702fcp-1,-0x1.76695p-1,-0x1.75cf9ap-1,-0x1.7535dcp-1,
+-0x1.749c18p-1,-0x1.74024cp-1,-0x1.73687cp-1,-0x1.72ceap-1,-0x1.7234cp-1,
+-0x1.719adap-1,-0x1.7100ecp-1,-0x1.7066f8p-1,-0x1.6fcdp-1,-0x1.6f33p-1,
+-0x1.6e98f8p-1,-0x1.6dfeeep-1,-0x1.6d64dcp-1,-0x1.6ccac4p-1,-0x1.6c30a8p-1,
+-0x1.6b9688p-1,-0x1.6afc6p-1,-0x1.6a6236p-1,-0x1.69c804p-1,-0x1.692ddp-1,
+-0x1.689398p-1,-0x1.67f958p-1,-0x1.675f18p-1,-0x1.66c4dp-1,-0x1.662a86p-1,
+-0x1.659038p-1,-0x1.64f5e6p-1,-0x1.645b9p-1,-0x1.63c138p-1,-0x1.6326dcp-1,
+-0x1.628c7cp-1,-0x1.61f21ap-1,-0x1.6157b4p-1,-0x1.60bd4cp-1,-0x1.6022e4p-1,
+-0x1.5f8876p-1,-0x1.5eee06p-1,-0x1.5e5394p-1,-0x1.5db92p-1,-0x1.5d1eacp-1,
+-0x1.5c8434p-1,-0x1.5be9bcp-1,-0x1.5b4f4p-1,-0x1.5ab4c4p-1,-0x1.5a1a48p-1,
+-0x1.597fc8p-1,-0x1.58e54ap-1,-0x1.584acap-1,-0x1.57b048p-1,-0x1.5715c8p-1,
+-0x1.567b46p-1,-0x1.55e0c4p-1,-0x1.55464p-1,-0x1.54abcp-1,-0x1.54113cp-1,
+-0x1.5376bap-1,-0x1.52dc38p-1,-0x1.5241b8p-1,-0x1.51a736p-1,-0x1.510cb6p-1,
+-0x1.507238p-1,-0x1.4fd7b8p-1,-0x1.4f3d3cp-1,-0x1.4ea2cp-1,-0x1.4e0846p-1,
+-0x1.4d6dccp-1,-0x1.4cd356p-1,-0x1.4c38ep-1,-0x1.4b9e6cp-1,-0x1.4b03fcp-1,
+-0x1.4a698cp-1,-0x1.49cf2p-1,-0x1.4934b4p-1,-0x1.489a4cp-1,-0x1.47ffe8p-1,
+-0x1.476584p-1,-0x1.46cb24p-1,-0x1.4630c8p-1,-0x1.45967p-1,-0x1.44fc18p-1,
+-0x1.4461c8p-1,-0x1.43c778p-1,-0x1.432d2cp-1,-0x1.4292e4p-1,-0x1.41f8a2p-1,
+-0x1.415e64p-1,-0x1.40c428p-1,-0x1.4029fp-1,-0x1.3f8fcp-1,-0x1.3ef59p-1,
+-0x1.3e5b68p-1,-0x1.3dc144p-1,-0x1.3d2724p-1,-0x1.3c8d0cp-1,-0x1.3bf2f8p-1,
+-0x1.3b58e8p-1,-0x1.3abedcp-1,-0x1.3a24d8p-1,-0x1.398adap-1,-0x1.38f0e2p-1,
+-0x1.3856fp-1,-0x1.37bd02p-1,-0x1.37231cp-1,-0x1.36893cp-1,-0x1.35ef62p-1,
+-0x1.35559p-1,-0x1.34bbc4p-1,-0x1.3421fep-1,-0x1.33884p-1,-0x1.32ee88p-1,
+-0x1.3254d8p-1,-0x1.31bb3p-1,-0x1.31218cp-1,-0x1.3087f4p-1,-0x1.2fee6p-1,
+-0x1.2f54d8p-1,-0x1.2ebb54p-1,-0x1.2e21dap-1,-0x1.2d8868p-1,-0x1.2ceefep-1,
+-0x1.2c559cp-1,-0x1.2bbc44p-1,-0x1.2b22f4p-1,-0x1.2a89acp-1,-0x1.29f06ep-1,
+-0x1.295738p-1,-0x1.28be0cp-1,-0x1.2824e8p-1,-0x1.278bdp-1,-0x1.26f2cp-1,
+-0x1.2659b8p-1,-0x1.25c0bcp-1,-0x1.2527c8p-1,-0x1.248eep-1,-0x1.23f6p-1,
+-0x1.235d2cp-1,-0x1.22c46p-1,-0x1.222bap-1,-0x1.2192ecp-1,-0x1.20fa4p-1,
+-0x1.2061ap-1,-0x1.1fc90cp-1,-0x1.1f3082p-1,-0x1.1e9804p-1,-0x1.1dff9p-1,
+-0x1.1d6728p-1,-0x1.1ccecap-1,-0x1.1c367ap-1,-0x1.1b9e34p-1,-0x1.1b05fap-1,
+-0x1.1a6dccp-1,-0x1.19d5acp-1,-0x1.193d96p-1,-0x1.18a58cp-1,-0x1.180d9p-1,
+-0x1.1775ap-1,-0x1.16ddbcp-1,-0x1.1645e4p-1,-0x1.15ae1cp-1,-0x1.15165ep-1,
+-0x1.147eaep-1,-0x1.13e70cp-1,-0x1.134f76p-1,-0x1.12b7eep-1,-0x1.122074p-1,
+-0x1.118908p-1,-0x1.10f1a8p-1,-0x1.105a58p-1,-0x1.0fc314p-1,-0x1.0f2bep-1,
+-0x1.0e94b8p-1,-0x1.0dfdap-1,-0x1.0d6696p-1,-0x1.0ccf9ap-1,-0x1.0c38aep-1,
+-0x1.0ba1dp-1,-0x1.0b0bp-1,-0x1.0a744p-1,-0x1.09dd9p-1,-0x1.0946ecp-1,
+-0x1.08b05ap-1,-0x1.0819d8p-1,-0x1.078364p-1,-0x1.06edp-1,-0x1.0656acp-1,
+-0x1.05c068p-1,-0x1.052a34p-1,-0x1.04940ep-1,-0x1.03fdfap-1,-0x1.0367f6p-1,
+-0x1.02d204p-1,-0x1.023c2p-1,-0x1.01a64ep-1,-0x1.01108cp-1,-0x1.007adcp-1,
+-0x1.ffca78p-2,-0x1.fe9f5ap-2,-0x1.fd745ep-2,-0x1.fc4986p-2,-0x1.fb1edp-2,
+-0x1.f9f43cp-2,-0x1.f8c9ccp-2,-0x1.f79f8p-2,-0x1.f67558p-2,-0x1.f54b5p-2,
+-0x1.f4217p-2,-0x1.f2f7b4p-2,-0x1.f1ce1ap-2,-0x1.f0a4a6p-2,-0x1.ef7b58p-2,
+-0x1.ee522cp-2,-0x1.ed2928p-2,-0x1.ec0048p-2,-0x1.ead78ep-2,-0x1.e9aefap-2,
+-0x1.e8868cp-2,-0x1.e75e44p-2,-0x1.e63624p-2,-0x1.e50e28p-2,-0x1.e3e654p-2,
+-0x1.e2bea8p-2,-0x1.e19724p-2,-0x1.e06fc4p-2,-0x1.df489p-2,-0x1.de218p-2,
+-0x1.dcfa9cp-2,-0x1.dbd3dcp-2,-0x1.daad48p-2,-0x1.d986dcp-2,-0x1.d86098p-2,
+-0x1.d73a7cp-2,-0x1.d6148cp-2,-0x1.d4eec4p-2,-0x1.d3c926p-2,-0x1.d2a3b2p-2,
+-0x1.d17e68p-2,-0x1.d05948p-2,-0x1.cf3454p-2,-0x1.ce0f88p-2,-0x1.cceae8p-2,
+-0x1.cbc674p-2,-0x1.caa22cp-2,-0x1.c97e0ep-2,-0x1.c85a1cp-2,-0x1.c73656p-2,
+-0x1.c612bcp-2,-0x1.c4ef4ep-2,-0x1.c3cc0cp-2,-0x1.c2a8f8p-2,-0x1.c1861p-2,
+-0x1.c06356p-2,-0x1.bf40c8p-2,-0x1.be1e68p-2,-0x1.bcfc36p-2,-0x1.bbda32p-2,
+-0x1.bab85cp-2,-0x1.b996b4p-2,-0x1.b87538p-2,-0x1.b753ecp-2,-0x1.b632dp-2,
+-0x1.b511e4p-2,-0x1.b3f124p-2,-0x1.b2d096p-2,-0x1.b1b036p-2,-0x1.b09006p-2,
+-0x1.af7006p-2,-0x1.ae5036p-2,-0x1.ad3096p-2,-0x1.ac1128p-2,-0x1.aaf1e8p-2,
+-0x1.a9d2dcp-2,-0x1.a8b4p-2,-0x1.a79554p-2,-0x1.a676d8p-2,-0x1.a5589p-2,
+-0x1.a43a7ap-2,-0x1.a31c94p-2,-0x1.a1fee4p-2,-0x1.a0e162p-2,-0x1.9fc414p-2,
+-0x1.9ea6f8p-2,-0x1.9d8a1p-2,-0x1.9c6d5cp-2,-0x1.9b50dap-2,-0x1.9a348cp-2,
+-0x1.99187p-2,-0x1.97fc88p-2,-0x1.96e0d6p-2,-0x1.95c558p-2,-0x1.94aa0cp-2,
+-0x1.938ef6p-2,-0x1.927414p-2,-0x1.915968p-2,-0x1.903efp-2,-0x1.8f24acp-2,
+-0x1.8e0aap-2,-0x1.8cf0c8p-2,-0x1.8bd726p-2,-0x1.8abdbap-2,-0x1.89a484p-2,
+-0x1.888b84p-2,-0x1.8772bcp-2,-0x1.865a28p-2,-0x1.8541ccp-2,-0x1.8429a8p-2,
+-0x1.8311b8p-2,-0x1.81fa02p-2,-0x1.80e284p-2,-0x1.7fcb3cp-2,-0x1.7eb42cp-2,
+-0x1.7d9d54p-2,-0x1.7c86b4p-2,-0x1.7b704cp-2,-0x1.7a5a2p-2,-0x1.794428p-2,
+-0x1.782e6cp-2,-0x1.7718e8p-2,-0x1.76039cp-2,-0x1.74ee8ap-2,-0x1.73d9b2p-2,
+-0x1.72c514p-2,-0x1.71b0bp-2,-0x1.709c84p-2,-0x1.6f8894p-2,-0x1.6e74dcp-2,
+-0x1.6d6162p-2,-0x1.6c4e2p-2,-0x1.6b3b1cp-2,-0x1.6a285p-2,-0x1.6915cp-2,
+-0x1.68036cp-2,-0x1.66f152p-2,-0x1.65df74p-2,-0x1.64cdd2p-2,-0x1.63bc6cp-2,
+-0x1.62ab44p-2,-0x1.619a56p-2,-0x1.6089a4p-2,-0x1.5f793p-2,-0x1.5e68fap-2,
+-0x1.5d59p-2,-0x1.5c4942p-2,-0x1.5b39c2p-2,-0x1.5a2a8p-2,-0x1.591b7ap-2,
+-0x1.580cb4p-2,-0x1.56fe2ap-2,-0x1.55efdep-2,-0x1.54e1d2p-2,-0x1.53d404p-2,
+-0x1.52c672p-2,-0x1.51b92p-2,-0x1.50ac0ep-2,-0x1.4f9f3cp-2,-0x1.4e92a6p-2,
+-0x1.4d8652p-2,-0x1.4c7a3cp-2,-0x1.4b6e66p-2,-0x1.4a62dp-2,-0x1.49577ap-2,
+-0x1.484c64p-2,-0x1.47418cp-2,-0x1.4636f8p-2,-0x1.452ca2p-2,-0x1.44228ep-2,
+-0x1.4318bap-2,-0x1.420f28p-2,-0x1.4105d6p-2,-0x1.3ffcc6p-2,-0x1.3ef3f8p-2,
+-0x1.3deb6ap-2,-0x1.3ce32p-2,-0x1.3bdb16p-2,-0x1.3ad34ep-2,-0x1.39cbcap-2,
+-0x1.38c486p-2,-0x1.37bd86p-2,-0x1.36b6c8p-2,-0x1.35b04ep-2,-0x1.34aa16p-2,
+-0x1.33a42p-2,-0x1.329e6ep-2,-0x1.3199p-2,-0x1.3093d6p-2,-0x1.2f8eeep-2,
+-0x1.2e8a4ap-2,-0x1.2d85ecp-2,-0x1.2c81dp-2,-0x1.2b7df8p-2,-0x1.2a7a66p-2,
+-0x1.297718p-2,-0x1.28740ep-2,-0x1.277148p-2,-0x1.266ec8p-2,-0x1.256c8ep-2,
+-0x1.246a98p-2,-0x1.2368e8p-2,-0x1.22677cp-2,-0x1.216658p-2,-0x1.206578p-2,
+-0x1.1f64dep-2,-0x1.1e648cp-2,-0x1.1d647ep-2,-0x1.1c64b6p-2,-0x1.1b6536p-2,
+-0x1.1a65fcp-2,-0x1.196708p-2,-0x1.18685cp-2,-0x1.1769f8p-2,-0x1.166bd8p-2,
+-0x1.156e02p-2,-0x1.147072p-2,-0x1.13732ap-2,-0x1.12762ap-2,-0x1.117972p-2,
+-0x1.107dp-2,-0x1.0f80d8p-2,-0x1.0e84f8p-2,-0x1.0d896p-2,-0x1.0c8e1p-2,
+-0x1.0b930ap-2,-0x1.0a984cp-2,-0x1.099dd6p-2,-0x1.08a3aap-2,-0x1.07a9c6p-2,
+-0x1.06b02cp-2,-0x1.05b6dcp-2,-0x1.04bdd4p-2,-0x1.03c518p-2,-0x1.02cca4p-2,
+-0x1.01d47ap-2,-0x1.00dc9ap-2,-0x1.ffca08p-3,-0x1.fddb7p-3,-0x1.fbed7p-3,
+-0x1.fa0002p-3,-0x1.f8132ap-3,-0x1.f626e8p-3,-0x1.f43b3cp-3,-0x1.f25026p-3,
+-0x1.f065a6p-3,-0x1.ee7bbcp-3,-0x1.ec9268p-3,-0x1.eaa9aep-3,-0x1.e8c188p-3,
+-0x1.e6d9fcp-3,-0x1.e4f308p-3,-0x1.e30caap-3,-0x1.e126e4p-3,-0x1.df41b8p-3,
+-0x1.dd5d24p-3,-0x1.db792ap-3,-0x1.d995c8p-3,-0x1.d7b3p-3,-0x1.d5d0d2p-3,
+-0x1.d3ef3ep-3,-0x1.d20e44p-3,-0x1.d02de4p-3,-0x1.ce4e1ep-3,-0x1.cc6ef4p-3,
+-0x1.ca9064p-3,-0x1.c8b27p-3,-0x1.c6d518p-3,-0x1.c4f85ap-3,-0x1.c31c3ap-3,
+-0x1.c140b4p-3,-0x1.bf65ccp-3,-0x1.bd8b82p-3,-0x1.bbb1d4p-3,-0x1.b9d8c2p-3,
+-0x1.b8004ep-3,-0x1.b62878p-3,-0x1.b4514p-3,-0x1.b27aa4p-3,-0x1.b0a4a8p-3,
+-0x1.aecf4cp-3,-0x1.acfa8cp-3,-0x1.ab266cp-3,-0x1.a952eap-3,-0x1.a78008p-3,
+-0x1.a5adc8p-3,-0x1.a3dc24p-3,-0x1.a20b22p-3,-0x1.a03acp-3,-0x1.9e6bp-3,
+-0x1.9c9bdep-3,-0x1.9acd5ep-3,-0x1.98ff8p-3,-0x1.973242p-3,-0x1.9565a6p-3,
+-0x1.9399acp-3,-0x1.91ce54p-3,-0x1.90039ep-3,-0x1.8e398ap-3,-0x1.8c7018p-3,
+-0x1.8aa74ap-3,-0x1.88df1ep-3,-0x1.871796p-3,-0x1.8550bp-3,-0x1.838a7p-3,
+-0x1.81c4d2p-3,-0x1.7fffd8p-3,-0x1.7e3b84p-3,-0x1.7c77d2p-3,-0x1.7ab4c6p-3,
+-0x1.78f26p-3,-0x1.77309cp-3,-0x1.756f8p-3,-0x1.73af08p-3,-0x1.71ef34p-3,
+-0x1.703008p-3,-0x1.6e7182p-3,-0x1.6cb3a2p-3,-0x1.6af668p-3,-0x1.6939d4p-3,
+-0x1.677de8p-3,-0x1.65c2a2p-3,-0x1.640804p-3,-0x1.624e0cp-3,-0x1.6094bcp-3,
+-0x1.5edc14p-3,-0x1.5d2414p-3,-0x1.5b6cbcp-3,-0x1.59b60ep-3,-0x1.580006p-3,
+-0x1.564aa8p-3,-0x1.5495f2p-3,-0x1.52e1e6p-3,-0x1.512e82p-3,-0x1.4f7bc8p-3,
+-0x1.4dc9b8p-3,-0x1.4c185p-3,-0x1.4a6794p-3,-0x1.48b782p-3,-0x1.470818p-3,
+-0x1.45595cp-3,-0x1.43ab48p-3,-0x1.41fdep-3,-0x1.405122p-3,-0x1.3ea51p-3,
+-0x1.3cf9a8p-3,-0x1.3b4eecp-3,-0x1.39a4dcp-3,-0x1.37fb78p-3,-0x1.3652c2p-3,
+-0x1.34aab6p-3,-0x1.330356p-3,-0x1.315ca4p-3,-0x1.2fb69ep-3,-0x1.2e1144p-3,
+-0x1.2c6c98p-3,-0x1.2ac898p-3,-0x1.292548p-3,-0x1.2782a4p-3,-0x1.25e0aep-3,
+-0x1.243f64p-3,-0x1.229ecap-3,-0x1.20fedep-3,-0x1.1f5fap-3,-0x1.1dc112p-3,
+-0x1.1c233p-3,-0x1.1a86p-3,-0x1.18e97cp-3,-0x1.174da8p-3,-0x1.15b284p-3,
+-0x1.14181p-3,-0x1.127e4ap-3,-0x1.10e534p-3,-0x1.0f4ccep-3,-0x1.0db51ap-3,
+-0x1.0c1e14p-3,-0x1.0a87cp-3,-0x1.08f21ap-3,-0x1.075d28p-3,-0x1.05c8e4p-3,
+-0x1.043552p-3,-0x1.02a272p-3,-0x1.011042p-3,-0x1.fefd88p-4,-0x1.fbdbfp-4,
+-0x1.f8bbbap-4,-0x1.f59ce8p-4,-0x1.f27f7cp-4,-0x1.ef6372p-4,-0x1.ec48ccp-4,
+-0x1.e92f8cp-4,-0x1.e617b2p-4,-0x1.e3013cp-4,-0x1.dfec2cp-4,-0x1.dcd884p-4,
+-0x1.d9c64p-4,-0x1.d6b562p-4,-0x1.d3a5ecp-4,-0x1.d097dcp-4,-0x1.cd8b36p-4,
+-0x1.ca7ff4p-4,-0x1.c7761cp-4,-0x1.c46dacp-4,-0x1.c166a4p-4,-0x1.be6106p-4,
+-0x1.bb5cdp-4,-0x1.b85a02p-4,-0x1.b558ap-4,-0x1.b258a6p-4,-0x1.af5a16p-4,
+-0x1.ac5cfp-4,-0x1.a96134p-4,-0x1.a666e4p-4,-0x1.a36dfep-4,-0x1.a07684p-4,
+-0x1.9d8074p-4,-0x1.9a8bd2p-4,-0x1.97989ap-4,-0x1.94a6dp-4,-0x1.91b67p-4,
+-0x1.8ec78p-4,-0x1.8bd9fap-4,-0x1.88ede2p-4,-0x1.860338p-4,-0x1.8319fap-4,
+-0x1.80322cp-4,-0x1.7d4bcap-4,-0x1.7a66d8p-4,-0x1.778352p-4,-0x1.74a13cp-4,
+-0x1.71c096p-4,-0x1.6ee16p-4,-0x1.6c0398p-4,-0x1.69273ep-4,-0x1.664c56p-4,
+-0x1.6372dep-4,-0x1.609ad6p-4,-0x1.5dc43ep-4,-0x1.5aef16p-4,-0x1.581b6p-4,
+-0x1.55491cp-4,-0x1.527848p-4,-0x1.4fa8e6p-4,-0x1.4cdaf6p-4,-0x1.4a0e78p-4,
+-0x1.47436cp-4,-0x1.4479dp-4,-0x1.41b1aap-4,-0x1.3eeaf6p-4,-0x1.3c25b4p-4,
+-0x1.3961e6p-4,-0x1.369f8ap-4,-0x1.33dea2p-4,-0x1.311f2ep-4,-0x1.2e612ep-4,
+-0x1.2ba4a2p-4,-0x1.28e98cp-4,-0x1.262fe8p-4,-0x1.2377bap-4,-0x1.20c1p-4,
+-0x1.1e0bbcp-4,-0x1.1b57ecp-4,-0x1.18a592p-4,-0x1.15f4acp-4,-0x1.13453ep-4,
+-0x1.109744p-4,-0x1.0deac2p-4,-0x1.0b3fb6p-4,-0x1.08962p-4,-0x1.05eep-4,
+-0x1.034756p-4,-0x1.00a224p-4,-0x1.fbfcd2p-5,-0x1.f6b84cp-5,-0x1.f176b2p-5,
+-0x1.ec3808p-5,-0x1.e6fc4ep-5,-0x1.e1c384p-5,-0x1.dc8da8p-5,-0x1.d75abep-5,
+-0x1.d22ac4p-5,-0x1.ccfdbcp-5,-0x1.c7d3a4p-5,-0x1.c2ac7cp-5,-0x1.bd8848p-5,
+-0x1.b86706p-5,-0x1.b348b6p-5,-0x1.ae2d58p-5,-0x1.a914eep-5,-0x1.a3ff78p-5,
+-0x1.9eecf4p-5,-0x1.99dd64p-5,-0x1.94d0c8p-5,-0x1.8fc72p-5,-0x1.8ac06cp-5,
+-0x1.85bcaep-5,-0x1.80bbe4p-5,-0x1.7bbe1p-5,-0x1.76c332p-5,-0x1.71cb48p-5,
+-0x1.6cd656p-5,-0x1.67e45ap-5,-0x1.62f554p-5,-0x1.5e0944p-5,-0x1.59202cp-5,
+-0x1.543a0cp-5,-0x1.4f56e2p-5,-0x1.4a76bp-5,-0x1.459976p-5,-0x1.40bf34p-5,
+-0x1.3be7eap-5,-0x1.371398p-5,-0x1.32424p-5,-0x1.2d73ep-5,-0x1.28a87ap-5,
+-0x1.23e00cp-5,-0x1.1f1a9ap-5,-0x1.1a582p-5,-0x1.1598ap-5,-0x1.10dc1ap-5,
+-0x1.0c228ep-5,-0x1.076bfcp-5,-0x1.02b866p-5,-0x1.fc0f94p-6,-0x1.f2b454p-6,
+-0x1.e95f08p-6,-0x1.e00fb4p-6,-0x1.d6c656p-6,-0x1.cd82fp-6,-0x1.c44582p-6,
+-0x1.bb0e0ap-6,-0x1.b1dc8cp-6,-0x1.a8b106p-6,-0x1.9f8b7ap-6,-0x1.966be6p-6,
+-0x1.8d524ap-6,-0x1.843eaap-6,-0x1.7b3102p-6,-0x1.722956p-6,-0x1.6927a4p-6,
+-0x1.602becp-6,-0x1.57363p-6,-0x1.4e466ep-6,-0x1.455ca8p-6,-0x1.3c78dep-6,
+-0x1.339b0ep-6,-0x1.2ac33cp-6,-0x1.21f166p-6,-0x1.19258cp-6,-0x1.105fbp-6,
+-0x1.079fdp-6,-0x1.fdcbdap-7,-0x1.ec640ep-7,-0x1.db083ep-7,-0x1.c9b868p-7,
+-0x1.b8749p-7,-0x1.a73cb2p-7,-0x1.9610dp-7,-0x1.84f0ecp-7,-0x1.73dd02p-7,
+-0x1.62d518p-7,-0x1.51d92ap-7,-0x1.40e93ap-7,-0x1.300546p-7,-0x1.1f2d52p-7,
+-0x1.0e615cp-7,-0x1.fb42c8p-8,-0x1.d9dad4p-8,-0x1.b88aep-8,-0x1.9752e8p-8,
+-0x1.7632eep-8,-0x1.552af4p-8,-0x1.343af8p-8,-0x1.1362fap-8,-0x1.e545fap-9,
+-0x1.a3f5fcp-9,-0x1.62d5fep-9,-0x1.21e6p-9,-0x1.c24cp-10,-0x1.412cp-10,
+-0x1.80d8p-11,-0x1.003p-12,0x1.ffap-13,0x1.7f28p-11,0x1.3ed4p-10,0x1.bdb4p-10,
+0x1.1e1ap-9,0x1.5d2a02p-9,0x1.9c0a04p-9,0x1.daba06p-9,0x1.0c9d06p-8,
+0x1.2bc508p-8,0x1.4ad50cp-8,0x1.69cd12p-8,0x1.88ad18p-8,0x1.a7752p-8,
+0x1.c6252cp-8,0x1.e4bd38p-8,0x1.019ea4p-7,0x1.10d2aep-7,0x1.1ffabap-7,
+0x1.2f16c6p-7,0x1.3e26d6p-7,0x1.4d2ae8p-7,0x1.5c22fep-7,0x1.6b0f14p-7,
+0x1.79ef3p-7,0x1.88c34ep-7,0x1.978b7p-7,0x1.a64798p-7,0x1.b4f7c2p-7,
+0x1.c39bf2p-7,0x1.d23426p-7,0x1.e0c06p-7,0x1.ef40ap-7,0x1.fdb4e8p-7,
+0x1.060e9ap-6,0x1.0d3cc4p-6,0x1.1464f2p-6,0x1.1b8722p-6,0x1.22a358p-6,
+0x1.29b992p-6,0x1.30c9dp-6,0x1.37d414p-6,0x1.3ed85cp-6,0x1.45d6aap-6,
+0x1.4ccefep-6,0x1.53c156p-6,0x1.5aadb6p-6,0x1.61941ap-6,0x1.687486p-6,
+0x1.6f4efap-6,0x1.762374p-6,0x1.7cf1f6p-6,0x1.83ba7ep-6,0x1.8a7d1p-6,
+0x1.9139aap-6,0x1.97f04cp-6,0x1.9ea0f8p-6,0x1.a54bacp-6,0x1.abf06cp-6,
+0x1.b28f34p-6,0x1.b92806p-6,0x1.bfbae4p-6,0x1.c647cep-6,0x1.cccec2p-6,
+0x1.d34fc2p-6,0x1.d9cacep-6,0x1.e03fe6p-6,0x1.e6af0cp-6,0x1.ed184p-6,
+0x1.f37b8p-6,0x1.f9d8dp-6,0x1.001816p-5,0x1.0340ccp-5,0x1.06668ap-5,
+0x1.09895p-5,0x1.0ca91ep-5,0x1.0fc5f4p-5,0x1.12dfd4p-5,0x1.15f6bcp-5,
+0x1.190aacp-5,0x1.1c1ba6p-5,0x1.1f29aap-5,0x1.2234b8p-5,0x1.253ccep-5,
+0x1.2841fp-5,0x1.2b441cp-5,0x1.2e4352p-5,0x1.313f94p-5,0x1.3438ep-5,
+0x1.372f38p-5,0x1.3a229cp-5,0x1.3d130cp-5,0x1.400088p-5,0x1.42eb12p-5,
+0x1.45d2a8p-5,0x1.48b74ap-5,0x1.4b98fap-5,0x1.4e77b8p-5,0x1.515384p-5,
+0x1.542c5cp-5,0x1.570244p-5,0x1.59d53cp-5,0x1.5ca542p-5,0x1.5f7258p-5,
+0x1.623c7cp-5,0x1.6503b2p-5,0x1.67c7f8p-5,0x1.6a894ep-5,0x1.6d47b4p-5,
+0x1.70032ep-5,0x1.72bbb8p-5,0x1.757154p-5,0x1.782402p-5,0x1.7ad3c2p-5,
+0x1.7d8096p-5,0x1.802a7cp-5,0x1.82d176p-5,0x1.857584p-5,0x1.8816a6p-5,
+0x1.8ab4dep-5,0x1.8d5028p-5,0x1.8fe88ap-5,0x1.927ep-5,0x1.95108ep-5,
+0x1.97a03p-5,0x1.9a2ceap-5,0x1.9cb6bcp-5,0x1.9f3da4p-5,0x1.a1c1a4p-5,
+0x1.a442bcp-5,0x1.a6c0ecp-5,0x1.a93c36p-5,0x1.abb498p-5,0x1.ae2a16p-5,
+0x1.b09cacp-5,0x1.b30c5ep-5,0x1.b5792ap-5,0x1.b7e312p-5,0x1.ba4a14p-5,
+0x1.bcae34p-5,0x1.bf0f7p-5,0x1.c16dc8p-5,0x1.c3c94p-5,0x1.c621d4p-5,
+0x1.c87784p-5,0x1.caca56p-5,0x1.cd1a44p-5,0x1.cf6754p-5,0x1.d1b184p-5,
+0x1.d3f8d2p-5,0x1.d63d42p-5,0x1.d87ed4p-5,0x1.dabd86p-5,0x1.dcf95cp-5,
+0x1.df3252p-5,0x1.e1686cp-5,0x1.e39baap-5,0x1.e5cc0cp-5,0x1.e7f992p-5,
+0x1.ea243cp-5,0x1.ec4c0cp-5,0x1.ee7102p-5,0x1.f0931ep-5,0x1.f2b26p-5,
+0x1.f4ceccp-5,0x1.f6e85cp-5,0x1.f8ff16p-5,0x1.fb12f8p-5,0x1.fd2404p-5,
+0x1.ff3238p-5,0x1.009eccp-4,0x1.01a31p-4,0x1.02a5eap-4,0x1.03a75ap-4,
+0x1.04a76p-4,0x1.05a5fep-4,0x1.06a33p-4,0x1.079efap-4,0x1.08995cp-4,
+0x1.099254p-4,0x1.0a89e4p-4,0x1.0b800cp-4,0x1.0c74cap-4,0x1.0d6824p-4,
+0x1.0e5a14p-4,0x1.0f4a9ep-4,0x1.1039cp-4,0x1.11277cp-4,0x1.1213d4p-4,
+0x1.12fec4p-4,0x1.13e84ep-4,0x1.14d074p-4,0x1.15b734p-4,0x1.169c8ep-4,
+0x1.178084p-4,0x1.186318p-4,0x1.194446p-4,0x1.1a241p-4,0x1.1b0278p-4,
+0x1.1bdf7cp-4,0x1.1cbb1cp-4,0x1.1d955cp-4,0x1.1e6e38p-4,0x1.1f45b2p-4,
+0x1.201bcap-4,0x1.20f082p-4,0x1.21c3d8p-4,0x1.2295cep-4,0x1.236662p-4,
+0x1.243598p-4,0x1.25036cp-4,0x1.25cfe2p-4,0x1.269af8p-4,0x1.2764bp-4,
+0x1.282d08p-4,0x1.28f402p-4,0x1.29b9ap-4,0x1.2a7ddcp-4,0x1.2b40cp-4,
+0x1.2c0244p-4,0x1.2cc26cp-4,0x1.2d8136p-4,0x1.2e3ea4p-4,0x1.2efab8p-4,
+0x1.2fb57p-4,0x1.306ecep-4,0x1.3126dp-4,0x1.31dd78p-4,0x1.3292c4p-4,
+0x1.3346b8p-4,0x1.33f954p-4,0x1.34aa94p-4,0x1.355a7cp-4,0x1.36090ep-4,
+0x1.36b646p-4,0x1.376226p-4,0x1.380cbp-4,0x1.38b5ep-4,0x1.395dbcp-4,
+0x1.3a0442p-4,0x1.3aa97p-4,0x1.3b4d4ap-4,0x1.3befcep-4,0x1.3c90fcp-4,
+0x1.3d30d8p-4,0x1.3dcf5ep-4,0x1.3e6c9p-4,0x1.3f087p-4,0x1.3fa2fcp-4,
+0x1.403c34p-4,0x1.40d41cp-4,0x1.416abp-4,0x1.41fff4p-4,0x1.4293e4p-4,
+0x1.432686p-4,0x1.43b7d6p-4,0x1.4447d6p-4,0x1.44d686p-4,0x1.4563e8p-4,
+0x1.45eff8p-4,0x1.467abcp-4,0x1.47043p-4,0x1.478c58p-4,0x1.48133p-4,
+0x1.4898bcp-4,0x1.491cfcp-4,0x1.499ffp-4,0x1.4a2196p-4,0x1.4aa1f2p-4,
+0x1.4b2102p-4,0x1.4b9ec8p-4,0x1.4c1b42p-4,0x1.4c9674p-4,0x1.4d105cp-4,
+0x1.4d88f8p-4,0x1.4e004ep-4,0x1.4e765cp-4,0x1.4eeb2p-4,0x1.4f5e9ep-4,
+0x1.4fd0d4p-4,0x1.5041c4p-4,0x1.50b16cp-4,0x1.511fdp-4,0x1.518cecp-4,
+0x1.51f8c4p-4,0x1.526358p-4,0x1.52cca8p-4,0x1.5334b4p-4,0x1.539b7cp-4,
+0x1.5401p-4,0x1.546544p-4,0x1.54c844p-4,0x1.552a02p-4,0x1.558a8p-4,
+0x1.55e9bcp-4,0x1.5647b6p-4,0x1.56a472p-4,0x1.56ffeep-4,0x1.575a2cp-4,
+0x1.57b328p-4,0x1.580ae8p-4,0x1.58616ap-4,0x1.58b6bp-4,0x1.590ab6p-4,
+0x1.595d82p-4,0x1.59af1p-4,0x1.59ff64p-4,0x1.5a4e7cp-4,0x1.5a9c5ap-4,
+0x1.5ae8fcp-4,0x1.5b3466p-4,0x1.5b7e96p-4,0x1.5bc78cp-4,0x1.5c0f4cp-4,
+0x1.5c55d2p-4,0x1.5c9b2p-4,0x1.5cdf38p-4,0x1.5d221ap-4,0x1.5d63c4p-4,
+0x1.5da43ap-4,0x1.5de37ap-4,0x1.5e2184p-4,0x1.5e5e5cp-4,0x1.5e99fep-4,
+0x1.5ed46ep-4,0x1.5f0dacp-4,0x1.5f45b6p-4,0x1.5f7c8ep-4,0x1.5fb236p-4,
+0x1.5fe6acp-4,0x1.6019f2p-4,0x1.604c08p-4,0x1.607ceep-4,0x1.60aca4p-4,
+0x1.60db2ep-4,0x1.610888p-4,0x1.6134b4p-4,0x1.615fb4p-4,0x1.618988p-4,
+0x1.61b23p-4,0x1.61d9acp-4,0x1.61fffcp-4,0x1.622522p-4,0x1.62491ep-4,
+0x1.626bfp-4,0x1.628d9ap-4,0x1.62ae1ap-4,0x1.62cd74p-4,0x1.62eba4p-4,
+0x1.6308aep-4,0x1.632492p-4,0x1.633f5p-4,0x1.6358e8p-4,0x1.63715ap-4,
+0x1.6388a8p-4,0x1.639ed4p-4,0x1.63b3dap-4,0x1.63c7bep-4,0x1.63da8p-4,
+0x1.63ec2p-4,0x1.63fcap-4,0x1.640bfep-4,0x1.641a3ap-4,0x1.642758p-4,
+0x1.643358p-4,0x1.643e38p-4,0x1.6447f8p-4,0x1.64509cp-4,0x1.645824p-4,
+0x1.645e8ep-4,0x1.6463dcp-4,0x1.64681p-4,0x1.646b28p-4,0x1.646d26p-4,
+0x1.646e0ap-4,0x1.646dd4p-4,0x1.646c86p-4,0x1.646a2p-4,0x1.6466a2p-4,
+0x1.64620cp-4,0x1.645c62p-4,0x1.6455ap-4,0x1.644dcap-4,0x1.6444dep-4,
+0x1.643adep-4,0x1.642fcap-4,0x1.6423a2p-4,0x1.64166ap-4,0x1.64081ep-4,
+0x1.63f8c2p-4,0x1.63e854p-4,0x1.63d6d6p-4,0x1.63c448p-4,0x1.63b0aap-4,
+0x1.639bfep-4,0x1.638646p-4,0x1.636f7ep-4,0x1.6357aap-4,0x1.633ecap-4,
+0x1.6324dep-4,0x1.6309e8p-4,0x1.62ede6p-4,0x1.62d0dap-4,0x1.62b2c6p-4,
+0x1.6293a8p-4,0x1.627382p-4,0x1.625256p-4,0x1.62302p-4,0x1.620ce6p-4,
+0x1.61e8a6p-4,0x1.61c36p-4,0x1.619d16p-4,0x1.6175c8p-4,0x1.614d76p-4,
+0x1.612422p-4,0x1.60f9ccp-4,0x1.60ce74p-4,0x1.60a21ap-4,0x1.6074c2p-4,
+0x1.604668p-4,0x1.60171p-4,0x1.5fe6bap-4,0x1.5fb566p-4,0x1.5f8314p-4,
+0x1.5f4fc6p-4,0x1.5f1b7cp-4,0x1.5ee636p-4,0x1.5eaff4p-4,0x1.5e78bap-4,
+0x1.5e4086p-4,0x1.5e0758p-4,0x1.5dcd34p-4,0x1.5d9218p-4,0x1.5d5604p-4,
+0x1.5d18f8p-4,0x1.5cdaf8p-4,0x1.5c9c04p-4,0x1.5c5c18p-4,0x1.5c1b3cp-4,
+0x1.5bd96cp-4,0x1.5b96a8p-4,0x1.5b52f4p-4,0x1.5b0e4cp-4,0x1.5ac8b8p-4,
+0x1.5a823p-4,0x1.5a3ab8p-4,0x1.59f254p-4,0x1.59a904p-4,0x1.595ec4p-4,
+0x1.591394p-4,0x1.58c77cp-4,0x1.587a78p-4,0x1.582c8cp-4,0x1.57ddbp-4,
+0x1.578dfp-4,0x1.573d44p-4,0x1.56ebbp-4,0x1.569938p-4,0x1.5645d8p-4,
+0x1.55f19p-4,0x1.559c64p-4,0x1.554654p-4,0x1.54ef5cp-4,0x1.549784p-4,
+0x1.543eccp-4,0x1.53e52cp-4,0x1.538abp-4,0x1.532f5p-4,0x1.52d31p-4,
+0x1.5275f4p-4,0x1.5217f8p-4,0x1.51b91cp-4,0x1.515964p-4,0x1.50f8dp-4,
+0x1.50976p-4,0x1.503514p-4,0x1.4fd1fp-4,0x1.4f6dfp-4,0x1.4f0918p-4,
+0x1.4ea368p-4,0x1.4e3cep-4,0x1.4dd584p-4,0x1.4d6d4cp-4,0x1.4d0444p-4,
+0x1.4c9a64p-4,0x1.4c2fbp-4,0x1.4bc428p-4,0x1.4b57dp-4,0x1.4aeaa4p-4,
+0x1.4a7ca8p-4,0x1.4a0ddcp-4,0x1.499e3cp-4,0x1.492ddp-4,0x1.48bc98p-4,
+0x1.484a9p-4,0x1.47d7bcp-4,0x1.47641cp-4,0x1.46efacp-4,0x1.467a78p-4,
+0x1.460474p-4,0x1.458dacp-4,0x1.451618p-4,0x1.449dbcp-4,0x1.44249cp-4,
+0x1.43aab4p-4,0x1.433004p-4,0x1.42b494p-4,0x1.42385cp-4,0x1.41bb64p-4,
+0x1.413da8p-4,0x1.40bf28p-4,0x1.403fe8p-4,0x1.3fbfe8p-4,0x1.3f3f28p-4,
+0x1.3ebda8p-4,0x1.3e3b6cp-4,0x1.3db874p-4,0x1.3d34bcp-4,0x1.3cb04cp-4,
+0x1.3c2b1cp-4,0x1.3ba534p-4,0x1.3b1e94p-4,0x1.3a9738p-4,0x1.3a0f28p-4,
+0x1.39865cp-4,0x1.38fcdcp-4,0x1.3872a8p-4,0x1.37e7bcp-4,0x1.375c2p-4,
+0x1.36cfccp-4,0x1.3642c8p-4,0x1.35b51p-4,0x1.3526a8p-4,0x1.34979p-4,
+0x1.3407c8p-4,0x1.33775p-4,0x1.32e62cp-4,0x1.32545cp-4,0x1.31c1dcp-4,
+0x1.312eb4p-4,0x1.309adcp-4,0x1.30066p-4,0x1.2f7138p-4,0x1.2edb68p-4,
+0x1.2e44fp-4,0x1.2daddp-4,0x1.2d160cp-4,0x1.2c7dap-4,0x1.2be494p-4,0x1.2b4aep-4,
+0x1.2ab08cp-4,0x1.2a1594p-4,0x1.2979fcp-4,0x1.28ddc4p-4,0x1.2840ecp-4,
+0x1.27a374p-4,0x1.27056p-4,0x1.2666acp-4,0x1.25c75cp-4,0x1.252774p-4,
+0x1.2486fp-4,0x1.23e5dp-4,0x1.234418p-4,0x1.22a1c8p-4,0x1.21feep-4,0x1.215b6p-4,
+0x1.20b74cp-4,0x1.2012a4p-4,0x1.1f6d68p-4,0x1.1ec798p-4,0x1.1e2134p-4,
+0x1.1d7a4p-4,0x1.1cd2bcp-4,0x1.1c2aa4p-4,0x1.1b82p-4,0x1.1ad8dp-4,0x1.1a2f1p-4,
+0x1.1984cp-4,0x1.18d9e8p-4,0x1.182e88p-4,0x1.178298p-4,0x1.16d624p-4,
+0x1.162924p-4,0x1.157b9cp-4,0x1.14cd9p-4,0x1.141fp-4,0x1.136fe8p-4,
+0x1.12c04cp-4,0x1.12102cp-4,0x1.115f8cp-4,0x1.10ae68p-4,0x1.0ffcc4p-4,
+0x1.0f4aa4p-4,0x1.0e98p-4,0x1.0de4ep-4,0x1.0d3144p-4,0x1.0c7d2cp-4,
+0x1.0bc898p-4,0x1.0b1388p-4,0x1.0a5ep-4,0x1.09a7fcp-4,0x1.08f184p-4,
+0x1.083a94p-4,0x1.07832cp-4,0x1.06cb5p-4,0x1.0613p-4,0x1.055a3cp-4,
+0x1.04a104p-4,0x1.03e75cp-4,0x1.032d44p-4,0x1.0272bcp-4,0x1.01b7c4p-4,
+0x1.00fc6p-4,0x1.00408cp-4,0x1.ff0898p-5,0x1.fd8f4p-5,0x1.fc1518p-5,
+0x1.fa9a18p-5,0x1.f91e48p-5,0x1.f7a1bp-5,0x1.f6244p-5,0x1.f4a608p-5,0x1.f327p-5,
+0x1.f1a738p-5,0x1.f026a8p-5,0x1.eea55p-5,0x1.ed2338p-5,0x1.eba058p-5,
+0x1.ea1ccp-5,0x1.e89868p-5,0x1.e71358p-5,0x1.e58d88p-5,0x1.e40708p-5,
+0x1.e27fdp-5,0x1.e0f7ep-5,0x1.df6f4p-5,0x1.dde5fp-5,0x1.dc5bfp-5,0x1.dad14p-5,
+0x1.d945fp-5,0x1.d7b9fp-5,0x1.d62d4p-5,0x1.d49ffp-5,0x1.d3121p-5,0x1.d1837p-5,
+0x1.cff44p-5,0x1.ce648p-5,0x1.ccd41p-5,0x1.cb431p-5,0x1.c9b17p-5,0x1.c81f4p-5,
+0x1.c68c8p-5,0x1.c4f92p-5,0x1.c3653p-5,0x1.c1d0cp-5,0x1.c03bcp-5,0x1.bea63p-5,
+0x1.bd102p-5,0x1.bb798p-5,0x1.b9e26p-5,0x1.b84abp-5,0x1.b6b29p-5,0x1.b519fp-5,
+0x1.b380cp-5,0x1.b1e73p-5,0x1.b04d1p-5,0x1.aeb28p-5,0x1.ad178p-5,0x1.ab7c1p-5,
+0x1.a9e02p-5,0x1.a843dp-5,0x1.a6a71p-5,0x1.a509ep-5,0x1.a36c4p-5,0x1.a1ce4p-5,
+0x1.a02fep-5,0x1.9e911p-5,0x1.9cf1ep-5,0x1.9b526p-5,0x1.99b27p-5,0x1.98123p-5,
+0x1.96719p-5,0x1.94d09p-5,0x1.932f5p-5,0x1.918dbp-5,0x1.8febcp-5,0x1.8e498p-5,
+0x1.8ca6fp-5,0x1.8b041p-5,0x1.8960fp-5,0x1.87bd8p-5,0x1.8619dp-5,0x1.8475ep-5,
+0x1.82d1bp-5,0x1.812d3p-5,0x1.7f888p-5,0x1.7de39p-5,0x1.7c3e7p-5,0x1.7a991p-5,
+0x1.78f37p-5,0x1.774dbp-5,0x1.75a7bp-5,0x1.74019p-5,0x1.725b4p-5,0x1.70b4cp-5,
+0x1.6f0e1p-5,0x1.6d674p-5,0x1.6bc05p-5,0x1.6a193p-5,0x1.6872p-5,0x1.66caap-5,
+0x1.65233p-5,0x1.637bap-5,0x1.61d4p-5,0x1.602c4p-5,0x1.5e847p-5,0x1.5cdc9p-5,
+0x1.5b34ap-5,0x1.598cap-5,0x1.57e49p-5,0x1.563c8p-5,0x1.54946p-5,0x1.52ec4p-5,
+0x1.51441p-5,0x1.4f9bfp-5,0x1.4df3cp-5,0x1.4c4bap-5,0x1.4aa38p-5,0x1.48fb7p-5,
+0x1.47536p-5,0x1.45ab6p-5,0x1.44037p-5,0x1.425b8p-5,0x1.40b3bp-5,0x1.3f0bfp-5,
+0x1.3d645p-5,0x1.3bbccp-5,0x1.3a154p-5,0x1.386dfp-5,0x1.36c6bp-5,0x1.351fap-5,
+0x1.3378ap-5,0x1.31d1dp-5,0x1.302b3p-5,0x1.2e84bp-5,0x1.2cde6p-5,0x1.2b383p-5,
+0x1.29924p-5,0x1.27ec8p-5,0x1.2646fp-5,0x1.24a1ap-5,0x1.22fc8p-5,0x1.2157ap-5,
+0x1.1fb3p-5,0x1.1e0e9p-5,0x1.1c6a7p-5,0x1.1ac69p-5,0x1.1923p-5,0x1.177fbp-5,
+0x1.15dcap-5,0x1.1439fp-5,0x1.12978p-5,0x1.10f57p-5,0x1.0f53bp-5,0x1.0db24p-5,
+0x1.0c112p-5,0x1.0a707p-5,0x1.08d01p-5,0x1.07301p-5,0x1.05907p-5,0x1.03f13p-5,
+0x1.02526p-5,0x1.00b3fp-5,0x1.fe2bep-6,0x1.faf0ap-6,0x1.f7b66p-6,0x1.f47cep-6,
+0x1.f1446p-6,0x1.ee0ccp-6,0x1.ead62p-6,0x1.e7a06p-6,0x1.e46bap-6,0x1.e137ep-6,
+0x1.de05p-6,0x1.dad36p-6,0x1.d7a2ap-6,0x1.d473p-6,0x1.d1448p-6,0x1.ce17p-6,
+0x1.caeaap-6,0x1.c7bf8p-6,0x1.c4956p-6,0x1.c16c8p-6,0x1.be44ep-6,0x1.bb1e6p-6,
+0x1.b7f92p-6,0x1.b4d5p-6,0x1.b1b24p-6,0x1.ae90cp-6,0x1.ab70ap-6,0x1.a851cp-6,
+0x1.a5344p-6,0x1.a218p-6,0x1.9efd2p-6,0x1.9be3cp-6,0x1.98cbcp-6,0x1.95b52p-6,
+0x1.92ap-6,0x1.8f8c4p-6,0x1.8c7a2p-6,0x1.89696p-6,0x1.865a2p-6,0x1.834c8p-6,
+0x1.80406p-6,0x1.7d35ep-6,0x1.7a2cep-6,0x1.7725ap-6,0x1.741fep-6,0x1.711bep-6,
+0x1.6e198p-6,0x1.6b18cp-6,0x1.6819cp-6,0x1.651c8p-6,0x1.6221p-6,0x1.5f274p-6,
+0x1.5c2f4p-6,0x1.5939p-6,0x1.5644ap-6,0x1.53522p-6,0x1.50618p-6,0x1.4d72ap-6,
+0x1.4a85cp-6,0x1.479acp-6,0x1.44b1ap-6,0x1.41ca8p-6,0x1.3ee56p-6,0x1.3c024p-6,
+0x1.39212p-6,0x1.3642p-6,0x1.3364ep-6,0x1.3089ep-6,0x1.2db1p-6,0x1.2ada2p-6,
+0x1.28056p-6,0x1.2532ep-6,0x1.22628p-6,0x1.1f944p-6,0x1.1cc84p-6,0x1.19fe8p-6,
+0x1.1736ep-6,0x1.1471ap-6,0x1.11aeap-6,0x1.0eedep-6,0x1.0c2f8p-6,0x1.09736p-6,
+0x1.06b9ap-6,0x1.04026p-6,0x1.014d6p-6,0x1.fd35cp-7,0x1.f7d58p-7,0x1.f27a4p-7,
+0x1.ed24p-7,0x1.e7d28p-7,0x1.e2864p-7,0x1.dd3fp-7,0x1.d7fccp-7,0x1.d2bfcp-7,
+0x1.cd88p-7,0x1.c8558p-7,0x1.c3284p-7,0x1.be004p-7,0x1.b8dd8p-7,0x1.b3c04p-7,
+0x1.aea84p-7,0x1.a996p-7,0x1.a489p-7,0x1.9f81cp-7,0x1.9a7fcp-7,0x1.9583cp-7,
+0x1.908d4p-7,0x1.8b9c8p-7,0x1.86b18p-7,0x1.81cc4p-7,0x1.7ceccp-7,0x1.78134p-7,
+0x1.733f8p-7,0x1.6e71cp-7,0x1.69aap-7,0x1.64e88p-7,0x1.602ccp-7,0x1.5b774p-7,
+0x1.56c8p-7,0x1.521ecp-7,0x1.4d7bcp-7,0x1.48df4p-7,0x1.4448cp-7,0x1.3fb8cp-7,
+0x1.3b2f4p-7,0x1.36acp-7,0x1.322f4p-7,0x1.2db94p-7,0x1.29498p-7,0x1.24e08p-7,
+0x1.207e4p-7,0x1.1c228p-7,0x1.17cd8p-7,0x1.137f4p-7,0x1.0f38p-7,0x1.0af78p-7,
+0x1.06bdcp-7,0x1.028bp-7,0x1.fcbe8p-8,0x1.f4758p-8,0x1.ec3ap-8,0x1.e40dp-8,
+0x1.dbeep-8,0x1.d3dd8p-8,0x1.cbdb8p-8,0x1.c3e8p-8,0x1.bc03p-8,0x1.b42dp-8,
+0x1.ac658p-8,0x1.a4adp-8,0x1.9d038p-8,0x1.9569p-8,0x1.8ddd8p-8,0x1.86618p-8,
+0x1.7ef48p-8,0x1.7797p-8,0x1.7049p-8,0x1.690a8p-8,0x1.61dcp-8,0x1.5abc8p-8,
+0x1.53ad8p-8,0x1.4caep-8,0x1.45be8p-8,0x1.3edfp-8,0x1.381p-8,0x1.3151p-8,
+0x1.2aa2p-8,0x1.2404p-8,0x1.1d76p-8,0x1.16f9p-8,0x1.108c8p-8,0x1.0a308p-8,
+0x1.03e58p-8,0x1.fb57p-9,0x1.ef05p-9,0x1.e2d5p-9,0x1.d6c7p-9,0x1.cadcp-9,
+0x1.bf14p-9,0x1.b36fp-9,0x1.a7ecp-9,0x1.9c8dp-9,0x1.9152p-9,0x1.863ap-9,
+0x1.7b45p-9,0x1.7075p-9,0x1.65c9p-9,0x1.5b41p-9,0x1.50ddp-9,0x1.469ep-9,
+0x1.3c84p-9,0x1.328fp-9,0x1.28bfp-9,0x1.1f14p-9,0x1.158fp-9,0x1.0c3p-9,
+0x1.02f7p-9,0x1.f3c6p-10,0x1.e1ecp-10,0x1.d05ep-10,0x1.bf1ep-10,0x1.ae2cp-10,
+0x1.9d86p-10,0x1.8d3p-10,0x1.7d28p-10,0x1.6d6ep-10,0x1.5e04p-10,0x1.4eeap-10,
+0x1.402p-10,0x1.31a6p-10,0x1.237ep-10,0x1.15a6p-10,0x1.081ep-10,0x1.f5d4p-11,
+0x1.dc1p-11,0x1.c2fp-11,0x1.aa78p-11,0x1.92a4p-11,0x1.7b78p-11,0x1.64f4p-11,
+0x1.4f18p-11,0x1.39e8p-11,0x1.256p-11,0x1.118p-11,0x1.fcap-12,0x1.d798p-12,
+0x1.b3e8p-12,0x1.9198p-12,0x1.70ap-12,0x1.5108p-12,0x1.32dp-12,0x1.15f8p-12,
+0x1.f51p-13,0x1.c0fp-13,0x1.8fap-13,0x1.612p-13,0x1.357p-13,0x1.0c9p-13,
+0x1.cd2p-14,0x1.86ep-14,0x1.464p-14,0x1.0b6p-14,0x1.accp-15,0x1.4e4p-15,
+0x1.f68p-16,0x1.688p-16,0x1.e3p-17,0x1.25p-17,0x1.2cp-18,0x1.bp-20,0x1.8p-23,
+0x1.8p-23,0x1.bp-20,0x1.2cp-18,0x1.28p-17,0x1.e8p-17,0x1.6ep-16,0x1.ffp-16,
+0x1.55p-15,0x1.b68p-15,0x1.12p-14,0x1.4f4p-14,0x1.92cp-14,0x1.dc8p-14,
+0x1.164p-13,0x1.416p-13,0x1.6fap-13,0x1.a12p-13,0x1.d5ep-13,0x1.06ep-12,
+0x1.247p-12,0x1.43ap-12,0x1.647p-12,0x1.86ep-12,0x1.aafp-12,0x1.d0ap-12,
+0x1.f8p-12,0x1.108p-11,0x1.25dp-11,0x1.3bf8p-11,0x1.52f8p-11,0x1.6adp-11,
+0x1.8378p-11,0x1.9dp-11,0x1.b758p-11,0x1.d29p-11,0x1.eeap-11,0x1.05c8p-10,
+0x1.14acp-10,0x1.23fcp-10,0x1.33bcp-10,0x1.43ecp-10,0x1.548cp-10,0x1.659cp-10,
+0x1.771cp-10,0x1.890cp-10,0x1.9b6cp-10,0x1.ae4p-10,0x1.c184p-10,0x1.d53cp-10,
+0x1.e964p-10,0x1.fep-10,0x1.0988p-9,0x1.144ap-9,0x1.1f46p-9,0x1.2a7cp-9,
+0x1.35ecp-9,0x1.4198p-9,0x1.4d7ep-9,0x1.59ap-9,0x1.65fcp-9,0x1.7294p-9,
+0x1.7f68p-9,0x1.8c78p-9,0x1.99c4p-9,0x1.a74cp-9,0x1.b51p-9,0x1.c312p-9,
+0x1.d15p-9,0x1.dfcap-9,0x1.ee82p-9,0x1.fd78p-9,0x1.0656p-8,0x1.0e0fp-8,
+0x1.15e6p-8,0x1.1dddp-8,0x1.25f3p-8,0x1.2e29p-8,0x1.367ep-8,0x1.3ef2p-8,
+0x1.4786p-8,0x1.503ap-8,0x1.590ep-8,0x1.6201p-8,0x1.6b15p-8,0x1.7449p-8,
+0x1.7d9dp-8,0x1.8711p-8,0x1.90a6p-8,0x1.9a5cp-8,0x1.a432p-8,0x1.ae28p-8,
+0x1.b84p-8,0x1.c279p-8,0x1.ccd2p-8,0x1.d74dp-8,0x1.e1e9p-8,0x1.eca7p-8,
+0x1.f786p-8,0x1.0143p-7,0x1.06d48p-7,0x1.0c768p-7,0x1.12298p-7,0x1.17edp-7,
+0x1.1dc2p-7,0x1.23a88p-7,0x1.299f8p-7,0x1.2fa8p-7,0x1.35c18p-7,0x1.3bec8p-7,
+0x1.4229p-7,0x1.48768p-7,0x1.4ed6p-7,0x1.55468p-7,0x1.5bc9p-7,0x1.625dp-7,
+0x1.69028p-7,0x1.6fb98p-7,0x1.7683p-7,0x1.7d5d8p-7,0x1.844a8p-7,0x1.8b49p-7,
+0x1.925ap-7,0x1.997c8p-7,0x1.a0b1p-7,0x1.a7f8p-7,0x1.af518p-7,0x1.b6bc8p-7,
+0x1.be3a8p-7,0x1.c5ca8p-7,0x1.cd6c8p-7,0x1.d5218p-7,0x1.dce9p-7,0x1.e4c3p-7,
+0x1.ecaf8p-7,0x1.f4ae8p-7,0x1.fcc08p-7,0x1.02728p-6,0x1.068e4p-6,0x1.0ab38p-6,
+0x1.0ee24p-6,0x1.131a8p-6,0x1.175cp-6,0x1.1ba74p-6,0x1.1ffcp-6,0x1.245a8p-6,
+0x1.28c28p-6,0x1.2d344p-6,0x1.31af8p-6,0x1.36348p-6,0x1.3ac34p-6,0x1.3f5cp-6,
+0x1.43fe4p-6,0x1.48aa4p-6,0x1.4d604p-6,0x1.52204p-6,0x1.56eap-6,0x1.5bbdcp-6,
+0x1.609b4p-6,0x1.6582cp-6,0x1.6a748p-6,0x1.6f7p-6,0x1.7475cp-6,0x1.79858p-6,
+0x1.7e9f8p-6,0x1.83c38p-6,0x1.88f18p-6,0x1.8e2ap-6,0x1.936c8p-6,0x1.98b98p-6,
+0x1.9e108p-6,0x1.a372p-6,0x1.a8ddcp-6,0x1.ae53cp-6,0x1.b3d44p-6,0x1.b95f4p-6,
+0x1.bef48p-6,0x1.c4944p-6,0x1.ca3e8p-6,0x1.cff34p-6,0x1.d5b2cp-6,0x1.db7ccp-6,
+0x1.e1514p-6,0x1.e7308p-6,0x1.ed1a4p-6,0x1.f30ecp-6,0x1.f90ep-6,0x1.ff18p-6,
+0x1.02966p-5,0x1.05a62p-5,0x1.08bb4p-5,0x1.0bd5ep-5,0x1.0ef5ep-5,0x1.121b6p-5,
+0x1.15466p-5,0x1.1876ep-5,0x1.1baccp-5,0x1.1ee84p-5,0x1.22294p-5,0x1.256fcp-5,
+0x1.28bbep-5,0x1.2c0d8p-5,0x1.2f64ap-5,0x1.32c18p-5,0x1.3623ep-5,0x1.398bep-5,
+0x1.3cf9ap-5,0x1.406cep-5,0x1.43e5ep-5,0x1.4764ap-5,0x1.4ae8ep-5,0x1.4e73p-5,
+0x1.5202cp-5,0x1.55984p-5,0x1.59338p-5,0x1.5cd4ap-5,0x1.607b6p-5,0x1.6428p-5,
+0x1.67da6p-5,0x1.6b92ap-5,0x1.6f50ap-5,0x1.7314ap-5,0x1.76de6p-5,0x1.7aaep-5,
+0x1.7e838p-5,0x1.825fp-5,0x1.86406p-5,0x1.8a27ap-5,0x1.8e14ep-5,0x1.9208p-5,
+0x1.96014p-5,0x1.9a006p-5,0x1.9e05ap-5,0x1.a210cp-5,0x1.a622p-5,0x1.aa394p-5,
+0x1.ae56ap-5,0x1.b27ap-5,0x1.b6a38p-5,0x1.bad32p-5,0x1.bf08ep-5,0x1.c344cp-5,
+0x1.c786cp-5,0x1.cbceep-5,0x1.d01d4p-5,0x1.d471ep-5,0x1.d8ccap-5,0x1.dd2dap-5,
+0x1.e194cp-5,0x1.e6024p-5,0x1.ea76p-5,0x1.eefp-5,0x1.f3706p-5,0x1.f7f7p-5,
+0x1.fc83ep-5,0x1.008b9p-4,0x1.02d86p-4,0x1.05286p-4,0x1.077b9p-4,0x1.09d2p-4,
+0x1.0c2b9p-4,0x1.0e886p-4,0x1.10e87p-4,0x1.134bbp-4,0x1.15b23p-4,0x1.181bep-4,
+0x1.1a88ep-4,0x1.1cf92p-4,0x1.1f6cap-4,0x1.21e37p-4,0x1.245d8p-4,0x1.26dadp-4,
+0x1.295b7p-4,0x1.2bdf6p-4,0x1.2e66ap-4,0x1.30f13p-4,0x1.337f2p-4,0x1.36105p-4,
+0x1.38a4ep-4,0x1.3b3cdp-4,0x1.3dd81p-4,0x1.4076bp-4,0x1.4318bp-4,0x1.45be1p-4,
+0x1.4866dp-4,0x1.4b12fp-4,0x1.4dc28p-4,0x1.50757p-4,0x1.532bdp-4,0x1.55e59p-4,
+0x1.58a2cp-4,0x1.5b637p-4,0x1.5e278p-4,0x1.60ef1p-4,0x1.63ba1p-4,0x1.66888p-4,
+0x1.695a7p-4,0x1.6c2fep-4,0x1.6f08dp-4,0x1.71e53p-4,0x1.74c52p-4,0x1.77a88p-4,
+0x1.7a8f7p-4,0x1.7d79fp-4,0x1.8067fp-4,0x1.83598p-4,0x1.864e9p-4,0x1.89474p-4,
+0x1.8c437p-4,0x1.8f434p-4,0x1.92469p-4,0x1.954d9p-4,0x1.98582p-4,0x1.9b664p-4,
+0x1.9e78p-4,0x1.a18d6p-4,0x1.a4a66p-4,0x1.a7c31p-4,0x1.aae35p-4,0x1.ae074p-4,
+0x1.b12edp-4,0x1.b45a1p-4,0x1.b789p-4,0x1.babbap-4,0x1.bdf1ep-4,0x1.c12bep-4,
+0x1.c4699p-4,0x1.c7aafp-4,0x1.caf01p-4,0x1.ce38fp-4,0x1.d1858p-4,0x1.d4d5dp-4,
+0x1.d829ep-4,0x1.db81bp-4,0x1.dedd4p-4,0x1.e23cap-4,0x1.e59fcp-4,0x1.e906bp-4,
+0x1.ec717p-4,0x1.efdffp-4,0x1.f3525p-4,0x1.f6c87p-4,0x1.fa427p-4,0x1.fdc04p-4,
+0x1.00a0fp-3,0x1.0263b8p-3,0x1.04286p-3,0x1.05efp-3,0x1.07b79p-3,0x1.09821p-3,
+0x1.0b4e8p-3,0x1.0d1cep-3,0x1.0eed38p-3,0x1.10bf88p-3,0x1.1293c8p-3,0x1.146ap-3,
+0x1.16423p-3,0x1.181c58p-3,0x1.19f88p-3,0x1.1bd698p-3,0x1.1db6b8p-3,
+0x1.1f98dp-3,0x1.217cep-3,0x1.2362f8p-3,0x1.254b08p-3,0x1.27352p-3,
+0x1.292138p-3,0x1.2b0f5p-3,0x1.2cff7p-3,0x1.2ef198p-3,0x1.30e5cp-3,0x1.32dbfp-3,
+0x1.34d428p-3,0x1.36ce68p-3,0x1.38cab8p-3,0x1.3ac91p-3,0x1.3cc97p-3,
+0x1.3ecbep-3,0x1.40d06p-3,0x1.42d6fp-3,0x1.44df9p-3,0x1.46ea4p-3,0x1.48f7p-3,
+0x1.4b05d8p-3,0x1.4d16cp-3,0x1.4f29cp-3,0x1.513ed8p-3,0x1.535608p-3,
+0x1.556f5p-3,0x1.578abp-3,0x1.59a828p-3,0x1.5bc7cp-3,0x1.5de97p-3,0x1.600d48p-3,
+0x1.623338p-3,0x1.645b48p-3,0x1.668578p-3,0x1.68b1c8p-3,0x1.6ae04p-3,
+0x1.6d10d8p-3,0x1.6f4398p-3,0x1.717878p-3,0x1.73af88p-3,0x1.75e8b8p-3,
+0x1.782418p-3,0x1.7a61ap-3,0x1.7ca15p-3,0x1.7ee33p-3,0x1.812738p-3,
+0x1.836d78p-3,0x1.85b5ep-3,0x1.880078p-3,0x1.8a4d48p-3,0x1.8c9c48p-3,
+0x1.8eed78p-3,0x1.9140ep-3,0x1.93968p-3,0x1.95ee5p-3,0x1.98486p-3,0x1.9aa4ap-3,
+0x1.9d032p-3,0x1.9f63d8p-3,0x1.a1c6dp-3,0x1.a42c08p-3,0x1.a69378p-3,
+0x1.a8fd28p-3,0x1.ab6918p-3,0x1.add74cp-3,0x1.b047cp-3,0x1.b2ba78p-3,
+0x1.b52f74p-3,0x1.b7a6b8p-3,0x1.ba2044p-3,0x1.bc9c14p-3,0x1.bf1a3p-3,
+0x1.c19a94p-3,0x1.c41d4p-3,0x1.c6a23cp-3,0x1.c92988p-3,0x1.cbb31cp-3,
+0x1.ce3f04p-3,0x1.d0cd38p-3,0x1.d35dcp-3,0x1.d5f09cp-3,0x1.d885c8p-3,
+0x1.db1d4cp-3,0x1.ddb724p-3,0x1.e05354p-3,0x1.e2f1dcp-3,0x1.e592bcp-3,
+0x1.e835f4p-3,0x1.eadb8cp-3,0x1.ed837cp-3,0x1.f02dccp-3,0x1.f2da78p-3,
+0x1.f58984p-3,0x1.f83afp-3,0x1.faeecp-3,0x1.fda4fp-3,0x1.002ec4p-2,0x1.018c4p-2,
+0x1.02eafp-2,0x1.044ad4p-2,0x1.05abeap-2,0x1.070e38p-2,0x1.0871b8p-2,
+0x1.09d67p-2,0x1.0b3c5cp-2,0x1.0ca38p-2,0x1.0e0bdcp-2,0x1.0f757p-2,
+0x1.10e03ap-2,0x1.124c4p-2,0x1.13b97ep-2,0x1.1527f6p-2,0x1.1697a8p-2,
+0x1.180896p-2,0x1.197acp-2,0x1.1aee26p-2,0x1.1c62c8p-2,0x1.1dd8a8p-2,
+0x1.1f4fc6p-2,0x1.20c824p-2,0x1.2241bep-2,0x1.23bc9ap-2,0x1.2538b6p-2,
+0x1.26b61p-2,0x1.2834aep-2,0x1.29b48cp-2,0x1.2b35aep-2,0x1.2cb812p-2,
+0x1.2e3bbap-2,0x1.2fc0a6p-2,0x1.3146d6p-2,0x1.32ce4ap-2,0x1.345704p-2,
+0x1.35e106p-2,0x1.376c4ep-2,0x1.38f8dcp-2,0x1.3a86b4p-2,0x1.3c15d4p-2,
+0x1.3da63cp-2,0x1.3f37eep-2,0x1.40caeap-2,0x1.425f3p-2,0x1.43f4c2p-2,
+0x1.458bap-2,0x1.4723cap-2,0x1.48bd42p-2,0x1.4a5806p-2,0x1.4bf418p-2,
+0x1.4d917ap-2,0x1.4f302ap-2,0x1.50d02ap-2,0x1.52717ap-2,0x1.54141cp-2,
+0x1.55b80ep-2,0x1.575d52p-2,0x1.5903eap-2,0x1.5aabd4p-2,0x1.5c5512p-2,
+0x1.5dffa4p-2,0x1.5fab8ap-2,0x1.6158c6p-2,0x1.630758p-2,0x1.64b742p-2,
+0x1.666882p-2,0x1.681b18p-2,0x1.69cf08p-2,0x1.6b845p-2,0x1.6d3af2p-2,
+0x1.6ef2eep-2,0x1.70ac44p-2,0x1.7266f4p-2,0x1.7423p-2,0x1.75e06ap-2,
+0x1.779f3p-2,0x1.795f52p-2,0x1.7b20d2p-2,0x1.7ce3b2p-2,0x1.7ea7fp-2,
+0x1.806d8ep-2,0x1.82348cp-2,0x1.83fcecp-2,0x1.85c6acp-2,0x1.8791cep-2,
+0x1.895e52p-2,0x1.8b2c3ap-2,0x1.8cfb84p-2,0x1.8ecc34p-2,0x1.909e48p-2,
+0x1.9271c2p-2,0x1.9446ap-2,0x1.961ce6p-2,0x1.97f494p-2,0x1.99cda8p-2,
+0x1.9ba826p-2,0x1.9d840cp-2,0x1.9f615ap-2,0x1.a14014p-2,0x1.a32038p-2,
+0x1.a501c6p-2,0x1.a6e4cp-2,0x1.a8c928p-2,0x1.aaaefap-2,0x1.ac963cp-2,
+0x1.ae7eeap-2,0x1.b06908p-2,0x1.b25496p-2,0x1.b44192p-2,0x1.b63p-2,
+0x1.b81fdep-2,0x1.ba112ep-2,0x1.bc03eep-2,0x1.bdf824p-2,0x1.bfedccp-2,
+0x1.c1e4e6p-2,0x1.c3dd76p-2,0x1.c5d77cp-2,0x1.c7d2f6p-2,0x1.c9cfe8p-2,
+0x1.cbce4ep-2,0x1.cdce2ep-2,0x1.cfcf86p-2,0x1.d1d254p-2,0x1.d3d69ep-2,
+0x1.d5dc6p-2,0x1.d7e39ep-2,0x1.d9ec54p-2,0x1.dbf688p-2,0x1.de0238p-2,
+0x1.e00f64p-2,0x1.e21e0ep-2,0x1.e42e34p-2,0x1.e63fdap-2,0x1.e852fep-2,
+0x1.ea67a4p-2,0x1.ec7dc8p-2,0x1.ee956ep-2,0x1.f0ae94p-2,0x1.f2c93ep-2,
+0x1.f4e56ap-2,0x1.f70318p-2,0x1.f9224ap-2,0x1.fb4302p-2,0x1.fd653ep-2,
+0x1.ff89p-2,0x1.00d724p-1,0x1.01ea8cp-1,0x1.02feb6p-1,0x1.0413a4p-1,
+0x1.052958p-1,0x1.063fdp-1,0x1.07570cp-1,0x1.086f1p-1,0x1.0987d6p-1,
+0x1.0aa164p-1,0x1.0bbbb8p-1,0x1.0cd6dp-1,0x1.0df2bp-1,0x1.0f0f58p-1,
+0x1.102cc8p-1,0x1.114afep-1,0x1.1269fcp-1,0x1.1389c2p-1,0x1.14aa5p-1,
+0x1.15cba8p-1,0x1.16edc8p-1,0x1.1810b4p-1,0x1.193468p-1,0x1.1a58e4p-1,
+0x1.1b7e2ep-1,0x1.1ca44p-1,0x1.1dcb1ep-1,0x1.1ef2c8p-1,0x1.201b3cp-1,
+0x1.21447cp-1,0x1.226e88p-1,0x1.239962p-1,0x1.24c508p-1,0x1.25f17ap-1,
+0x1.271ebap-1,0x1.284cc8p-1,0x1.297ba4p-1,0x1.2aab4cp-1,0x1.2bdbc6p-1,
+0x1.2d0d0cp-1,0x1.2e3f24p-1,0x1.2f7208p-1,0x1.30a5cp-1,0x1.31da44p-1,
+0x1.330f9cp-1,0x1.3445c2p-1,0x1.357cbap-1,0x1.36b484p-1,0x1.37ed1ep-1,
+0x1.39268cp-1,0x1.3a60cap-1,0x1.3b9bdcp-1,0x1.3cd7cp-1,0x1.3e1478p-1,
+0x1.3f5204p-1,0x1.409062p-1,0x1.41cf96p-1,0x1.430f9cp-1,0x1.445078p-1,
+0x1.45922ap-1,0x1.46d4bp-1,0x1.48180cp-1,0x1.495c4p-1,0x1.4aa148p-1,
+0x1.4be726p-1,0x1.4d2ddcp-1,0x1.4e756ap-1,0x1.4fbdcep-1,0x1.51070ap-1,
+0x1.52511ep-1,0x1.539c0cp-1,0x1.54e7dp-1,0x1.56347p-1,0x1.5781e8p-1,
+0x1.58d03ap-1,0x1.5a1f66p-1,0x1.5b6f6cp-1,0x1.5cc04cp-1,0x1.5e1208p-1,
+0x1.5f649ep-1,0x1.60b81p-1,0x1.620c6p-1,0x1.636188p-1,0x1.64b79p-1,
+0x1.660e74p-1,0x1.676634p-1,0x1.68bed4p-1,0x1.6a185p-1,0x1.6b72a8p-1,
+0x1.6ccde2p-1,0x1.6e29f8p-1,0x1.6f86eep-1,0x1.70e4c4p-1,0x1.724378p-1,
+0x1.73a30ep-1,0x1.750384p-1,0x1.7664dap-1,0x1.77c71p-1,0x1.792a28p-1,
+0x1.7a8e22p-1,0x1.7bf2fcp-1,0x1.7d58bap-1,0x1.7ebf5ap-1,0x1.8026dep-1,
+0x1.818f44p-1,0x1.82f88cp-1,0x1.8462bap-1,0x1.85cdccp-1,0x1.8739cp-1,
+0x1.88a69cp-1,0x1.8a145ap-1,0x1.8b83p-1,0x1.8cf28ap-1,0x1.8e62fap-1,
+0x1.8fd45p-1,0x1.91468ep-1,0x1.92b9b2p-1,0x1.942dbep-1,0x1.95a2bp-1,
+0x1.97188cp-1,0x1.988f4ep-1,0x1.9a06fap-1,0x1.9b7f9p-1,0x1.9cf90cp-1,
+0x1.9e7374p-1,0x1.9feec4p-1,0x1.a16bp-1,0x1.a2e826p-1,0x1.a46636p-1,
+0x1.a5e532p-1,0x1.a76518p-1,0x1.a8e5ecp-1,0x1.aa67aap-1,0x1.abea56p-1,
+0x1.ad6deep-1,0x1.aef272p-1,0x1.b077e6p-1,0x1.b1fe46p-1,0x1.b38594p-1,
+0x1.b50ddp-1,0x1.b696fap-1,0x1.b82114p-1,0x1.b9ac1ep-1,0x1.bb3818p-1,
+0x1.bcc5p-1,0x1.be52dap-1,0x1.bfe1a4p-1,0x1.c1715ep-1,0x1.c3020ap-1,
+0x1.c493a8p-1,0x1.c62638p-1,0x1.c7b9bap-1,0x1.c94e2ep-1,0x1.cae396p-1,
+0x1.cc79fp-1,0x1.ce113ep-1,0x1.cfa98p-1,0x1.d142b6p-1,0x1.d2dcep-1,0x1.d478p-1,
+0x1.d61414p-1,0x1.d7b11ep-1,0x1.d94f1ep-1,0x1.daee14p-1,0x1.dc8e02p-1,
+0x1.de2ee6p-1,0x1.dfd0cp-1,0x1.e17392p-1,0x1.e3175cp-1,0x1.e4bc1ep-1,
+0x1.e661d8p-1,0x1.e8088cp-1,0x1.e9b038p-1,0x1.eb58dep-1,0x1.ed027ep-1,
+0x1.eead18p-1,0x1.f058acp-1,0x1.f2053ap-1,0x1.f3b2c4p-1,0x1.f5614ap-1,
+0x1.f710ccp-1,0x1.f8c14ap-1,0x1.fa72c4p-1,0x1.fc253ap-1,0x1.fdd8aep-1,
+0x1.ff8d1ep-1,0x1.00a146p+0,0x1.017c7ep+0,0x1.025834p+0,0x1.033468p+0,
+0x1.04111cp+0,0x1.04ee52p+0,0x1.05cc06p+0,0x1.06aa3ap+0,0x1.0788eep+0,
+0x1.086824p+0,0x1.0947d8p+0,0x1.0a280ep+0,0x1.0b08c6p+0,0x1.0be9fep+0,
+0x1.0ccbb8p+0,0x1.0dadf2p+0,0x1.0e90aep+0,0x1.0f73ecp+0,0x1.1057acp+0,
+0x1.113beep+0,0x1.1220b2p+0,0x1.1305f8p+0,0x1.13ebc2p+0,0x1.14d20ep+0,
+0x1.15b8dcp+0,0x1.16a02ep+0,0x1.178802p+0,0x1.18705cp+0,0x1.195938p+0,
+0x1.1a4296p+0,0x1.1b2c7ap+0,0x1.1c16e2p+0,0x1.1d01cep+0,0x1.1ded3ep+0,
+0x1.1ed934p+0,0x1.1fc5acp+0,0x1.20b2acp+0,0x1.21a03p+0,0x1.228e38p+0,
+0x1.237cc6p+0,0x1.246bdap+0,0x1.255b74p+0,0x1.264b94p+0,0x1.273c3ap+0,
+0x1.282d66p+0,0x1.291f18p+0,0x1.2a1152p+0,0x1.2b0412p+0,0x1.2bf758p+0,
+0x1.2ceb28p+0,0x1.2ddf7cp+0,0x1.2ed458p+0,0x1.2fc9bep+0,0x1.30bfaap+0,
+0x1.31b61ep+0,0x1.32ad1cp+0,0x1.33a4ap+0,0x1.349cacp+0,0x1.359544p+0,
+0x1.368e62p+0,0x1.37880ap+0,0x1.38823cp+0,0x1.397cf4p+0,0x1.3a7838p+0,
+0x1.3b7408p+0,0x1.3c705ep+0,0x1.3d6d4p+0,0x1.3e6aacp+0,0x1.3f68a2p+0,
+0x1.406722p+0,0x1.41662ep+0,0x1.4265c4p+0,0x1.4365e6p+0,0x1.446694p+0,
+0x1.4567ccp+0,0x1.46699p+0,0x1.476bdep+0,0x1.486ebap+0,0x1.497222p+0,
+0x1.4a7616p+0,0x1.4b7a96p+0,0x1.4c7fa4p+0,0x1.4d853cp+0,0x1.4e8b64p+0,
+0x1.4f9218p+0,0x1.50995ap+0,0x1.51a128p+0,0x1.52a984p+0,0x1.53b27p+0,
+0x1.54bbe8p+0,0x1.55c5eep+0,0x1.56d084p+0,0x1.57dba8p+0,0x1.58e75ap+0,
+0x1.59f39cp+0,0x1.5b006cp+0,0x1.5c0dcap+0,0x1.5d1bbap+0,0x1.5e2a38p+0,
+0x1.5f3948p+0,0x1.6048e6p+0,0x1.615914p+0,0x1.6269d2p+0,0x1.637b22p+0,
+0x1.648d02p+0,0x1.659f74p+0,0x1.66b274p+0,0x1.67c608p+0,0x1.68da2cp+0,
+0x1.69eee2p+0,0x1.6b042ap+0,0x1.6c1a04p+0,0x1.6d307p+0,0x1.6e476cp+0,
+0x1.6f5efep+0,0x1.70772p+0,0x1.718fd6p+0,0x1.72a92p+0,0x1.73c2fap+0,
+0x1.74dd68p+0,0x1.75f86cp+0,0x1.771402p+0,0x1.78302cp+0,0x1.794ceap+0,
+0x1.7a6a3cp+0,0x1.7b8824p+0,0x1.7ca6ap+0,0x1.7dc5aep+0,0x1.7ee554p+0,
+0x1.80058cp+0,0x1.81265cp+0,0x1.8247cp+0,0x1.8369bcp+0,0x1.848c4cp+0,
+0x1.85af7p+0,0x1.86d32ep+0,0x1.87f78p+0,0x1.891c68p+0,0x1.8a41e8p+0,0x1.8b68p+0,
+0x1.8c8eacp+0,0x1.8db5f2p+0,0x1.8eddcep+0,0x1.900642p+0,0x1.912f4ep+0,
+0x1.9258fp+0,0x1.93832cp+0,0x1.94aep+0,0x1.95d96cp+0,0x1.970572p+0,0x1.98321p+0,
+0x1.995f48p+0,0x1.9a8d18p+0,0x1.9bbb8p+0,0x1.9cea84p+0,0x1.9e1a2p+0,
+0x1.9f4a58p+0,0x1.a07b28p+0,0x1.a1ac94p+0,0x1.a2de9ap+0,0x1.a4113ap+0,
+0x1.a54474p+0,0x1.a6784cp+0,0x1.a7acbcp+0,0x1.a8e1c8p+0,0x1.aa1772p+0,
+0x1.ab4db6p+0,0x1.ac8496p+0,0x1.adbc12p+0,0x1.aef42ap+0,0x1.b02cep+0,
+0x1.b1663p+0,0x1.b2a01ep+0,0x1.b3daa8p+0,0x1.b515d2p+0,0x1.b65198p+0,
+0x1.b78dfcp+0,0x1.b8cafcp+0,0x1.ba089cp+0,0x1.bb46d8p+0,0x1.bc85b4p+0,
+0x1.bdc52cp+0,0x1.bf0546p+0,0x1.c045fcp+0,0x1.c18754p+0,0x1.c2c948p+0,
+0x1.c40bdep+0,0x1.c54f12p+0,0x1.c692e6p+0,0x1.c7d75cp+0,0x1.c91c7p+0,
+0x1.ca6224p+0,0x1.cba878p+0,0x1.ccef6ep+0,0x1.ce3704p+0,0x1.cf7f3cp+0,
+0x1.d0c814p+0,0x1.d2119p+0,0x1.d35bacp+0,0x1.d4a668p+0,0x1.d5f1c8p+0,
+0x1.d73dcap+0,0x1.d88a6ep+0,0x1.d9d7b4p+0,0x1.db259cp+0,0x1.dc7428p+0,
+0x1.ddc358p+0,0x1.df132cp+0,0x1.e063ap+0,0x1.e1b4bap+0,0x1.e30678p+0,
+0x1.e458d8p+0,0x1.e5abdep+0,0x1.e6ff88p+0,0x1.e853d6p+0,0x1.e9a8c8p+0,
+0x1.eafe6p+0,0x1.ec549ep+0,0x1.edab8p+0,0x1.ef0308p+0,0x1.f05b36p+0,
+0x1.f1b408p+0,0x1.f30d82p+0,0x1.f467a2p+0,0x1.f5c268p+0,0x1.f71dd4p+0,
+0x1.f879e8p+0,0x1.f9d6a2p+0,0x1.fb3404p+0,0x1.fc920cp+0,0x1.fdf0bcp+0,
+0x1.ff5014p+0,
+},{
+0x1.2d135ep-6,0x1.a30f08p-5,0x1.436502p-4,0x1.a263b8p-4,0x1.effd0ep-4,
+0x1.16ceb2p-3,0x1.2e520ep-3,0x1.3f31c4p-3,0x1.4a1086p-3,0x1.4f8a78p-3,
+0x1.503546p-3,0x1.4ca016p-3,0x1.45538ap-3,0x1.3ad1c8p-3,0x1.2d967p-3,
+0x1.1e16a2p-3,0x1.0cc0fap-3,0x1.f3fb2cp-4,0x1.cc5c1ep-4,0x1.a35afap-4,
+0x1.79a0f2p-4,0x1.4fca2ap-4,0x1.2665cep-4,0x1.fbebfap-5,0x1.addfbp-5,
+0x1.6376f6p-5,0x1.1d67fap-5,0x1.b89dd6p-6,0x1.415bdp-6,0x1.abb43cp-7,
+0x1.dad39ep-8,0x1.22a248p-9,-0x1.089d78p-9,-0x1.660c02p-8,-0x1.0a5b74p-7,
+-0x1.48f7eep-7,-0x1.7013c4p-7,-0x1.814f64p-7,-0x1.7eb35cp-7,-0x1.6ab052p-7,
+-0x1.481f0ap-7,-0x1.1a4064p-7,-0x1.c97ab6p-8,-0x1.574e0ep-8,-0x1.cdda6cp-9,
+-0x1.04359ep-9,-0x1.9b4d7p-11,-0x1.8f3886p-14,-0x1.b1ec82p-14,-0x1.08367p-10,
+-0x1.8bc4aep-9,-0x1.a0e9dp-8,-0x1.714c18p-7,-0x1.26cc74p-6,-0x1.b6f2d4p-6,
+-0x1.36c92ep-5,-0x1.a7ac28p-5,-0x1.18498p-4,-0x1.6a0432p-4,-0x1.ca5884p-4,
+-0x1.1d52eap-3,-0x1.5e2c44p-3,-0x1.a875p-3,-0x1.fcf056p-3,0x1.a30f08p-5,
+0x1.23a354p-3,0x1.c21faep-3,0x1.232c1cp-2,0x1.592d1cp-2,0x1.84106ep-2,
+0x1.a4ca98p-2,0x1.bc4718p-2,0x1.cb6852p-2,0x1.d307a8p-2,0x1.d3f566p-2,
+0x1.cef8c8p-2,0x1.c4d002p-2,0x1.b63036p-2,0x1.a3c576p-2,0x1.8e32c8p-2,
+0x1.761224p-2,0x1.5bf46ep-2,0x1.406184p-2,0x1.23d82ep-2,0x1.06ce2cp-2,
+0x1.d3605p-3,0x1.99c388p-3,0x1.617b22p-3,0x1.2b2a22p-3,0x1.eec2e2p-4,
+0x1.8d3fb2p-4,0x1.32a41p-4,0x1.bf4a4p-5,0x1.29a794p-5,0x1.4a72eap-6,
+0x1.94867p-8,-0x1.704f7p-8,-0x1.f25afcp-7,-0x1.72bc32p-6,-0x1.c9e1c8p-6,
+-0x1.00287cp-5,-0x1.0c26b2p-5,-0x1.0a55c8p-5,-0x1.f8d0f4p-6,-0x1.c8b3e4p-6,
+-0x1.88dbap-6,-0x1.3e6054p-6,-0x1.ddd61ep-7,-0x1.416b94p-7,-0x1.6a2d9cp-8,
+-0x1.1e3d7ap-9,-0x1.15d504p-12,-0x1.2dfbb2p-12,-0x1.6fc00ap-9,-0x1.136deap-7,
+-0x1.22251cp-6,-0x1.0101d8p-5,-0x1.9a526ap-5,-0x1.317ae4p-4,-0x1.b092f6p-4,
+-0x1.26d95p-3,-0x1.861facp-3,-0x1.f7e16p-3,-0x1.3efab2p-2,-0x1.8d226p-2,
+-0x1.e76554p-2,-0x1.276518p-1,-0x1.623054p-1,0x1.436502p-4,0x1.c21faep-3,
+0x1.5b5e32p-2,0x1.c167acp-2,0x1.0a60dp-1,0x1.2b79bep-1,0x1.44bb5p-1,
+0x1.56db4p-1,0x1.62884ap-1,0x1.686a2ap-1,0x1.6921a2p-1,0x1.654874p-1,
+0x1.5d7164p-1,0x1.52283ep-1,0x1.43f1cap-1,0x1.334bd8p-1,0x1.20ad3ap-1,
+0x1.0c85c2p-1,0x1.ee7c8cp-2,0x1.c27142p-2,0x1.959f5cp-2,0x1.68ae96p-2,
+0x1.3c38b6p-2,0x1.10c982p-2,0x1.cdbd94p-3,0x1.7dd0c2p-3,0x1.32904p-3,
+0x1.d94798p-4,0x1.592e5ep-4,0x1.cb68f2p-5,0x1.fe0698p-6,0x1.382dc4p-7,
+-0x1.1c3b2cp-7,-0x1.8096dp-6,-0x1.1e1a3ap-5,-0x1.615ae6p-5,-0x1.8b5ceap-5,
+-0x1.9ddf94p-5,-0x1.9b1206p-5,-0x1.859336p-5,-0x1.6071eep-5,-0x1.2f2ccap-5,
+-0x1.eb647ap-6,-0x1.70c116p-6,-0x1.f01734p-7,-0x1.177fb8p-7,-0x1.b9cae4p-9,
+-0x1.acd0b4p-12,-0x1.d21742p-12,-0x1.1bcc84p-8,-0x1.a91b56p-7,-0x1.bfd1cp-6,
+-0x1.8cac66p-5,-0x1.3ca6f8p-4,-0x1.d77ceep-4,-0x1.4dd318p-3,-0x1.c7145cp-3,
+-0x1.2d10ap-2,-0x1.84da54p-2,-0x1.ec52bap-2,-0x1.3279ap-1,-0x1.7821a4p-1,
+-0x1.c7ec1ap-1,-0x1.115556p+0,0x1.a263b8p-4,0x1.232c1cp-2,0x1.c167acp-2,
+0x1.22b514p-1,0x1.58ap-1,0x1.8371c8p-1,0x1.a41e94p-1,0x1.bb9178p-1,
+0x1.caac84p-1,0x1.d248bcp-1,0x1.d33618p-1,0x1.ce3b84p-1,0x1.c416e6p-1,
+0x1.b57d14p-1,0x1.a319dcp-1,0x1.8d9p-1,0x1.757938p-1,0x1.5b663p-1,0x1.3fde8cp-1,
+0x1.2360ep-1,0x1.0662bcp-1,0x1.d2a14p-2,0x1.991c06p-2,0x1.60eaa2p-2,
+0x1.2aafd6p-2,0x1.edf89ep-3,0x1.8c9d4cp-3,0x1.3226b4p-3,0x1.be9366p-4,
+0x1.292de4p-4,0x1.49ebd4p-5,0x1.93e112p-7,-0x1.6fb8dep-7,-0x1.f18f4p-6,
+-0x1.7224a2p-5,-0x1.c92698p-5,-0x1.ff7f88p-5,-0x1.0bb912p-4,-0x1.09e8e8p-4,
+-0x1.f80296p-5,-0x1.c7f93p-5,-0x1.883b06p-5,-0x1.3dde2cp-5,-0x1.dd12c6p-6,
+-0x1.40e82ep-6,-0x1.69998ep-7,-0x1.1dc876p-8,-0x1.15637p-11,-0x1.2d803ep-11,
+-0x1.6f29b4p-8,-0x1.12fd52p-6,-0x1.21ae8p-5,-0x1.0098c8p-4,-0x1.99aaacp-4,
+-0x1.30fe02p-3,-0x1.afe22p-3,-0x1.2660c8p-2,-0x1.85803p-2,-0x1.f71364p-2,
+-0x1.3e784ap-1,-0x1.8c8006p-1,-0x1.e69e14p-1,-0x1.26ec56p+0,-0x1.619f88p+0,
+0x1.effd0ep-4,0x1.592d1cp-2,0x1.0a60dp-1,0x1.58ap-1,0x1.988af4p-1,0x1.cb4dd6p-1,
+0x1.f20a0cp-1,0x1.06eb26p+0,0x1.0fdf4ap+0,0x1.14621p+0,0x1.14eec2p+0,
+0x1.11fb44p+0,0x1.0bf82ap+0,0x1.0350ap+0,0x1.f0d4fap-1,0x1.d74c74p-1,
+0x1.babdeap-1,0x1.9bd4dep-1,0x1.7b3218p-1,0x1.596baap-1,0x1.370ceep-1,
+0x1.149688p-1,0x1.e4fcbcp-2,0x1.a25f46p-2,0x1.6215a2p-2,0x1.24cb4ep-2,
+0x1.d62cbep-3,0x1.6aeeeap-3,0x1.08b384p-3,0x1.604c1cp-4,0x1.871ca4p-5,
+0x1.dec972p-7,-0x1.b3ec7ep-7,-0x1.26ebdp-5,-0x1.b6cb36p-5,-0x1.0ef82ap-4,
+-0x1.2f2edap-4,-0x1.3d60bp-4,-0x1.3b3a6ep-4,-0x1.2abe9cp-4,-0x1.0e4584p-4,
+-0x1.d0fa52p-5,-0x1.78d2b2p-5,-0x1.1ac738p-5,-0x1.7c6dp-6,-0x1.acaa7cp-7,
+-0x1.52c994p-8,-0x1.48d5f8p-11,-0x1.656ba8p-11,-0x1.b342c4p-8,-0x1.45fdf4p-6,
+-0x1.5768b8p-5,-0x1.30301ep-4,-0x1.e5a5d8p-4,-0x1.698f3p-3,-0x1.fffc26p-3,
+-0x1.5cf9fep-2,-0x1.cdbddep-2,-0x1.2a30d6p-1,-0x1.798966p-1,-0x1.d60a0ap-1,
+-0x1.206f74p+0,-0x1.5d9f6ep+0,-0x1.a335bcp+0,0x1.16ceb2p-3,0x1.84106ep-2,
+0x1.2b79bep-1,0x1.8371c8p-1,0x1.cb4dd6p-1,0x1.022fa8p+0,0x1.17f5cep+0,
+0x1.279608p+0,0x1.31a6f6p+0,0x1.36b938p+0,0x1.375764p+0,0x1.34060ap+0,
+0x1.2d43b2p+0,0x1.2388e2p+0,0x1.174812p+0,0x1.08edbcp+0,0x1.f1c098p-1,
+0x1.cf005ap-1,0x1.aa4f8p-1,0x1.8456c2p-1,0x1.5db2cap-1,0x1.36f434p-1,
+0x1.109f92p-1,0x1.d65acep-2,0x1.8e144ep-2,0x1.492c76p-2,0x1.084cp-2,
+0x1.98070cp-3,0x1.299718p-3,0x1.8c11fp-4,0x1.b7b514p-5,0x1.0d2352p-6,
+-0x1.ea164cp-7,-0x1.4b90ap-5,-0x1.ed504ep-5,-0x1.30a32p-4,-0x1.54da76p-4,
+-0x1.64cfccp-4,-0x1.62652cp-4,-0x1.4fdd0ap-4,-0x1.2fda46p-4,-0x1.056024p-4,
+-0x1.a7a4a2p-5,-0x1.3de9ccp-5,-0x1.abb188p-6,-0x1.e1ed7p-7,-0x1.7ce1bp-8,
+-0x1.71b18ap-11,-0x1.91d47p-11,-0x1.e9577ep-8,-0x1.6e7f1p-6,-0x1.8213d4p-5,
+-0x1.55fbbp-4,-0x1.10fea2p-3,-0x1.967b9ep-3,-0x1.1fcca6p-2,-0x1.885632p-2,
+-0x1.038e72p-1,-0x1.4f3da6p-1,-0x1.a87208p-1,-0x1.08387ep+0,-0x1.4445f8p+0,
+-0x1.89103p+0,-0x1.d74be8p+0,0x1.2e520ep-3,0x1.a4ca98p-2,0x1.44bb5p-1,
+0x1.a41e94p-1,0x1.f20a0cp-1,0x1.17f5cep+0,0x1.2f920ep+0,0x1.4083a2p+0,
+0x1.4b6de4p+0,0x1.50eda2p+0,0x1.519924p+0,0x1.4e002ap+0,0x1.46abe4p+0,
+0x1.3c1f04p+0,0x1.2ed5aap+0,0x1.1f4572p+0,0x1.0ddd72p+0,0x1.f60c64p-1,
+0x1.ce4364p-1,0x1.a516dcp-1,0x1.7b30a8p-1,0x1.512d98p-1,0x1.279d6ap-1,
+0x1.fe059ap-2,0x1.afa6b2p-2,0x1.64ef36p-2,0x1.1e9614p-2,0x1.ba7038p-3,
+0x1.42aff8p-3,0x1.ad78f2p-4,0x1.dcca36p-5,0x1.23d5eap-6,-0x1.09b58ep-6,
+-0x1.6786fep-5,-0x1.0b7564p-4,-0x1.4a5424p-4,-0x1.71995ep-4,-0x1.82e73cp-4,
+-0x1.80487p-4,-0x1.6c3038p-4,-0x1.497a58p-4,-0x1.1b6b26p-4,-0x1.cb5efp-5,
+-0x1.58b96ep-5,-0x1.cfc348p-6,-0x1.05490ap-6,-0x1.9d00cap-8,-0x1.90df16p-11,
+-0x1.b3b7cep-11,-0x1.094e1ap-7,-0x1.8d6798p-6,-0x1.a2a31cp-5,-0x1.72d2fcp-4,
+-0x1.28047ep-3,-0x1.b8c372p-3,-0x1.381224p-2,-0x1.a96c9ap-2,-0x1.19722ep-1,
+-0x1.6b8362p-1,-0x1.cc3daap-1,-0x1.1e80eep+0,-0x1.5f9eeap+0,-0x1.aa3648p+0,
+-0x1.ff0b08p+0,0x1.3f31c4p-3,0x1.bc4718p-2,0x1.56db4p-1,0x1.bb9178p-1,
+0x1.06eb26p+0,0x1.279608p+0,0x1.4083a2p+0,0x1.52675p+0,0x1.5ded86p+0,
+0x1.63bbd8p+0,0x1.6470eep+0,0x1.60a48ap+0,0x1.58e78cp+0,0x1.4dc3ecp+0,
+0x1.3fbcbap+0,0x1.2f4e22p+0,0x1.1ced6cp+0,0x1.0908f6p+0,0x1.e81076p-1,
+0x1.bc979cp-1,0x1.905abap-1,0x1.63ff6p-1,0x1.381d52p-1,0x1.0d3e88p-1,
+0x1.c7be5cp-2,0x1.78db48p-2,0x1.2e94fap-2,0x1.d32204p-3,0x1.54b2b2p-3,
+0x1.c5717cp-4,0x1.f766d6p-5,0x1.341fd2p-6,-0x1.188a26p-6,-0x1.7b981ep-5,
+-0x1.1a62fap-4,-0x1.5cc40ep-4,-0x1.863a66p-4,-0x1.987f84p-4,-0x1.95bb48p-4,
+-0x1.8083fp-4,-0x1.5bde1ap-4,-0x1.2b3cc8p-4,-0x1.e502aep-5,-0x1.6bf70ap-5,
+-0x1.e9a5c8p-6,-0x1.13de6ep-6,-0x1.b40ep-8,-0x1.a73ef4p-11,-0x1.cc0994p-11,
+-0x1.181cecp-7,-0x1.a395ecp-6,-0x1.ba00d2p-5,-0x1.878586p-4,-0x1.388a26p-3,
+-0x1.d15d4ep-3,-0x1.497d2ep-2,-0x1.c12b4cp-2,-0x1.2927ap-1,-0x1.7fcd74p-1,
+-0x1.e5edd6p-1,-0x1.2e7ea4p+0,-0x1.733f1p+0,-0x1.c2003ap+0,-0x1.0dc88cp+1,
+0x1.4a1086p-3,0x1.cb6852p-2,0x1.62884ap-1,0x1.caac84p-1,0x1.0fdf4ap+0,
+0x1.31a6f6p+0,0x1.4b6de4p+0,0x1.5ded86p+0,0x1.69d836p+0,0x1.6fd926p+0,
+0x1.709466p+0,0x1.6ca6e6p+0,0x1.64a672p+0,0x1.5921b4p+0,0x1.4aa036p+0,
+0x1.39a25ep+0,0x1.26a17p+0,0x1.120f8cp+0,0x1.f8af6ep-1,0x1.cbbb96p-1,
+0x1.9dfd08p-1,0x1.701efap-1,0x1.42be5ap-1,0x1.1669d2p-1,0x1.d7438ep-2,
+0x1.85b0bcp-2,0x1.38e2e6p-2,0x1.e30a8p-3,0x1.604cecp-3,0x1.d4e2ap-4,
+0x1.0445c2p-4,0x1.3e9e1p-6,-0x1.2217e8p-6,-0x1.88857p-5,-0x1.2400d6p-4,
+-0x1.68a49cp-4,-0x1.93846cp-4,-0x1.a668d2p-4,-0x1.a38c78p-4,-0x1.8d9c28p-4,
+-0x1.67b6d4p-4,-0x1.356d8cp-4,-0x1.f58706p-5,-0x1.785c1ap-5,-0x1.fa528cp-6,
+-0x1.1d4376p-6,-0x1.c2e78cp-8,-0x1.b5a8d6p-11,-0x1.dbb436p-11,-0x1.21a6f6p-7,
+-0x1.b1dfe4p-6,-0x1.c90e3ap-5,-0x1.94dad4p-4,-0x1.432ee2p-3,-0x1.e1366p-3,
+-0x1.54b5aep-2,-0x1.d0772cp-2,-0x1.33463cp-1,-0x1.8cdf76p-1,-0x1.f67a3p-1,
+-0x1.38cbcep+0,-0x1.7fe39cp+0,-0x1.d1535cp+0,-0x1.16f888p+1,0x1.4f8a78p-3,
+0x1.d307a8p-2,0x1.686a2ap-1,0x1.d248bcp-1,0x1.14621p+0,0x1.36b938p+0,
+0x1.50eda2p+0,0x1.63bbd8p+0,0x1.6fd926p+0,0x1.75f396p+0,0x1.76b1f2p+0,
+0x1.72b3c2p+0,0x1.6a915p+0,0x1.5edba6p+0,0x1.501c8cp+0,0x1.3ed686p+0,
+0x1.2b84ep+0,0x1.169bap+0,0x1.00878ap+0,0x1.d35c4cp-1,0x1.a4db74p-1,
+0x1.763a92p-1,0x1.481934p-1,0x1.1b086p-1,0x1.df154p-2,0x1.8c27f2p-2,
+0x1.3e13e2p-2,0x1.eb0e38p-3,0x1.66255p-3,0x1.dcaa36p-4,0x1.089744p-4,
+0x1.43e764p-6,-0x1.26e814p-6,-0x1.8f08acp-5,-0x1.28d92p-4,-0x1.6ea07p-4,
+-0x1.9a365ep-4,-0x1.ad6b02p-4,-0x1.aa828p-4,-0x1.943502p-4,-0x1.6daeb8p-4,
+-0x1.3a8fd8p-4,-0x1.fdd942p-5,-0x1.7e9ab2p-5,-0x1.015c94p-5,-0x1.21ff2p-6,
+-0x1.ca62c2p-8,-0x1.bcebccp-11,-0x1.e398c2p-11,-0x1.267544p-7,-0x1.b912c6p-6,
+-0x1.d0a392p-5,-0x1.9b9272p-4,-0x1.488b9cp-3,-0x1.e93254p-3,-0x1.5a5cd8p-2,
+-0x1.d82bfep-2,-0x1.385f62p-1,-0x1.93752ep-1,-0x1.fed076p-1,-0x1.3dfc68p+0,
+-0x1.86422ep+0,-0x1.d90bd4p+0,-0x1.1b9976p+1,0x1.503546p-3,0x1.d3f566p-2,
+0x1.6921a2p-1,0x1.d33618p-1,0x1.14eec2p+0,0x1.375764p+0,0x1.519924p+0,
+0x1.6470eep+0,0x1.709466p+0,0x1.76b1f2p+0,0x1.7770aep+0,0x1.737076p+0,
+0x1.6b49ep+0,0x1.5f8e4p+0,0x1.50c7a4p+0,0x1.3f78d4p+0,0x1.2c1d58p+0,
+0x1.172972p+0,0x1.010a2p+0,0x1.d44a34p-1,0x1.a5b1aep-1,0x1.76f912p-1,
+0x1.48c038p-1,0x1.1b9874p-1,0x1.e0092p-2,0x1.8cf19ap-2,0x1.3eb5ccp-2,
+0x1.ec083p-3,0x1.66dbap-3,0x1.dd9cdap-4,0x1.091df4p-4,0x1.448c44p-6,
+-0x1.277e34p-6,-0x1.8fd3ccp-5,-0x1.29703cp-4,-0x1.6f5b12p-4,-0x1.9b072ep-4,
+-0x1.ae459ap-4,-0x1.ab5b9cp-4,-0x1.9502c4p-4,-0x1.6e68dep-4,-0x1.3b2ff8p-4,
+-0x1.fedcccp-5,-0x1.7f5d74p-5,-0x1.01df96p-5,-0x1.2292bep-6,-0x1.cb4c1ap-8,
+-0x1.bdce46p-11,-0x1.e48eeep-11,-0x1.270b28p-7,-0x1.b9f34cp-6,-0x1.d19018p-5,
+-0x1.9c63f4p-4,-0x1.4932dap-3,-0x1.ea2b5ap-3,-0x1.5b0d28p-2,-0x1.d91c58p-2,
+-0x1.38fe66p-1,-0x1.94428ep-1,-0x1.ffd47cp-1,-0x1.3e9e48p+0,-0x1.8708d6p+0,
+-0x1.d9fca2p+0,-0x1.1c29d2p+1,0x1.4ca016p-3,0x1.cef8c8p-2,0x1.654874p-1,
+0x1.ce3b84p-1,0x1.11fb44p+0,0x1.34060ap+0,0x1.4e002ap+0,0x1.60a48ap+0,
+0x1.6ca6e6p+0,0x1.72b3c2p+0,0x1.737076p+0,0x1.6f7b28p+0,0x1.676adp+0,
+0x1.5bcf3p+0,0x1.4d30e4p+0,0x1.3c114cp+0,0x1.28ea9ep+0,0x1.142fe2p+0,
+0x1.fc99dp-1,0x1.cf4cbp-1,0x1.a13348p-1,0x1.72fa2p-1,0x1.453f6p-1,0x1.1892cap-1,
+0x1.daeb9p-2,0x1.88b6b8p-2,0x1.3b5058p-2,0x1.e6c9e6p-3,0x1.6308a6p-3,
+0x1.d885e8p-4,0x1.064ab4p-4,0x1.4116e4p-6,-0x1.245814p-6,-0x1.8b910cp-5,
+-0x1.2644cep-4,-0x1.6b70e8p-4,-0x1.96a5ep-4,-0x1.a9afccp-4,-0x1.a6cdc2p-4,
+-0x1.90b1ep-4,-0x1.6a8148p-4,-0x1.37d42p-4,-0x1.f96b24p-5,-0x1.7b479ep-5,
+-0x1.fe403p-6,-0x1.1f7a0cp-6,-0x1.c6671ep-8,-0x1.b90e1ap-11,-0x1.df6508p-11,
+-0x1.23e642p-7,-0x1.b53da4p-6,-0x1.cc9a04p-5,-0x1.97feeep-4,-0x1.45b0c8p-3,
+-0x1.e4f226p-3,-0x1.575a62p-2,-0x1.d411aep-2,-0x1.35a88ap-1,-0x1.8ff3b8p-1,
+-0x1.fa603p-1,-0x1.3b3912p+0,-0x1.82de12p+0,-0x1.d4ef92p+0,-0x1.19229cp+1,
+0x1.45538ap-3,0x1.c4d002p-2,0x1.5d7164p-1,0x1.c416e6p-1,0x1.0bf82ap+0,
+0x1.2d43b2p+0,0x1.46abe4p+0,0x1.58e78cp+0,0x1.64a672p+0,0x1.6a915p+0,
+0x1.6b49ep+0,0x1.676adp+0,0x1.5f87c2p+0,0x1.542d5ap+0,0x1.45e12ap+0,
+0x1.3521c4p+0,0x1.2266acp+0,0x1.0e2062p+0,0x1.f170b8p-1,0x1.c52214p-1,
+0x1.980ba2p-1,0x1.6ad624p-1,0x1.3e1c46p-1,0x1.126aa8p-1,0x1.d07facp-2,
+0x1.8018ap-2,0x1.34650cp-2,0x1.dc1b56p-3,0x1.5b3e38p-3,0x1.ce277ap-4,
+0x1.008944p-4,0x1.3a0b26p-6,-0x1.1dedd2p-6,-0x1.82e2eep-5,-0x1.1fcfbcp-4,
+-0x1.63774p-4,-0x1.8db982p-4,-0x1.a0587ap-4,-0x1.9d86a2p-4,-0x1.87e6f4p-4,
+-0x1.628ce4p-4,-0x1.30fc68p-4,-0x1.ee53eap-5,-0x1.72f4fep-5,-0x1.f30dd2p-6,
+-0x1.192b2p-6,-0x1.bc6e7ap-8,-0x1.af6072p-11,-0x1.d4e002p-11,-0x1.1d7e8p-7,
+-0x1.aba56ap-6,-0x1.c27e8ep-5,-0x1.8f0afep-4,-0x1.3e8b32p-3,-0x1.da4deep-3,
+-0x1.4fd194p-2,-0x1.c9cc46p-2,-0x1.2edd02p-1,-0x1.872cf6p-1,-0x1.ef4398p-1,
+-0x1.344e4ap+0,-0x1.7a60d2p+0,-0x1.caa54cp+0,-0x1.12f752p+1,0x1.3ad1c8p-3,
+0x1.b63036p-2,0x1.52283ep-1,0x1.b57d14p-1,0x1.0350ap+0,0x1.2388e2p+0,
+0x1.3c1f04p+0,0x1.4dc3ecp+0,0x1.5921b4p+0,0x1.5edba6p+0,0x1.5f8e4p+0,
+0x1.5bcf3p+0,0x1.542d5ap+0,0x1.4930cep+0,0x1.3b5ad6p+0,0x1.2b25e6p+0,
+0x1.1905acp+0,0x1.056702p+0,0x1.e15ff2p-1,0x1.b67fap-1,0x1.8addf6p-1,
+0x1.5f1e4p-1,0x1.33d62ep-1,0x1.098ddp-1,0x1.c17f4p-2,0x1.73b0f8p-2,
+0x1.2a6f46p-2,0x1.ccbaf2p-3,0x1.500742p-3,0x1.bf3a72p-4,0x1.f08082p-5,
+0x1.2fe6acp-6,-0x1.14b1ccp-6,-0x1.766432p-5,-0x1.168424p-4,-0x1.57fc4ep-4,
+-0x1.80e12ap-4,-0x1.92e62ep-4,-0x1.902ba6p-4,-0x1.7b3ecp-4,-0x1.571982p-4,
+-0x1.2722d2p-4,-0x1.de5cep-5,-0x1.66f9f6p-5,-0x1.e2efb4p-6,-0x1.101676p-6,
+-0x1.ae13fap-8,-0x1.a171ep-11,-0x1.c5bb68p-11,-0x1.144612p-7,-0x1.9dd5bp-6,
+-0x1.b3f1ecp-5,-0x1.8227cp-4,-0x1.344184p-3,-0x1.cafc7p-3,-0x1.44f912p-2,
+-0x1.bb034p-2,-0x1.2514fap-1,-0x1.7a8ac4p-1,-0x1.df44dp-1,-0x1.2a594p+0,
+-0x1.6e287p+0,-0x1.bbd544p+0,-0x1.0a15eep+1,0x1.2d967p-3,0x1.a3c576p-2,
+0x1.43f1cap-1,0x1.a319dcp-1,0x1.f0d4fap-1,0x1.174812p+0,0x1.2ed5aap+0,
+0x1.3fbcbap+0,0x1.4aa036p+0,0x1.501c8cp+0,0x1.50c7a4p+0,0x1.4d30e4p+0,
+0x1.45e12ap+0,0x1.3b5ad6p+0,0x1.2e19bap+0,0x1.1e932cp+0,0x1.0d35fap+0,
+0x1.f4d4d4p-1,0x1.cd2486p-1,0x1.a4118ap-1,0x1.7a4556p-1,0x1.505c58p-1,
+0x1.26e5f6p-1,0x1.fcc918p-2,0x1.ae9ad4p-2,0x1.6411b4p-2,0x1.1de43ap-2,
+0x1.b95da6p-3,0x1.41e7b6p-3,0x1.ac6e6ep-4,0x1.dba252p-5,0x1.2320cep-6,
+-0x1.0910aap-6,-0x1.66a7e2p-5,-0x1.0acf68p-4,-0x1.498724p-4,-0x1.70b4p-4,
+-0x1.81f722p-4,-0x1.7f59f6p-4,-0x1.6b4e36p-4,-0x1.48ade2p-4,-0x1.1abb44p-4,
+-0x1.ca41dep-5,-0x1.57e382p-5,-0x1.cea37cp-6,-0x1.04a6e4p-6,-0x1.9c007cp-8,
+-0x1.8fe652p-11,-0x1.b2a968p-11,-0x1.08a976p-7,-0x1.8c70f8p-6,-0x1.a19f5p-5,
+-0x1.71ecdcp-4,-0x1.274ccap-3,-0x1.b7b1eap-3,-0x1.37507ap-2,-0x1.a86498p-2,
+-0x1.18c384p-1,-0x1.6aa1cap-1,-0x1.cb200cp-1,-0x1.1dcf2p+0,-0x1.5ec4b6p+0,
+-0x1.a92dc8p+0,-0x1.fdcde4p+0,0x1.1e16a2p-3,0x1.8e32c8p-2,0x1.334bd8p-1,
+0x1.8d9p-1,0x1.d74c74p-1,0x1.08edbcp+0,0x1.1f4572p+0,0x1.2f4e22p+0,
+0x1.39a25ep+0,0x1.3ed686p+0,0x1.3f78d4p+0,0x1.3c114cp+0,0x1.3521c4p+0,
+0x1.2b25e6p+0,0x1.1e932cp+0,0x1.0fd8e2p+0,0x1.fec042p-1,0x1.db17bp-1,
+0x1.b5718cp-1,0x1.8e7af4p-1,0x1.66d4a8p-1,0x1.3f130ep-1,0x1.17be2ap-1,
+0x1.e2a34ep-2,0x1.98799ep-2,0x1.51c51ep-2,0x1.0f32ecp-2,0x1.a2aedep-3,
+0x1.315c9ap-3,0x1.9669dp-4,0x1.c330b2p-5,0x1.142a9cp-6,-0x1.f6e2b8p-7,
+-0x1.543942p-5,-0x1.fa324cp-5,-0x1.3897bep-4,-0x1.5dc132p-4,-0x1.6e2138p-4,
+-0x1.6ba67p-4,-0x1.58a26ap-4,-0x1.37c9a6p-4,-0x1.0c3388p-4,-0x1.b2b4dap-5,
+-0x1.46372ap-5,-0x1.b6dcd4p-6,-0x1.ee834ep-7,-0x1.86d406p-8,-0x1.7b5914p-11,
+-0x1.9c52d4p-11,-0x1.f61eeep-8,-0x1.78113cp-6,-0x1.8c28e8p-5,-0x1.5ee9fap-4,
+-0x1.181fb4p-3,-0x1.a1191cp-3,-0x1.2750b4p-2,-0x1.92951cp-2,-0x1.0a55aep-1,
+-0x1.57fedcp-1,-0x1.b3879ep-1,-0x1.0f1eeap+0,-0x1.4cbddcp+0,-0x1.9353f6p+0,
+-0x1.e39ab4p+0,0x1.0cc0fap-3,0x1.761224p-2,0x1.20ad3ap-1,0x1.757938p-1,
+0x1.babdeap-1,0x1.f1c098p-1,0x1.0ddd72p+0,0x1.1ced6cp+0,0x1.26a17p+0,
+0x1.2b84ep+0,0x1.2c1d58p+0,0x1.28ea9ep+0,0x1.2266acp+0,0x1.1905acp+0,
+0x1.0d35fap+0,0x1.fec042p-1,0x1.dfcdc2p-1,0x1.be4e4ep-1,0x1.9af026p-1,
+0x1.7655eep-1,0x1.5116a8p-1,0x1.2bbdbcp-1,0x1.06cafp-1,0x1.c564ep-2,
+0x1.7fb99p-2,0x1.3d4dcep-2,0x1.fd8874p-3,0x1.89507ap-3,0x1.1edbfep-3,
+0x1.7dc9bep-4,0x1.a7da1p-5,0x1.036edcp-6,-0x1.d86a38p-7,-0x1.3f9be4p-5,
+-0x1.db867p-5,-0x1.25a6f8p-4,-0x1.488ffcp-4,-0x1.57f2p-4,-0x1.559dbp-4,
+-0x1.43c0ap-4,-0x1.24e55cp-4,-0x1.f7e6acp-5,-0x1.985de8p-5,-0x1.327316p-5,
+-0x1.9c456ap-6,-0x1.d08caep-7,-0x1.6f25b4p-8,-0x1.645cd4p-11,-0x1.835714p-11,
+-0x1.d7b24ap-8,-0x1.6147dep-6,-0x1.7427e2p-5,-0x1.49a6c8p-4,-0x1.072692p-3,
+-0x1.87d34ep-3,-0x1.156becp-2,-0x1.7a3076p-2,-0x1.f464dep-2,-0x1.4326fap-1,
+-0x1.9923e8p-1,-0x1.fd62dap-1,-0x1.38948cp+0,-0x1.7ae3cp+0,-0x1.c64d48p+0,
+0x1.f3fb2cp-4,0x1.5bf46ep-2,0x1.0c85c2p-1,0x1.5b663p-1,0x1.9bd4dep-1,
+0x1.cf005ap-1,0x1.f60c64p-1,0x1.0908f6p+0,0x1.120f8cp+0,0x1.169bap+0,
+0x1.172972p+0,0x1.142fe2p+0,0x1.0e2062p+0,0x1.056702p+0,0x1.f4d4d4p-1,
+0x1.db17bp-1,0x1.be4e4ep-1,0x1.9f258ep-1,0x1.7e3f86p-1,0x1.5c337ep-1,
+0x1.398deep-1,0x1.16d082p-1,0x1.e8e42ep-2,0x1.a5bd7p-2,0x1.64ef5p-2,
+0x1.2726aep-2,0x1.d9f5a8p-3,0x1.6ddad4p-3,0x1.0ad5p-3,0x1.63221cp-4,
+0x1.8a42a2p-5,0x1.e2a41cp-7,-0x1.b76ed4p-7,-0x1.294b92p-5,-0x1.ba5374p-5,
+-0x1.112692p-4,-0x1.319fa4p-4,-0x1.3feebap-4,-0x1.3dc40ap-4,-0x1.2d264p-4,
+-0x1.10727ap-4,-0x1.d4b888p-5,-0x1.7bdb3cp-5,-0x1.1d0df6p-5,-0x1.7f7cf6p-6,
+-0x1.b01ddcp-7,-0x1.5583bep-8,-0x1.4b7b9ep-11,-0x1.684c36p-11,-0x1.b6c3bcp-8,
+-0x1.489dbep-6,-0x1.5a2c68p-5,-0x1.32a2fap-4,-0x1.e98ea6p-4,-0x1.6c7846p-3,
+-0x1.020d9ep-2,-0x1.5fc926p-2,-0x1.d17568p-2,-0x1.2c9756p-1,-0x1.7c9368p-1,
+-0x1.d9d2aep-1,-0x1.22c1dap+0,-0x1.606feap+0,-0x1.a695ap+0,0x1.cc5c1ep-4,
+0x1.406184p-2,0x1.ee7c8cp-2,0x1.3fde8cp-1,0x1.7b3218p-1,0x1.aa4f8p-1,
+0x1.ce4364p-1,0x1.e81076p-1,0x1.f8af6ep-1,0x1.00878ap+0,0x1.010a2p+0,
+0x1.fc99dp-1,0x1.f170b8p-1,0x1.e15ff2p-1,0x1.cd2486p-1,0x1.b5718cp-1,
+0x1.9af026p-1,0x1.7e3f86p-1,0x1.5ff4e6p-1,0x1.409b94p-1,0x1.20b4e4p-1,
+0x1.00b83cp-1,0x1.c2261ap-2,0x1.8451a8p-2,0x1.48a638p-2,0x1.0fc2fep-2,
+0x1.b4668p-3,0x1.50dcc8p-3,0x1.eb5fap-4,0x1.46fd9p-4,0x1.6b0452p-5,
+0x1.bc64d6p-7,-0x1.949c1ap-7,-0x1.11bc62p-5,-0x1.97460cp-5,-0x1.f70264p-5,
+-0x1.19677ep-4,-0x1.26944cp-4,-0x1.24959p-4,-0x1.1548ep-4,-0x1.f5b6cp-5,
+-0x1.af93a6p-5,-0x1.5dc122p-5,-0x1.067718p-5,-0x1.61193p-6,-0x1.8ddf9p-7,
+-0x1.3a737ap-8,-0x1.3136dep-11,-0x1.4bbee6p-11,-0x1.93fe94p-8,-0x1.2e9326p-6,
+-0x1.3ebdap-5,-0x1.1a5646p-4,-0x1.c2c31p-4,-0x1.4f9652p-3,-0x1.db350ap-3,
+-0x1.43e884p-2,-0x1.ac92b4p-2,-0x1.14c548p-1,-0x1.5e6ab6p-1,-0x1.b4464ap-1,
+-0x1.0bb74cp+0,-0x1.448212p+0,-0x1.8518b4p+0,0x1.a35afap-4,0x1.23d82ep-2,
+0x1.c27142p-2,0x1.2360ep-1,0x1.596baap-1,0x1.8456c2p-1,0x1.a516dcp-1,
+0x1.bc979cp-1,0x1.cbbb96p-1,0x1.d35c4cp-1,0x1.d44a34p-1,0x1.cf4cbp-1,
+0x1.c52214p-1,0x1.b67fap-1,0x1.a4118ap-1,0x1.8e7af4p-1,0x1.7655eep-1,
+0x1.5c337ep-1,0x1.409b94p-1,0x1.240d14p-1,0x1.06fdccp-1,0x1.d3b504p-2,
+0x1.9a0dccp-2,0x1.61bb32p-2,0x1.2b605ap-2,0x1.ef1c8cp-3,0x1.8d87bp-3,
+0x1.32dba2p-3,0x1.bf9b5p-4,0x1.29dd86p-4,0x1.4aaecep-5,0x1.94cfcp-7,
+-0x1.70923p-7,-0x1.f2b54cp-6,-0x1.72ff62p-5,-0x1.ca34c4p-5,-0x1.0056e8p-4,
+-0x1.0c574ap-4,-0x1.0a860ep-4,-0x1.f92c72p-5,-0x1.c906a8p-5,-0x1.8922d4p-5,
+-0x1.3e9a08p-5,-0x1.de2cb8p-6,-0x1.41a5d4p-6,-0x1.6a6f4p-7,-0x1.1e715cp-8,
+-0x1.16075ep-11,-0x1.2e326cp-11,-0x1.7002bp-8,-0x1.139fd4p-6,-0x1.2259b2p-5,
+-0x1.01306cp-4,-0x1.9a9cc6p-4,-0x1.31b24p-3,-0x1.b0e15cp-3,-0x1.270ecp-2,
+-0x1.86666p-2,-0x1.f83cb2p-2,-0x1.3f348p-1,-0x1.8d6a5ap-1,-0x1.e7bda8p-1,
+-0x1.279aap+0,-0x1.627084p+0,0x1.79a0f2p-4,0x1.06ce2cp-2,0x1.959f5cp-2,
+0x1.0662bcp-1,0x1.370ceep-1,0x1.5db2cap-1,0x1.7b30a8p-1,0x1.905abap-1,
+0x1.9dfd08p-1,0x1.a4db74p-1,0x1.a5b1aep-1,0x1.a13348p-1,0x1.980ba2p-1,
+0x1.8addf6p-1,0x1.7a4556p-1,0x1.66d4a8p-1,0x1.5116a8p-1,0x1.398deep-1,
+0x1.20b4e4p-1,0x1.06fdccp-1,0x1.d9a57ep-2,0x1.a52b58p-2,0x1.7140b2p-2,
+0x1.3e88c6p-2,0x1.0d967cp-2,0x1.bdd8dp-3,0x1.65f998p-3,0x1.145332p-3,
+0x1.9311a6p-4,0x1.0c3a24p-4,0x1.29c77ap-5,0x1.6c883p-7,-0x1.4be5cp-7,
+-0x1.c115f2p-6,-0x1.4e1524p-5,-0x1.9c9d1ap-5,-0x1.cdaa98p-5,-0x1.e347f2p-5,
+-0x1.e0020ep-5,-0x1.c6e866p-5,-0x1.9b8d0ep-5,-0x1.6204aap-5,-0x1.1ee672p-5,
+-0x1.ae9868p-6,-0x1.21a4a8p-6,-0x1.465f22p-7,-0x1.01f0fp-8,-0x1.f4ba8cp-12,
+-0x1.1020b6p-11,-0x1.4b6488p-8,-0x1.f065f8p-7,-0x1.0575bep-5,-0x1.cf3256p-5,
+-0x1.71c172p-4,-0x1.134766p-3,-0x1.85cecep-3,-0x1.09b2e4p-2,-0x1.5f8de8p-2,
+-0x1.c61082p-2,-0x1.1f718cp-1,-0x1.65df2ep-1,-0x1.b735acp-1,-0x1.0a30dap+0,
+-0x1.3f2c0ep+0,0x1.4fca2ap-4,0x1.d3605p-3,0x1.68ae96p-2,0x1.d2a14p-2,
+0x1.149688p-1,0x1.36f434p-1,0x1.512d98p-1,0x1.63ff6p-1,0x1.701efap-1,
+0x1.763a92p-1,0x1.76f912p-1,0x1.72fa2p-1,0x1.6ad624p-1,0x1.5f1e4p-1,
+0x1.505c58p-1,0x1.3f130ep-1,0x1.2bbdbcp-1,0x1.16d082p-1,0x1.00b83cp-1,
+0x1.d3b504p-2,0x1.a52b58p-2,0x1.76819cp-2,0x1.48577cp-2,0x1.1b3e1cp-2,
+0x1.df7032p-3,0x1.8c7326p-3,0x1.3e5044p-3,0x1.eb6b7p-4,0x1.66694ep-4,
+0x1.dd04b2p-5,0x1.08c97ep-5,0x1.4424ep-7,-0x1.27201p-7,-0x1.8f546ap-6,
+-0x1.29117ap-5,-0x1.6ee60ap-5,-0x1.9a843cp-5,-0x1.adbc86p-5,-0x1.aad378p-5,
+-0x1.9481bep-5,-0x1.6df422p-5,-0x1.3acb8ep-5,-0x1.fe3a0cp-6,-0x1.7ee352p-6,
+-0x1.018d6ep-6,-0x1.22362cp-7,-0x1.cab9c6p-9,-0x1.bd404p-12,-0x1.e3f49p-12,
+-0x1.26ad28p-8,-0x1.b9668p-7,-0x1.d0fbc6p-6,-0x1.9be094p-5,-0x1.48c9fap-4,
+-0x1.e98f32p-4,-0x1.5a9e98p-3,-0x1.d885ap-3,-0x1.389abp-2,-0x1.93c1c4p-2,
+-0x1.ff316ep-2,-0x1.3e38c6p-1,-0x1.868c42p-1,-0x1.d965ap-1,-0x1.1bcf4cp+0,
+0x1.2665cep-4,0x1.99c388p-3,0x1.3c38b6p-2,0x1.991c06p-2,0x1.e4fcbcp-2,
+0x1.109f92p-1,0x1.279d6ap-1,0x1.381d52p-1,0x1.42be5ap-1,0x1.481934p-1,
+0x1.48c038p-1,0x1.453f6p-1,0x1.3e1c46p-1,0x1.33d62ep-1,0x1.26e5f6p-1,
+0x1.17be2ap-1,0x1.06cafp-1,0x1.e8e42ep-2,0x1.c2261ap-2,0x1.9a0dccp-2,
+0x1.7140b2p-2,0x1.48577cp-2,0x1.1fde28p-2,0x1.f0a7e6p-3,0x1.a456c8p-3,
+0x1.5b949p-3,0x1.171364p-3,0x1.aed7eep-4,0x1.3a3b14p-4,0x1.a237a6p-5,
+0x1.d04b74p-6,0x1.1c3002p-7,-0x1.02beeep-7,-0x1.5e1af4p-6,-0x1.047306p-5,
+-0x1.41abfcp-5,-0x1.67e9cp-5,-0x1.78c386p-5,-0x1.76365p-5,-0x1.62a4e6p-5,
+-0x1.40d7e6p-5,-0x1.13fdb6p-5,-0x1.bf550cp-6,-0x1.4fb0b4p-6,-0x1.c39beep-7,
+-0x1.fce03p-8,-0x1.922dfap-9,-0x1.865dacp-12,-0x1.a84c9ap-12,-0x1.025a3p-8,
+-0x1.82fd6ep-7,-0x1.97aa8p-6,-0x1.691b26p-5,-0x1.204288p-4,-0x1.ad3664p-4,
+-0x1.2fe47ap-3,-0x1.9e4676p-3,-0x1.1211fap-2,-0x1.61fc98p-2,-0x1.c02dfp-2,
+-0x1.16fecap-1,-0x1.5667eap-1,-0x1.9f0adap-1,-0x1.f1a67ap-1,0x1.fbebfap-5,
+0x1.617b22p-3,0x1.10c982p-2,0x1.60eaa2p-2,0x1.a25f46p-2,0x1.d65acep-2,
+0x1.fe059ap-2,0x1.0d3e88p-1,0x1.1669d2p-1,0x1.1b086p-1,0x1.1b9874p-1,
+0x1.1892cap-1,0x1.126aa8p-1,0x1.098ddp-1,0x1.fcc918p-2,0x1.e2a34ep-2,
+0x1.c564ep-2,0x1.a5bd7p-2,0x1.8451a8p-2,0x1.61bb32p-2,0x1.3e88c6p-2,
+0x1.1b3e1cp-2,0x1.f0a7e6p-3,0x1.ac7024p-3,0x1.6a9a86p-3,0x1.2bd6b2p-3,
+0x1.e17caap-4,0x1.73aa5p-4,0x1.0f11ep-4,0x1.68c6p-5,0x1.90859ap-6,0x1.ea4e6ap-8,
+-0x1.be6976p-8,-0x1.2e044ep-6,-0x1.c159dap-6,-0x1.157d22p-5,-0x1.367a3cp-5,
+-0x1.45038p-5,-0x1.42dp-5,-0x1.31eea8p-5,-0x1.14c62ep-5,-0x1.dc2a3ep-6,
+-0x1.81e3a4p-6,-0x1.2194eep-6,-0x1.859424p-7,-0x1.b6facp-8,-0x1.5af042p-9,
+-0x1.50bf5ap-12,-0x1.6e051ap-12,-0x1.bdbba6p-9,-0x1.4dd5d2p-7,-0x1.5fabdep-6,
+-0x1.3781bp-5,-0x1.f15512p-5,-0x1.72422p-4,-0x1.0626ccp-3,-0x1.655f6ep-3,
+-0x1.d8d9dap-3,-0x1.315d78p-2,-0x1.829ebep-2,-0x1.e15922p-2,-0x1.276p-1,
+-0x1.6608d8p-1,-0x1.ad4bcp-1,0x1.addfbp-5,0x1.2b2a22p-3,0x1.cdbd94p-3,
+0x1.2aafd6p-2,0x1.6215a2p-2,0x1.8e144ep-2,0x1.afa6b2p-2,0x1.c7be5cp-2,
+0x1.d7438ep-2,0x1.df154p-2,0x1.e0092p-2,0x1.daeb9p-2,0x1.d07facp-2,0x1.c17f4p-2,
+0x1.ae9ad4p-2,0x1.98799ep-2,0x1.7fb99p-2,0x1.64ef5p-2,0x1.48a638p-2,
+0x1.2b605ap-2,0x1.0d967cp-2,0x1.df7032p-3,0x1.a456c8p-3,0x1.6a9a86p-3,
+0x1.32e2aap-3,0x1.fb87bp-4,0x1.97804p-4,0x1.3a8dfep-4,0x1.cad56cp-5,
+0x1.315622p-5,0x1.52fa24p-6,0x1.9ef712p-8,-0x1.79d0cep-8,-0x1.ff378ap-7,
+-0x1.7c4d94p-6,-0x1.d5b2eep-6,-0x1.06c4e2p-5,-0x1.131254p-5,-0x1.11356cp-5,
+-0x1.02ec18p-5,-0x1.d47d4p-6,-0x1.92ff2ep-6,-0x1.4697cap-6,-0x1.ea2b1ap-7,
+-0x1.49b726p-7,-0x1.738678p-8,-0x1.25a0ap-9,-0x1.1d009ap-12,-0x1.35c6dap-12,
+-0x1.793db4p-9,-0x1.1a89a2p-7,-0x1.29a20cp-6,-0x1.07a3dap-5,-0x1.a4e958p-5,
+-0x1.395d26p-4,-0x1.bbbce8p-4,-0x1.2e7556p-3,-0x1.903128p-3,-0x1.027138p-2,
+-0x1.473624p-2,-0x1.97622ep-2,-0x1.f3f978p-2,-0x1.2f04b8p-1,-0x1.6b5466p-1,
+0x1.6376f6p-5,0x1.eec2e2p-4,0x1.7dd0c2p-3,0x1.edf89ep-3,0x1.24cb4ep-2,
+0x1.492c76p-2,0x1.64ef36p-2,0x1.78db48p-2,0x1.85b0bcp-2,0x1.8c27f2p-2,
+0x1.8cf19ap-2,0x1.88b6b8p-2,0x1.8018ap-2,0x1.73b0f8p-2,0x1.6411b4p-2,
+0x1.51c51ep-2,0x1.3d4dcep-2,0x1.2726aep-2,0x1.0fc2fep-2,0x1.ef1c8cp-3,
+0x1.bdd8dp-3,0x1.8c7326p-3,0x1.5b949p-3,0x1.2bd6b2p-3,0x1.fb87bp-4,
+0x1.a3add4p-4,0x1.50f6eap-4,0x1.041b54p-4,0x1.7b696ap-5,0x1.f8f7e6p-6,
+0x1.184d42p-6,0x1.5722fcp-8,-0x1.386ae4p-8,-0x1.a6ba4cp-7,-0x1.3a7972p-6,
+-0x1.846574p-6,-0x1.b291eap-6,-0x1.c6ea8p-6,-0x1.c3d5cap-6,-0x1.ac3546p-6,
+-0x1.83656p-6,-0x1.4d3d6ep-6,-0x1.0e0faep-6,-0x1.955294p-7,-0x1.10a4aep-7,
+-0x1.33374cp-8,-0x1.e59a96p-10,-0x1.d756f2p-13,-0x1.0027e8p-12,-0x1.37f142p-9,
+-0x1.d3437p-8,-0x1.ec3a72p-7,-0x1.b402aap-6,-0x1.5c0dc2p-5,-0x1.031f4p-4,
+-0x1.6eedd4p-4,-0x1.f4356p-4,-0x1.4aebb2p-3,-0x1.ab6a0ep-3,-0x1.0e929ep-2,
+-0x1.50de0cp-2,-0x1.9d6e6ap-2,-0x1.f52282p-2,-0x1.2c7064p-1,0x1.1d67fap-5,
+0x1.8d3fb2p-4,0x1.32904p-3,0x1.8c9d4cp-3,0x1.d62cbep-3,0x1.084cp-2,
+0x1.1e9614p-2,0x1.2e94fap-2,0x1.38e2e6p-2,0x1.3e13e2p-2,0x1.3eb5ccp-2,
+0x1.3b5058p-2,0x1.34650cp-2,0x1.2a6f46p-2,0x1.1de43ap-2,0x1.0f32ecp-2,
+0x1.fd8874p-3,0x1.d9f5a8p-3,0x1.b4668p-3,0x1.8d87bp-3,0x1.65f998p-3,
+0x1.3e5044p-3,0x1.171364p-3,0x1.e17caap-4,0x1.97804p-4,0x1.50f6eap-4,
+0x1.0e8d5ep-4,0x1.a1af46p-5,0x1.30a23p-5,0x1.9571b6p-6,0x1.c21d4p-7,
+0x1.138204p-8,-0x1.f5afb8p-9,-0x1.53699p-7,-0x1.f8fd46p-7,-0x1.37d8eap-6,
+-0x1.5cebaep-6,-0x1.6d41b4p-6,-0x1.6ac87p-6,-0x1.57d006p-6,-0x1.370b4ep-6,
+-0x1.0b8fcep-6,-0x1.b1ab78p-7,-0x1.457006p-7,-0x1.b5d0e8p-8,-0x1.ed556ap-9,
+-0x1.85e57p-10,-0x1.7a717ep-13,-0x1.9b571cp-13,-0x1.f4ec64p-10,-0x1.772ba6p-8,
+-0x1.8b371p-7,-0x1.5e13cp-6,-0x1.1774b2p-5,-0x1.a01a7cp-5,-0x1.269c6ap-4,
+-0x1.919f58p-4,-0x1.09b316p-3,-0x1.572cdcp-3,-0x1.b27dbcp-3,-0x1.0e7966p-2,
+-0x1.4bf2bap-2,-0x1.925dbep-2,-0x1.e2737ap-2,0x1.b89dd6p-6,0x1.32a41p-4,
+0x1.d94798p-4,0x1.3226b4p-3,0x1.6aeeeap-3,0x1.98070cp-3,0x1.ba7038p-3,
+0x1.d32204p-3,0x1.e30a8p-3,0x1.eb0e38p-3,0x1.ec083p-3,0x1.e6c9e6p-3,
+0x1.dc1b56p-3,0x1.ccbaf2p-3,0x1.b95da6p-3,0x1.a2aedep-3,0x1.89507ap-3,
+0x1.6ddad4p-3,0x1.50dcc8p-3,0x1.32dba2p-3,0x1.145332p-3,0x1.eb6b7p-4,
+0x1.aed7eep-4,0x1.73aa5p-4,0x1.3a8dfep-4,0x1.041b54p-4,0x1.a1af46p-5,
+0x1.426a6p-5,0x1.d64cdap-6,0x1.38f78cp-6,0x1.5b72c6p-7,0x1.a955d8p-9,
+-0x1.8341e8p-9,-0x1.05ff0ap-7,-0x1.85ce9ap-7,-0x1.e16fdep-7,-0x1.0d55f8p-6,
+-0x1.19f21ep-6,-0x1.18094ap-6,-0x1.096492p-6,-0x1.e03272p-7,-0x1.9d1162p-7,
+-0x1.4ec132p-7,-0x1.f66afep-8,-0x1.51f488p-8,-0x1.7ccf54p-9,-0x1.2cf72p-10,
+-0x1.241feep-13,-0x1.3d84acp-13,-0x1.82ab22p-10,-0x1.21993p-8,-0x1.31122ep-7,
+-0x1.0e3a82p-6,-0x1.af6e28p-6,-0x1.4131eap-5,-0x1.c6d3c2p-5,-0x1.360456p-4,
+-0x1.9a316ap-4,-0x1.08e6ap-3,-0x1.4f638p-3,-0x1.a19072p-3,-0x1.003c0cp-2,
+-0x1.36974ep-2,-0x1.7468d4p-2,0x1.415bdp-6,0x1.bf4a4p-5,0x1.592e5ep-4,
+0x1.be9366p-4,0x1.08b384p-3,0x1.299718p-3,0x1.42aff8p-3,0x1.54b2b2p-3,
+0x1.604cecp-3,0x1.66255p-3,0x1.66dbap-3,0x1.6308a6p-3,0x1.5b3e38p-3,
+0x1.500742p-3,0x1.41e7b6p-3,0x1.315c9ap-3,0x1.1edbfep-3,0x1.0ad5p-3,
+0x1.eb5fap-4,0x1.bf9b5p-4,0x1.9311a6p-4,0x1.66694ep-4,0x1.3a3b14p-4,
+0x1.0f11ep-4,0x1.cad56cp-5,0x1.7b696ap-5,0x1.30a23p-5,0x1.d64cdap-6,
+0x1.570212p-6,0x1.c8848ep-7,0x1.fad0ap-8,0x1.3636a6p-9,-0x1.1a711ap-9,
+-0x1.7e2bp-8,-0x1.1c4d22p-7,-0x1.5f216ep-7,-0x1.88dfbep-7,-0x1.9b4492p-7,
+-0x1.987b88p-7,-0x1.831f5ep-7,-0x1.5e39ecp-7,-0x1.2d443p-7,-0x1.e84c8ap-8,
+-0x1.6e6eccp-8,-0x1.ecf7bp-9,-0x1.15bd46p-9,-0x1.b702e2p-11,-0x1.aa1d9cp-14,
+-0x1.cf2818p-14,-0x1.1a0322p-10,-0x1.a66e3ap-9,-0x1.bd0008p-8,-0x1.8a2d1cp-7,
+-0x1.3aa8a6p-6,-0x1.d48512p-6,-0x1.4bb918p-5,-0x1.c436f2p-5,-0x1.2b2b6cp-4,
+-0x1.8267a4p-4,-0x1.e9394ap-4,-0x1.308bb4p-3,-0x1.75c376p-3,-0x1.c50d52p-3,
+-0x1.0f9cd4p-2,0x1.abb43cp-7,0x1.29a794p-5,0x1.cb68f2p-5,0x1.292de4p-4,
+0x1.604c1cp-4,0x1.8c11fp-4,0x1.ad78f2p-4,0x1.c5717cp-4,0x1.d4e2ap-4,
+0x1.dcaa36p-4,0x1.dd9cdap-4,0x1.d885e8p-4,0x1.ce277ap-4,0x1.bf3a72p-4,
+0x1.ac6e6ep-4,0x1.9669dp-4,0x1.7dc9bep-4,0x1.63221cp-4,0x1.46fd9p-4,
+0x1.29dd86p-4,0x1.0c3a24p-4,0x1.dd04b2p-5,0x1.a237a6p-5,0x1.68c6p-5,
+0x1.315622p-5,0x1.f8f7e6p-6,0x1.9571b6p-6,0x1.38f78cp-6,0x1.c8848ep-7,
+0x1.2fcb98p-7,0x1.514422p-8,0x1.9cdee2p-10,-0x1.77e89ep-10,-0x1.fca2fap-9,
+-0x1.7a622ep-8,-0x1.d35406p-8,-0x1.05715ap-7,-0x1.11aee6p-7,-0x1.0fd466p-7,
+-0x1.019d8ap-7,-0x1.d21fe8p-8,-0x1.90f674p-8,-0x1.44f1cap-8,-0x1.e7b1bep-9,
+-0x1.480d1ep-9,-0x1.71a668p-10,-0x1.242538p-11,-0x1.1b9058p-14,-0x1.343694p-14,
+-0x1.775642p-11,-0x1.191c8ep-9,-0x1.282178p-8,-0x1.064f32p-7,-0x1.a2c978p-7,
+-0x1.37c83ep-6,-0x1.b97f8ap-6,-0x1.2cee86p-5,-0x1.8e2c0ep-5,-0x1.012346p-4,
+-0x1.458f56p-4,-0x1.9553cap-4,-0x1.f1737p-4,-0x1.2d7d2ep-3,-0x1.697eeep-3,
+0x1.dad39ep-8,0x1.4a72eap-6,0x1.fe0698p-6,0x1.49ebd4p-5,0x1.871ca4p-5,
+0x1.b7b514p-5,0x1.dcca36p-5,0x1.f766d6p-5,0x1.0445c2p-4,0x1.089744p-4,
+0x1.091df4p-4,0x1.064ab4p-4,0x1.008944p-4,0x1.f08082p-5,0x1.dba252p-5,
+0x1.c330b2p-5,0x1.a7da1p-5,0x1.8a42a2p-5,0x1.6b0452p-5,0x1.4aaecep-5,
+0x1.29c77ap-5,0x1.08c97ep-5,0x1.d04b74p-6,0x1.90859ap-6,0x1.52fa24p-6,
+0x1.184d42p-6,0x1.c21d4p-7,0x1.5b72c6p-7,0x1.fad0ap-8,0x1.514422p-8,
+0x1.766cb8p-9,0x1.ca5be4p-11,-0x1.a1531cp-11,-0x1.1a5688p-9,-0x1.a4127ap-9,
+-0x1.03688p-8,-0x1.223f56p-8,-0x1.2fd62p-8,-0x1.2dc758p-8,-0x1.1dff92p-8,
+-0x1.02bd78p-8,-0x1.bd2398p-9,-0x1.68bed8p-9,-0x1.0eb694p-9,-0x1.6c31cap-10,
+-0x1.9a606p-11,-0x1.44552cp-12,-0x1.3ace42p-15,-0x1.562bbap-15,-0x1.a0b0ap-12,
+-0x1.38154cp-10,-0x1.48c1d4p-9,-0x1.23359ep-8,-0x1.d0ed5ap-8,-0x1.5a220ep-7,
+-0x1.ea23fcp-7,-0x1.4e164ap-6,-0x1.ba0a7ep-6,-0x1.1d77d8p-5,-0x1.696dcp-5,
+-0x1.c1fc08p-5,-0x1.142104p-4,-0x1.4eb4acp-4,-0x1.9152e8p-4,0x1.22a248p-9,
+0x1.94867p-8,0x1.382dc4p-7,0x1.93e112p-7,0x1.dec972p-7,0x1.0d2352p-6,
+0x1.23d5eap-6,0x1.341fd2p-6,0x1.3e9e1p-6,0x1.43e764p-6,0x1.448c44p-6,
+0x1.4116e4p-6,0x1.3a0b26p-6,0x1.2fe6acp-6,0x1.2320cep-6,0x1.142a9cp-6,
+0x1.036edcp-6,0x1.e2a41cp-7,0x1.bc64d6p-7,0x1.94cfcp-7,0x1.6c883p-7,
+0x1.4424ep-7,0x1.1c3002p-7,0x1.ea4e6ap-8,0x1.9ef712p-8,0x1.5722fcp-8,
+0x1.138204p-8,0x1.a955d8p-9,0x1.3636a6p-9,0x1.9cdee2p-10,0x1.ca5be4p-11,
+0x1.188de8p-12,-0x1.fee03p-13,-0x1.59a11cp-11,-0x1.011e9ep-10,-0x1.3d8f34p-10,
+-0x1.634fdp-10,-0x1.73f27p-10,-0x1.716d92p-10,-0x1.5e1c34p-10,-0x1.3cbdd4p-10,
+-0x1.10766ep-10,-0x1.b99dp-11,-0x1.4b660ap-11,-0x1.bdd5e2p-12,-0x1.f65eb8p-13,
+-0x1.8d09b4p-14,-0x1.81601p-17,-0x1.a2dffp-17,-0x1.fe1948p-14,-0x1.7e0aep-12,
+-0x1.927446p-11,-0x1.647d4ep-10,-0x1.1c931ap-9,-0x1.a7b9a4p-9,-0x1.2c01e2p-8,
+-0x1.98fa9ap-8,-0x1.0e90fcp-7,-0x1.5d760cp-7,-0x1.ba731ep-7,-0x1.136dbp-6,
+-0x1.520746p-6,-0x1.99bc7cp-6,-0x1.eb49bep-6,-0x1.089d78p-9,-0x1.704f7p-8,
+-0x1.1c3b2cp-7,-0x1.6fb8dep-7,-0x1.b3ec7ep-7,-0x1.ea164cp-7,-0x1.09b58ep-6,
+-0x1.188a26p-6,-0x1.2217e8p-6,-0x1.26e814p-6,-0x1.277e34p-6,-0x1.245814p-6,
+-0x1.1dedd2p-6,-0x1.14b1ccp-6,-0x1.0910aap-6,-0x1.f6e2b8p-7,-0x1.d86a38p-7,
+-0x1.b76ed4p-7,-0x1.949c1ap-7,-0x1.70923p-7,-0x1.4be5cp-7,-0x1.27201p-7,
+-0x1.02beeep-7,-0x1.be6976p-8,-0x1.79d0cep-8,-0x1.386ae4p-8,-0x1.f5afb8p-9,
+-0x1.8341e8p-9,-0x1.1a711ap-9,-0x1.77e89ep-10,-0x1.a1531cp-11,-0x1.fee03p-13,
+0x1.d123dp-13,0x1.3aafe4p-11,0x1.d433c6p-11,0x1.21214cp-10,0x1.4380bp-10,
+0x1.52a61p-10,0x1.505aeep-10,0x1.3ec44cp-10,0x1.2062acp-10,0x1.f02422p-11,
+0x1.9214p-11,0x1.2dbaf6p-11,0x1.95ec1ep-12,0x1.c96548p-13,0x1.697e4cp-14,
+0x1.5edffp-17,0x1.7d601p-17,0x1.d06eb8p-14,0x1.5bd72p-12,0x1.6e6cbap-11,
+0x1.449332p-10,0x1.031926p-9,0x1.81ca9cp-9,0x1.11263ep-8,0x1.745d86p-8,
+0x1.ecb028p-8,0x1.3e2d04p-7,0x1.92d6f2p-7,0x1.f58ab2p-7,0x1.33c442p-6,
+0x1.750e0cp-6,0x1.bf4e4ap-6,-0x1.660c02p-8,-0x1.f25afcp-7,-0x1.8096dp-6,
+-0x1.f18f4p-6,-0x1.26ebdp-5,-0x1.4b90ap-5,-0x1.6786fep-5,-0x1.7b981ep-5,
+-0x1.88857p-5,-0x1.8f08acp-5,-0x1.8fd3ccp-5,-0x1.8b910cp-5,-0x1.82e2eep-5,
+-0x1.766432p-5,-0x1.66a7e2p-5,-0x1.543942p-5,-0x1.3f9be4p-5,-0x1.294b92p-5,
+-0x1.11bc62p-5,-0x1.f2b54cp-6,-0x1.c115f2p-6,-0x1.8f546ap-6,-0x1.5e1af4p-6,
+-0x1.2e044ep-6,-0x1.ff378ap-7,-0x1.a6ba4cp-7,-0x1.53699p-7,-0x1.05ff0ap-7,
+-0x1.7e2bp-8,-0x1.fca2fap-9,-0x1.1a5688p-9,-0x1.59a11cp-11,0x1.3aafe4p-11,
+0x1.a9cc7p-10,0x1.3cc246p-9,0x1.8737cp-9,0x1.b5ba14p-9,0x1.ca388p-9,
+0x1.c71e0ep-9,0x1.af519cp-9,0x1.8635dp-9,0x1.4fa928p-9,0x1.1005e8p-9,
+0x1.98445ap-10,0x1.129fb6p-10,0x1.3572ap-11,0x1.e921a8p-13,0x1.dac37ep-16,
+0x1.020446p-15,0x1.3a356p-12,0x1.d6a866p-11,0x1.efcdd6p-10,0x1.b72d82p-9,
+0x1.5e9506p-8,0x1.050122p-7,0x1.719834p-7,0x1.f7d79ap-7,0x1.4d531ap-6,
+0x1.ae84e8p-6,0x1.1089ccp-5,0x1.535084p-5,0x1.a06f44p-5,0x1.f8c676p-5,
+0x1.2e9f1ep-4,-0x1.0a5b74p-7,-0x1.72bc32p-6,-0x1.1e1a3ap-5,-0x1.7224a2p-5,
+-0x1.b6cb36p-5,-0x1.ed504ep-5,-0x1.0b7564p-4,-0x1.1a62fap-4,-0x1.2400d6p-4,
+-0x1.28d92p-4,-0x1.29703cp-4,-0x1.2644cep-4,-0x1.1fcfbcp-4,-0x1.168424p-4,
+-0x1.0acf68p-4,-0x1.fa324cp-5,-0x1.db867p-5,-0x1.ba5374p-5,-0x1.97460cp-5,
+-0x1.72ff62p-5,-0x1.4e1524p-5,-0x1.29117ap-5,-0x1.047306p-5,-0x1.c159dap-6,
+-0x1.7c4d94p-6,-0x1.3a7972p-6,-0x1.f8fd46p-7,-0x1.85ce9ap-7,-0x1.1c4d22p-7,
+-0x1.7a622ep-8,-0x1.a4127ap-9,-0x1.011e9ep-10,0x1.d433c6p-11,0x1.3cc246p-9,
+0x1.d748e4p-9,0x1.23089ap-8,0x1.45a1eep-8,0x1.54e0d4p-8,0x1.5291d4p-8,
+0x1.40dd8ep-8,0x1.2248b8p-8,0x1.f36858p-9,0x1.94b9acp-9,0x1.2fb782p-9,
+0x1.989844p-10,0x1.cc683p-11,0x1.6bdf9p-12,0x1.612f5p-15,0x1.7fe2d8p-15,
+0x1.d37d7cp-12,0x1.5e2164p-10,0x1.70d65p-9,0x1.46b63ep-8,0x1.04cdd8p-7,
+0x1.8454d4p-7,0x1.12f29ep-6,0x1.76d11ep-6,0x1.efee8cp-6,0x1.404546p-5,
+0x1.957de6p-5,0x1.f8d802p-5,0x1.35cafap-4,0x1.7782cep-4,0x1.c2403p-4,
+-0x1.48f7eep-7,-0x1.c9e1c8p-6,-0x1.615ae6p-5,-0x1.c92698p-5,-0x1.0ef82ap-4,
+-0x1.30a32p-4,-0x1.4a5424p-4,-0x1.5cc40ep-4,-0x1.68a49cp-4,-0x1.6ea07p-4,
+-0x1.6f5b12p-4,-0x1.6b70e8p-4,-0x1.63774p-4,-0x1.57fc4ep-4,-0x1.498724p-4,
+-0x1.3897bep-4,-0x1.25a6f8p-4,-0x1.112692p-4,-0x1.f70264p-5,-0x1.ca34c4p-5,
+-0x1.9c9d1ap-5,-0x1.6ee60ap-5,-0x1.41abfcp-5,-0x1.157d22p-5,-0x1.d5b2eep-6,
+-0x1.846574p-6,-0x1.37d8eap-6,-0x1.e16fdep-7,-0x1.5f216ep-7,-0x1.d35406p-8,
+-0x1.03688p-8,-0x1.3d8f34p-10,0x1.21214cp-10,0x1.8737cp-9,0x1.23089ap-8,
+0x1.677206p-8,0x1.922d64p-8,0x1.a501bap-8,0x1.a227cep-8,0x1.8c4a26p-8,
+0x1.668508p-8,0x1.34668p-8,0x1.f3dcacp-9,0x1.771c28p-9,0x1.f8a41ep-10,
+0x1.1c50f6p-10,0x1.c1683ap-12,0x1.b434c8p-15,0x1.da1fdp-15,0x1.20b0bap-11,
+0x1.b06f0ep-10,0x1.c789aep-9,0x1.9382a8p-8,0x1.421c26p-7,0x1.df9d4cp-7,
+0x1.53940ap-6,0x1.ceec54p-6,0x1.324106p-5,0x1.8b8e14p-5,0x1.f4cf06p-5,
+0x1.37c1e6p-4,0x1.7e9d42p-4,0x1.cfc7c8p-4,0x1.160b6p-3,-0x1.7013c4p-7,
+-0x1.00287cp-5,-0x1.8b5ceap-5,-0x1.ff7f88p-5,-0x1.2f2edap-4,-0x1.54da76p-4,
+-0x1.71995ep-4,-0x1.863a66p-4,-0x1.93846cp-4,-0x1.9a365ep-4,-0x1.9b072ep-4,
+-0x1.96a5ep-4,-0x1.8db982p-4,-0x1.80e12ap-4,-0x1.70b4p-4,-0x1.5dc132p-4,
+-0x1.488ffcp-4,-0x1.319fa4p-4,-0x1.19677ep-4,-0x1.0056e8p-4,-0x1.cdaa98p-5,
+-0x1.9a843cp-5,-0x1.67e9cp-5,-0x1.367a3cp-5,-0x1.06c4e2p-5,-0x1.b291eap-6,
+-0x1.5cebaep-6,-0x1.0d55f8p-6,-0x1.88dfbep-7,-0x1.05715ap-7,-0x1.223f56p-8,
+-0x1.634fdp-10,0x1.4380bp-10,0x1.b5ba14p-9,0x1.45a1eep-8,0x1.922d64p-8,
+0x1.c1fd44p-8,0x1.d70ea8p-8,0x1.d3ddf6p-8,0x1.bb66d6p-8,0x1.91243ap-8,
+0x1.59105ep-8,0x1.17a4bep-8,0x1.a3b444p-9,0x1.1a513p-9,0x1.3e1dd8p-10,
+0x1.f6d57ep-12,0x1.e8104ap-15,0x1.093ea8p-14,0x1.4302bcp-11,0x1.e3d7cp-10,
+0x1.fdb188p-9,0x1.c37b1ap-8,0x1.68674p-7,0x1.0c50f2p-6,0x1.7bf2c4p-6,
+0x1.02fa78p-5,0x1.56a99p-5,0x1.ba9468p-5,0x1.182c54p-4,0x1.5cd1eep-4,
+0x1.ac19cp-4,0x1.03753ep-3,0x1.371962p-3,-0x1.814f64p-7,-0x1.0c26b2p-5,
+-0x1.9ddf94p-5,-0x1.0bb912p-4,-0x1.3d60bp-4,-0x1.64cfccp-4,-0x1.82e73cp-4,
+-0x1.987f84p-4,-0x1.a668d2p-4,-0x1.ad6b02p-4,-0x1.ae459ap-4,-0x1.a9afccp-4,
+-0x1.a0587ap-4,-0x1.92e62ep-4,-0x1.81f722p-4,-0x1.6e2138p-4,-0x1.57f2p-4,
+-0x1.3feebap-4,-0x1.26944cp-4,-0x1.0c574ap-4,-0x1.e347f2p-5,-0x1.adbc86p-5,
+-0x1.78c386p-5,-0x1.45038p-5,-0x1.131254p-5,-0x1.c6ea8p-6,-0x1.6d41b4p-6,
+-0x1.19f21ep-6,-0x1.9b4492p-7,-0x1.11aee6p-7,-0x1.2fd62p-8,-0x1.73f27p-10,
+0x1.52a61p-10,0x1.ca388p-9,0x1.54e0d4p-8,0x1.a501bap-8,0x1.d70ea8p-8,
+0x1.ed1c9p-8,0x1.e9c5ap-8,0x1.d02946p-8,0x1.a3ec28p-8,0x1.69382ap-8,
+0x1.24bc7p-8,0x1.b75aacp-9,0x1.2788eep-9,0x1.4d02aap-10,0x1.073022p-11,
+0x1.feea06p-15,0x1.15a9c6p-14,0x1.522238p-11,0x1.fa7ee6p-10,0x1.0ac742p-8,
+0x1.d89e5ep-8,0x1.7946e6p-7,0x1.18e0ep-6,0x1.8dbcaep-6,0x1.0f1a7cp-5,
+0x1.66b494p-5,0x1.cf4cfep-5,0x1.254a5ep-4,0x1.6d26cp-4,0x1.c024ccp-4,
+0x1.0f9bp-3,0x1.45aa18p-3,-0x1.7eb35cp-7,-0x1.0a55c8p-5,-0x1.9b1206p-5,
+-0x1.09e8e8p-4,-0x1.3b3a6ep-4,-0x1.62652cp-4,-0x1.80487p-4,-0x1.95bb48p-4,
+-0x1.a38c78p-4,-0x1.aa828p-4,-0x1.ab5b9cp-4,-0x1.a6cdc2p-4,-0x1.9d86a2p-4,
+-0x1.902ba6p-4,-0x1.7f59f6p-4,-0x1.6ba67p-4,-0x1.559dbp-4,-0x1.3dc40ap-4,
+-0x1.24959p-4,-0x1.0a860ep-4,-0x1.e0020ep-5,-0x1.aad378p-5,-0x1.76365p-5,
+-0x1.42dp-5,-0x1.11356cp-5,-0x1.c3d5cap-6,-0x1.6ac87p-6,-0x1.18094ap-6,
+-0x1.987b88p-7,-0x1.0fd466p-7,-0x1.2dc758p-8,-0x1.716d92p-10,0x1.505aeep-10,
+0x1.c71e0ep-9,0x1.5291d4p-8,0x1.a227cep-8,0x1.d3ddf6p-8,0x1.e9c5ap-8,
+0x1.e6747cp-8,0x1.cd0488p-8,0x1.a1141cp-8,0x1.66c5e6p-8,0x1.22c0e8p-8,
+0x1.b460fp-9,0x1.25888cp-9,0x1.4ac14ep-10,0x1.0567d4p-11,0x1.fb7438p-15,
+0x1.13c86p-14,0x1.4fd7fap-11,0x1.f710c2p-10,0x1.08f8bap-8,0x1.d56af6p-8,
+0x1.76b8cap-7,0x1.16f9e8p-6,0x1.8b0b1ap-6,0x1.0d4474p-5,0x1.6446acp-5,
+0x1.cc29bep-5,0x1.234dep-4,0x1.6aadaap-4,0x1.bd1bd2p-4,0x1.0dc41ap-3,
+0x1.43757ap-3,-0x1.6ab052p-7,-0x1.f8d0f4p-6,-0x1.859336p-5,-0x1.f80296p-5,
+-0x1.2abe9cp-4,-0x1.4fdd0ap-4,-0x1.6c3038p-4,-0x1.8083fp-4,-0x1.8d9c28p-4,
+-0x1.943502p-4,-0x1.9502c4p-4,-0x1.90b1ep-4,-0x1.87e6f4p-4,-0x1.7b3ecp-4,
+-0x1.6b4e36p-4,-0x1.58a26ap-4,-0x1.43c0ap-4,-0x1.2d264p-4,-0x1.1548ep-4,
+-0x1.f92c72p-5,-0x1.c6e866p-5,-0x1.9481bep-5,-0x1.62a4e6p-5,-0x1.31eea8p-5,
+-0x1.02ec18p-5,-0x1.ac3546p-6,-0x1.57d006p-6,-0x1.096492p-6,-0x1.831f5ep-7,
+-0x1.019d8ap-7,-0x1.1dff92p-8,-0x1.5e1c34p-10,0x1.3ec44cp-10,0x1.af519cp-9,
+0x1.40dd8ep-8,0x1.8c4a26p-8,0x1.bb66d6p-8,0x1.d02946p-8,0x1.cd0488p-8,
+0x1.b4e918p-8,0x1.8b44dep-8,0x1.54032ap-8,0x1.138cb8p-8,0x1.9d8f56p-9,
+0x1.162f26p-9,0x1.3975a4p-10,0x1.ef7904p-12,0x1.e0eb2ap-15,0x1.055c9ap-14,
+0x1.3e483p-11,0x1.dcc272p-10,0x1.f63b58p-9,0x1.bcdf14p-8,0x1.63209p-7,
+0x1.08636p-6,0x1.7662d6p-6,0x1.fe5fcap-6,0x1.51a55ep-5,0x1.b419bep-5,
+0x1.141252p-4,0x1.57b6a8p-4,0x1.a5d55ap-4,0x1.ff51bcp-4,0x1.328b7ap-3,
+-0x1.481f0ap-7,-0x1.c8b3e4p-6,-0x1.6071eep-5,-0x1.c7f93p-5,-0x1.0e4584p-4,
+-0x1.2fda46p-4,-0x1.497a58p-4,-0x1.5bde1ap-4,-0x1.67b6d4p-4,-0x1.6daeb8p-4,
+-0x1.6e68dep-4,-0x1.6a8148p-4,-0x1.628ce4p-4,-0x1.571982p-4,-0x1.48ade2p-4,
+-0x1.37c9a6p-4,-0x1.24e55cp-4,-0x1.10727ap-4,-0x1.f5b6cp-5,-0x1.c906a8p-5,
+-0x1.9b8d0ep-5,-0x1.6df422p-5,-0x1.40d7e6p-5,-0x1.14c62ep-5,-0x1.d47d4p-6,
+-0x1.83656p-6,-0x1.370b4ep-6,-0x1.e03272p-7,-0x1.5e39ecp-7,-0x1.d21fe8p-8,
+-0x1.02bd78p-8,-0x1.3cbdd4p-10,0x1.2062acp-10,0x1.8635dp-9,0x1.2248b8p-8,
+0x1.668508p-8,0x1.91243ap-8,0x1.a3ec28p-8,0x1.a1141cp-8,0x1.8b44dep-8,
+0x1.6598a8p-8,0x1.339b2ap-8,0x1.f2931ap-9,0x1.7624d8p-9,0x1.f75768p-10,
+0x1.1b9582p-10,0x1.c03feep-12,0x1.b3152ep-15,0x1.d8e736p-15,0x1.1ff264p-11,
+0x1.af51fp-10,0x1.c65d56p-9,0x1.92789ep-8,0x1.4147c6p-7,0x1.de6114p-7,
+0x1.52b426p-6,0x1.cdbb1ep-6,0x1.31771ap-5,0x1.8a8948p-5,0x1.f384d6p-5,
+0x1.36f45ap-4,0x1.7da1p-4,0x1.ce9602p-4,0x1.15540ep-3,-0x1.1a4064p-7,
+-0x1.88dbap-6,-0x1.2f2ccap-5,-0x1.883b06p-5,-0x1.d0fa52p-5,-0x1.056024p-4,
+-0x1.1b6b26p-4,-0x1.2b3cc8p-4,-0x1.356d8cp-4,-0x1.3a8fd8p-4,-0x1.3b2ff8p-4,
+-0x1.37d42p-4,-0x1.30fc68p-4,-0x1.2722d2p-4,-0x1.1abb44p-4,-0x1.0c3388p-4,
+-0x1.f7e6acp-5,-0x1.d4b888p-5,-0x1.af93a6p-5,-0x1.8922d4p-5,-0x1.6204aap-5,
+-0x1.3acb8ep-5,-0x1.13fdb6p-5,-0x1.dc2a3ep-6,-0x1.92ff2ep-6,-0x1.4d3d6ep-6,
+-0x1.0b8fcep-6,-0x1.9d1162p-7,-0x1.2d443p-7,-0x1.90f674p-8,-0x1.bd2398p-9,
+-0x1.10766ep-10,0x1.f02422p-11,0x1.4fa928p-9,0x1.f36858p-9,0x1.34668p-8,
+0x1.59105ep-8,0x1.69382ap-8,0x1.66c5e6p-8,0x1.54032ap-8,0x1.339b2ap-8,
+0x1.089ab4p-8,0x1.ace058p-9,0x1.41d728p-9,0x1.b0fa0ep-10,0x1.e7e178p-11,
+0x1.81962cp-12,0x1.7642a4p-15,0x1.96cb2cp-15,0x1.ef62f8p-12,0x1.73061p-10,
+0x1.86d8cp-9,0x1.5a352ap-8,0x1.145df2p-7,0x1.9b8112p-7,0x1.235ac8p-6,
+0x1.8d2ee8p-6,0x1.06c342p-5,0x1.5361cep-5,0x1.adb04ap-5,0x1.0b7c0ep-4,
+0x1.48477p-4,0x1.8deb32p-4,0x1.dd1e52p-4,-0x1.c97ab6p-8,-0x1.3e6054p-6,
+-0x1.eb647ap-6,-0x1.3dde2cp-5,-0x1.78d2b2p-5,-0x1.a7a4a2p-5,-0x1.cb5efp-5,
+-0x1.e502aep-5,-0x1.f58706p-5,-0x1.fdd942p-5,-0x1.fedcccp-5,-0x1.f96b24p-5,
+-0x1.ee53eap-5,-0x1.de5cep-5,-0x1.ca41dep-5,-0x1.b2b4dap-5,-0x1.985de8p-5,
+-0x1.7bdb3cp-5,-0x1.5dc122p-5,-0x1.3e9a08p-5,-0x1.1ee672p-5,-0x1.fe3a0cp-6,
+-0x1.bf550cp-6,-0x1.81e3a4p-6,-0x1.4697cap-6,-0x1.0e0faep-6,-0x1.b1ab78p-7,
+-0x1.4ec132p-7,-0x1.e84c8ap-8,-0x1.44f1cap-8,-0x1.68bed8p-9,-0x1.b99dp-11,
+0x1.9214p-11,0x1.1005e8p-9,0x1.94b9acp-9,0x1.f3dcacp-9,0x1.17a4bep-8,
+0x1.24bc7p-8,0x1.22c0e8p-8,0x1.138cb8p-8,0x1.f2931ap-9,0x1.ace058p-9,
+0x1.5b90e6p-9,0x1.04d2aep-9,0x1.5ee398p-10,0x1.8b624p-11,0x1.387bcap-12,
+0x1.2f4dfap-15,0x1.49ab82p-15,0x1.917774p-12,0x1.2cae7cp-10,0x1.3cbf1p-9,
+0x1.189208p-8,0x1.bff108p-8,0x1.4d7cc6p-7,0x1.d83bdap-7,0x1.41e1aep-6,
+0x1.a9e438p-6,0x1.1309f2p-5,0x1.5c396ap-5,0x1.b18b78p-5,0x1.0a0a78p-4,
+0x1.427a44p-4,0x1.82a972p-4,-0x1.574e0ep-8,-0x1.ddd61ep-7,-0x1.70c116p-6,
+-0x1.dd12c6p-6,-0x1.1ac738p-5,-0x1.3de9ccp-5,-0x1.58b96ep-5,-0x1.6bf70ap-5,
+-0x1.785c1ap-5,-0x1.7e9ab2p-5,-0x1.7f5d74p-5,-0x1.7b479ep-5,-0x1.72f4fep-5,
+-0x1.66f9f6p-5,-0x1.57e382p-5,-0x1.46372ap-5,-0x1.327316p-5,-0x1.1d0df6p-5,
+-0x1.067718p-5,-0x1.de2cb8p-6,-0x1.ae9868p-6,-0x1.7ee352p-6,-0x1.4fb0b4p-6,
+-0x1.2194eep-6,-0x1.ea2b1ap-7,-0x1.955294p-7,-0x1.457006p-7,-0x1.f66afep-8,
+-0x1.6e6eccp-8,-0x1.e7b1bep-9,-0x1.0eb694p-9,-0x1.4b660ap-11,0x1.2dbaf6p-11,
+0x1.98445ap-10,0x1.2fb782p-9,0x1.771c28p-9,0x1.a3b444p-9,0x1.b75aacp-9,
+0x1.b460fp-9,0x1.9d8f56p-9,0x1.7624d8p-9,0x1.41d728p-9,0x1.04d2aep-9,
+0x1.87750ep-10,0x1.07511p-10,0x1.28b4ecp-11,0x1.d4fe04p-13,0x1.c7374ap-16,
+0x1.eec95ap-16,0x1.2d457cp-12,0x1.c3477ap-11,0x1.db63dep-10,0x1.a51866p-9,
+0x1.5025cp-8,0x1.f48418p-8,0x1.626086p-7,0x1.e318e8p-7,0x1.3f99bap-6,
+0x1.9ccb1p-6,0x1.055124p-5,0x1.4558p-5,0x1.8f49ep-5,0x1.e3fdecp-5,0x1.22295ep-4,
+-0x1.cdda6cp-9,-0x1.416b94p-7,-0x1.f01734p-7,-0x1.40e82ep-6,-0x1.7c6dp-6,
+-0x1.abb188p-6,-0x1.cfc348p-6,-0x1.e9a5c8p-6,-0x1.fa528cp-6,-0x1.015c94p-5,
+-0x1.01df96p-5,-0x1.fe403p-6,-0x1.f30dd2p-6,-0x1.e2efb4p-6,-0x1.cea37cp-6,
+-0x1.b6dcd4p-6,-0x1.9c456ap-6,-0x1.7f7cf6p-6,-0x1.61193p-6,-0x1.41a5d4p-6,
+-0x1.21a4a8p-6,-0x1.018d6ep-6,-0x1.c39beep-7,-0x1.859424p-7,-0x1.49b726p-7,
+-0x1.10a4aep-7,-0x1.b5d0e8p-8,-0x1.51f488p-8,-0x1.ecf7bp-9,-0x1.480d1ep-9,
+-0x1.6c31cap-10,-0x1.bdd5e2p-12,0x1.95ec1ep-12,0x1.129fb6p-10,0x1.989844p-10,
+0x1.f8a41ep-10,0x1.1a513p-9,0x1.2788eep-9,0x1.25888cp-9,0x1.162f26p-9,
+0x1.f75768p-10,0x1.b0fa0ep-10,0x1.5ee398p-10,0x1.07511p-10,0x1.623e6cp-11,
+0x1.8f29fcp-12,0x1.3b789ep-13,0x1.323456p-16,0x1.4cd266p-16,0x1.954e14p-13,
+0x1.2f8e6cp-11,0x1.3fc654p-10,0x1.1b40cp-9,0x1.c43966p-9,0x1.50ad02p-8,
+0x1.dcbfaep-8,0x1.44f582p-7,0x1.adf69ep-7,0x1.15ab2p-6,0x1.5f8db8p-6,
+0x1.b5b09ap-6,0x1.0c95ap-5,0x1.458f8ep-5,0x1.865bd6p-5,-0x1.04359ep-9,
+-0x1.6a2d9cp-8,-0x1.177fb8p-7,-0x1.69998ep-7,-0x1.acaa7cp-7,-0x1.e1ed7p-7,
+-0x1.05490ap-6,-0x1.13de6ep-6,-0x1.1d4376p-6,-0x1.21ff2p-6,-0x1.2292bep-6,
+-0x1.1f7a0cp-6,-0x1.192b2p-6,-0x1.101676p-6,-0x1.04a6e4p-6,-0x1.ee834ep-7,
+-0x1.d08caep-7,-0x1.b01ddcp-7,-0x1.8ddf9p-7,-0x1.6a6f4p-7,-0x1.465f22p-7,
+-0x1.22362cp-7,-0x1.fce03p-8,-0x1.b6facp-8,-0x1.738678p-8,-0x1.33374cp-8,
+-0x1.ed556ap-9,-0x1.7ccf54p-9,-0x1.15bd46p-9,-0x1.71a668p-10,-0x1.9a606p-11,
+-0x1.f65eb8p-13,0x1.c96548p-13,0x1.3572ap-11,0x1.cc683p-11,0x1.1c50f6p-10,
+0x1.3e1dd8p-10,0x1.4d02aap-10,0x1.4ac14ep-10,0x1.3975a4p-10,0x1.1b9582p-10,
+0x1.e7e178p-11,0x1.8b624p-11,0x1.28b4ecp-11,0x1.8f29fcp-12,0x1.c1c7c2p-13,
+0x1.637988p-14,0x1.59086ep-17,0x1.77068ep-17,0x1.c8b334p-14,0x1.560c8ep-12,
+0x1.6852f2p-11,0x1.3f2bc8p-10,0x1.fd91ap-10,0x1.7b5e46p-9,0x1.0c9a04p-8,
+0x1.6e2a6ap-8,0x1.e47c36p-8,0x1.38e0ep-7,0x1.8c21f4p-7,0x1.ed3102p-7,
+0x1.2ea47cp-6,0x1.6ed8p-6,0x1.b7dbc4p-6,-0x1.9b4d7p-11,-0x1.1e3d7ap-9,
+-0x1.b9cae4p-9,-0x1.1dc876p-8,-0x1.52c994p-8,-0x1.7ce1bp-8,-0x1.9d00cap-8,
+-0x1.b40ep-8,-0x1.c2e78cp-8,-0x1.ca62c2p-8,-0x1.cb4c1ap-8,-0x1.c6671ep-8,
+-0x1.bc6e7ap-8,-0x1.ae13fap-8,-0x1.9c007cp-8,-0x1.86d406p-8,-0x1.6f25b4p-8,
+-0x1.5583bep-8,-0x1.3a737ap-8,-0x1.1e715cp-8,-0x1.01f0fp-8,-0x1.cab9c6p-9,
+-0x1.922dfap-9,-0x1.5af042p-9,-0x1.25a0ap-9,-0x1.e59a96p-10,-0x1.85e57p-10,
+-0x1.2cf72p-10,-0x1.b702e2p-11,-0x1.242538p-11,-0x1.44552cp-12,-0x1.8d09b4p-14,
+0x1.697e4cp-14,0x1.e921a8p-13,0x1.6bdf9p-12,0x1.c1683ap-12,0x1.f6d57ep-12,
+0x1.073022p-11,0x1.0567d4p-11,0x1.ef7904p-12,0x1.c03feep-12,0x1.81962cp-12,
+0x1.387bcap-12,0x1.d4fe04p-13,0x1.3b789ep-13,0x1.637988p-14,0x1.18f136p-15,
+0x1.10b094p-18,0x1.2864d4p-18,0x1.68f18ep-15,0x1.0e54dep-13,0x1.1cc656p-12,
+0x1.f8802ap-12,0x1.92ba36p-11,0x1.2bd374p-10,0x1.a89154p-10,0x1.21644p-9,
+0x1.7ee72cp-9,0x1.ee8dep-9,0x1.39134cp-8,0x1.85c8aap-8,0x1.de5feep-8,
+0x1.21ed72p-7,0x1.5ba21ap-7,-0x1.8f3886p-14,-0x1.15d504p-12,-0x1.acd0b4p-12,
+-0x1.15637p-11,-0x1.48d5f8p-11,-0x1.71b18ap-11,-0x1.90df16p-11,-0x1.a73ef4p-11,
+-0x1.b5a8d6p-11,-0x1.bcebccp-11,-0x1.bdce46p-11,-0x1.b90e1ap-11,-0x1.af6072p-11,
+-0x1.a171ep-11,-0x1.8fe652p-11,-0x1.7b5914p-11,-0x1.645cd4p-11,-0x1.4b7b9ep-11,
+-0x1.3136dep-11,-0x1.16075ep-11,-0x1.f4ba8cp-12,-0x1.bd404p-12,-0x1.865dacp-12,
+-0x1.50bf5ap-12,-0x1.1d009ap-12,-0x1.d756f2p-13,-0x1.7a717ep-13,-0x1.241feep-13,
+-0x1.aa1d9cp-14,-0x1.1b9058p-14,-0x1.3ace42p-15,-0x1.81601p-17,0x1.5edffp-17,
+0x1.dac37ep-16,0x1.612f5p-15,0x1.b434c8p-15,0x1.e8104ap-15,0x1.feea06p-15,
+0x1.fb7438p-15,0x1.e0eb2ap-15,0x1.b3152ep-15,0x1.7642a4p-15,0x1.2f4dfap-15,
+0x1.c7374ap-16,0x1.323456p-16,0x1.59086ep-17,0x1.10b094p-18,0x1.08ae02p-21,
+0x1.1fb002p-21,0x1.5e5754p-18,0x1.066408p-16,0x1.1468e4p-15,0x1.e9ae6ep-15,
+0x1.86e5c8p-14,0x1.2304d4p-13,0x1.9c18aap-13,0x1.18e416p-12,0x1.73a7d2p-12,
+0x1.e006eep-12,0x1.2fe108p-11,0x1.7a559p-11,0x1.d052a6p-11,0x1.19694p-10,
+0x1.516bf8p-10,-0x1.b1ec82p-14,-0x1.2dfbb2p-12,-0x1.d21742p-12,-0x1.2d803ep-11,
+-0x1.656ba8p-11,-0x1.91d47p-11,-0x1.b3b7cep-11,-0x1.cc0994p-11,-0x1.dbb436p-11,
+-0x1.e398c2p-11,-0x1.e48eeep-11,-0x1.df6508p-11,-0x1.d4e002p-11,-0x1.c5bb68p-11,
+-0x1.b2a968p-11,-0x1.9c52d4p-11,-0x1.835714p-11,-0x1.684c36p-11,-0x1.4bbee6p-11,
+-0x1.2e326cp-11,-0x1.1020b6p-11,-0x1.e3f49p-12,-0x1.a84c9ap-12,-0x1.6e051ap-12,
+-0x1.35c6dap-12,-0x1.0027e8p-12,-0x1.9b571cp-13,-0x1.3d84acp-13,-0x1.cf2818p-14,
+-0x1.343694p-14,-0x1.562bbap-15,-0x1.a2dffp-17,0x1.7d601p-17,0x1.020446p-15,
+0x1.7fe2d8p-15,0x1.da1fdp-15,0x1.093ea8p-14,0x1.15a9c6p-14,0x1.13c86p-14,
+0x1.055c9ap-14,0x1.d8e736p-15,0x1.96cb2cp-15,0x1.49ab82p-15,0x1.eec95ap-16,
+0x1.4cd266p-16,0x1.77068ep-17,0x1.2864d4p-18,0x1.1fb002p-21,0x1.38b202p-21,
+0x1.7ccb94p-18,0x1.1d3318p-16,0x1.2c6fecp-15,0x1.0a1fbap-14,0x1.a8e08cp-14,
+0x1.3c50f6p-13,0x1.bfeb2cp-13,0x1.314ed8p-12,0x1.93f664p-12,0x1.04e09p-11,
+0x1.4a4b58p-11,0x1.9b38c2p-11,0x1.f8af5ep-11,0x1.31df94p-10,0x1.6ec0b8p-10,
+-0x1.08367p-10,-0x1.6fc00ap-9,-0x1.1bcc84p-8,-0x1.6f29b4p-8,-0x1.b342c4p-8,
+-0x1.e9577ep-8,-0x1.094e1ap-7,-0x1.181cecp-7,-0x1.21a6f6p-7,-0x1.267544p-7,
+-0x1.270b28p-7,-0x1.23e642p-7,-0x1.1d7e8p-7,-0x1.144612p-7,-0x1.08a976p-7,
+-0x1.f61eeep-8,-0x1.d7b24ap-8,-0x1.b6c3bcp-8,-0x1.93fe94p-8,-0x1.7002bp-8,
+-0x1.4b6488p-8,-0x1.26ad28p-8,-0x1.025a3p-8,-0x1.bdbba6p-9,-0x1.793db4p-9,
+-0x1.37f142p-9,-0x1.f4ec64p-10,-0x1.82ab22p-10,-0x1.1a0322p-10,-0x1.775642p-11,
+-0x1.a0b0ap-12,-0x1.fe1948p-14,0x1.d06eb8p-14,0x1.3a356p-12,0x1.d37d7cp-12,
+0x1.20b0bap-11,0x1.4302bcp-11,0x1.522238p-11,0x1.4fd7fap-11,0x1.3e483p-11,
+0x1.1ff264p-11,0x1.ef62f8p-12,0x1.917774p-12,0x1.2d457cp-12,0x1.954e14p-13,
+0x1.c8b334p-14,0x1.68f18ep-15,0x1.5e5754p-18,0x1.7ccb94p-18,0x1.cfb9e6p-15,
+0x1.5b4fb4p-13,0x1.6dde1p-12,0x1.4414d2p-11,0x1.02b446p-10,0x1.813468p-10,
+0x1.10bbe4p-9,0x1.73cc8cp-9,0x1.ebf056p-9,0x1.3db122p-8,0x1.923a1cp-8,
+0x1.f4c76cp-8,0x1.334c6ep-7,0x1.747ccep-7,0x1.bea022p-7,-0x1.8bc4aep-9,
+-0x1.136deap-7,-0x1.a91b56p-7,-0x1.12fd52p-6,-0x1.45fdf4p-6,-0x1.6e7f1p-6,
+-0x1.8d6798p-6,-0x1.a395ecp-6,-0x1.b1dfe4p-6,-0x1.b912c6p-6,-0x1.b9f34cp-6,
+-0x1.b53da4p-6,-0x1.aba56ap-6,-0x1.9dd5bp-6,-0x1.8c70f8p-6,-0x1.78113cp-6,
+-0x1.6147dep-6,-0x1.489dbep-6,-0x1.2e9326p-6,-0x1.139fd4p-6,-0x1.f065f8p-7,
+-0x1.b9668p-7,-0x1.82fd6ep-7,-0x1.4dd5d2p-7,-0x1.1a89a2p-7,-0x1.d3437p-8,
+-0x1.772ba6p-8,-0x1.21993p-8,-0x1.a66e3ap-9,-0x1.191c8ep-9,-0x1.38154cp-10,
+-0x1.7e0aep-12,0x1.5bd72p-12,0x1.d6a866p-11,0x1.5e2164p-10,0x1.b06f0ep-10,
+0x1.e3d7cp-10,0x1.fa7ee6p-10,0x1.f710c2p-10,0x1.dcc272p-10,0x1.af51fp-10,
+0x1.73061p-10,0x1.2cae7cp-10,0x1.c3477ap-11,0x1.2f8e6cp-11,0x1.560c8ep-12,
+0x1.0e54dep-13,0x1.066408p-16,0x1.1d3318p-16,0x1.5b4fb4p-13,0x1.041f1ep-11,
+0x1.1204fp-10,0x1.e5725p-10,0x1.83845ep-9,0x1.208088p-8,0x1.98885p-8,
+0x1.167638p-7,0x1.707102p-7,0x1.dbe03p-7,0x1.2d4044p-6,0x1.770ff6p-6,
+0x1.cc4eacp-6,0x1.16fa3ap-5,0x1.4e80f2p-5,-0x1.a0e9dp-8,-0x1.22251cp-6,
+-0x1.bfd1cp-6,-0x1.21ae8p-5,-0x1.5768b8p-5,-0x1.8213d4p-5,-0x1.a2a31cp-5,
+-0x1.ba00d2p-5,-0x1.c90e3ap-5,-0x1.d0a392p-5,-0x1.d19018p-5,-0x1.cc9a04p-5,
+-0x1.c27e8ep-5,-0x1.b3f1ecp-5,-0x1.a19f5p-5,-0x1.8c28e8p-5,-0x1.7427e2p-5,
+-0x1.5a2c68p-5,-0x1.3ebdap-5,-0x1.2259b2p-5,-0x1.0575bep-5,-0x1.d0fbc6p-6,
+-0x1.97aa8p-6,-0x1.5fabdep-6,-0x1.29a20cp-6,-0x1.ec3a72p-7,-0x1.8b371p-7,
+-0x1.31122ep-7,-0x1.bd0008p-8,-0x1.282178p-8,-0x1.48c1d4p-9,-0x1.927446p-11,
+0x1.6e6cbap-11,0x1.efcdd6p-10,0x1.70d65p-9,0x1.c789aep-9,0x1.fdb188p-9,
+0x1.0ac742p-8,0x1.08f8bap-8,0x1.f63b58p-9,0x1.c65d56p-9,0x1.86d8cp-9,
+0x1.3cbf1p-9,0x1.db63dep-10,0x1.3fc654p-10,0x1.6852f2p-11,0x1.1cc656p-12,
+0x1.1468e4p-15,0x1.2c6fecp-15,0x1.6dde1p-12,0x1.1204fp-10,0x1.20a8d8p-9,
+0x1.ff6206p-9,0x1.9838a6p-8,0x1.2fea88p-7,0x1.ae5c08p-7,0x1.2556e4p-6,
+0x1.84206p-6,0x1.f54cfep-6,0x1.3d58a4p-5,0x1.8b19e4p-5,0x1.e4e68cp-5,
+0x1.25e1f4p-4,0x1.60602p-4,-0x1.714c18p-7,-0x1.0101d8p-5,-0x1.8cac66p-5,
+-0x1.0098c8p-4,-0x1.30301ep-4,-0x1.55fbbp-4,-0x1.72d2fcp-4,-0x1.878586p-4,
+-0x1.94dad4p-4,-0x1.9b9272p-4,-0x1.9c63f4p-4,-0x1.97feeep-4,-0x1.8f0afep-4,
+-0x1.8227cp-4,-0x1.71ecdcp-4,-0x1.5ee9fap-4,-0x1.49a6c8p-4,-0x1.32a2fap-4,
+-0x1.1a5646p-4,-0x1.01306cp-4,-0x1.cf3256p-5,-0x1.9be094p-5,-0x1.691b26p-5,
+-0x1.3781bp-5,-0x1.07a3dap-5,-0x1.b402aap-6,-0x1.5e13cp-6,-0x1.0e3a82p-6,
+-0x1.8a2d1cp-7,-0x1.064f32p-7,-0x1.23359ep-8,-0x1.647d4ep-10,0x1.449332p-10,
+0x1.b72d82p-9,0x1.46b63ep-8,0x1.9382a8p-8,0x1.c37b1ap-8,0x1.d89e5ep-8,
+0x1.d56af6p-8,0x1.bcdf14p-8,0x1.92789ep-8,0x1.5a352ap-8,0x1.189208p-8,
+0x1.a51866p-9,0x1.1b40cp-9,0x1.3f2bc8p-10,0x1.f8802ap-12,0x1.e9ae6ep-15,
+0x1.0a1fbap-14,0x1.4414d2p-11,0x1.e5725p-10,0x1.ff6206p-9,0x1.c4fa32p-8,
+0x1.69991p-7,0x1.0d34ap-6,0x1.7d352cp-6,0x1.03d63ap-5,0x1.57cc54p-5,
+0x1.bc0bf4p-5,0x1.191a1p-4,0x1.5df9eap-4,0x1.ad8504p-4,0x1.045166p-3,
+0x1.38215ep-3,-0x1.26cc74p-6,-0x1.9a526ap-5,-0x1.3ca6f8p-4,-0x1.99aaacp-4,
+-0x1.e5a5d8p-4,-0x1.10fea2p-3,-0x1.28047ep-3,-0x1.388a26p-3,-0x1.432ee2p-3,
+-0x1.488b9cp-3,-0x1.4932dap-3,-0x1.45b0c8p-3,-0x1.3e8b32p-3,-0x1.344184p-3,
+-0x1.274ccap-3,-0x1.181fb4p-3,-0x1.072692p-3,-0x1.e98ea6p-4,-0x1.c2c31p-4,
+-0x1.9a9cc6p-4,-0x1.71c172p-4,-0x1.48c9fap-4,-0x1.204288p-4,-0x1.f15512p-5,
+-0x1.a4e958p-5,-0x1.5c0dc2p-5,-0x1.1774b2p-5,-0x1.af6e28p-6,-0x1.3aa8a6p-6,
+-0x1.a2c978p-7,-0x1.d0ed5ap-8,-0x1.1c931ap-9,0x1.031926p-9,0x1.5e9506p-8,
+0x1.04cdd8p-7,0x1.421c26p-7,0x1.68674p-7,0x1.7946e6p-7,0x1.76b8cap-7,
+0x1.63209p-7,0x1.4147c6p-7,0x1.145df2p-7,0x1.bff108p-8,0x1.5025cp-8,
+0x1.c43966p-9,0x1.fd91ap-10,0x1.92ba36p-11,0x1.86e5c8p-14,0x1.a8e08cp-14,
+0x1.02b446p-10,0x1.83845ep-9,0x1.9838a6p-8,0x1.69991p-7,0x1.20a70ap-6,
+0x1.adcc0cp-6,0x1.304e7p-5,0x1.9ed6eap-5,0x1.12718ap-4,0x1.627806p-4,
+0x1.c0ca36p-4,0x1.176012p-3,0x1.56df4ep-3,0x1.9f9b92p-3,0x1.f254p-3,
+-0x1.b6f2d4p-6,-0x1.317ae4p-4,-0x1.d77ceep-4,-0x1.30fe02p-3,-0x1.698f3p-3,
+-0x1.967b9ep-3,-0x1.b8c372p-3,-0x1.d15d4ep-3,-0x1.e1366p-3,-0x1.e93254p-3,
+-0x1.ea2b5ap-3,-0x1.e4f226p-3,-0x1.da4deep-3,-0x1.cafc7p-3,-0x1.b7b1eap-3,
+-0x1.a1191cp-3,-0x1.87d34ep-3,-0x1.6c7846p-3,-0x1.4f9652p-3,-0x1.31b24p-3,
+-0x1.134766p-3,-0x1.e98f32p-4,-0x1.ad3664p-4,-0x1.72422p-4,-0x1.395d26p-4,
+-0x1.031f4p-4,-0x1.a01a7cp-5,-0x1.4131eap-5,-0x1.d48512p-6,-0x1.37c83ep-6,
+-0x1.5a220ep-7,-0x1.a7b9a4p-9,0x1.81ca9cp-9,0x1.050122p-7,0x1.8454d4p-7,
+0x1.df9d4cp-7,0x1.0c50f2p-6,0x1.18e0ep-6,0x1.16f9e8p-6,0x1.08636p-6,
+0x1.de6114p-7,0x1.9b8112p-7,0x1.4d7cc6p-7,0x1.f48418p-8,0x1.50ad02p-8,
+0x1.7b5e46p-9,0x1.2bd374p-10,0x1.2304d4p-13,0x1.3c50f6p-13,0x1.813468p-10,
+0x1.208088p-8,0x1.2fea88p-7,0x1.0d34ap-6,0x1.adcc0cp-6,0x1.3ffaa4p-5,
+0x1.c51afap-5,0x1.34d7e4p-4,0x1.98a3e4p-4,0x1.07e5e6p-3,0x1.4e1e78p-3,
+0x1.9ffbc6p-3,0x1.fe8774p-3,0x1.356a4ep-2,0x1.72ffeap-2,-0x1.36c92ep-5,
+-0x1.b092f6p-4,-0x1.4dd318p-3,-0x1.afe22p-3,-0x1.fffc26p-3,-0x1.1fcca6p-2,
+-0x1.381224p-2,-0x1.497d2ep-2,-0x1.54b5aep-2,-0x1.5a5cd8p-2,-0x1.5b0d28p-2,
+-0x1.575a62p-2,-0x1.4fd194p-2,-0x1.44f912p-2,-0x1.37507ap-2,-0x1.2750b4p-2,
+-0x1.156becp-2,-0x1.020d9ep-2,-0x1.db350ap-3,-0x1.b0e15cp-3,-0x1.85cecep-3,
+-0x1.5a9e98p-3,-0x1.2fe47ap-3,-0x1.0626ccp-3,-0x1.bbbce8p-4,-0x1.6eedd4p-4,
+-0x1.269c6ap-4,-0x1.c6d3c2p-5,-0x1.4bb918p-5,-0x1.b97f8ap-6,-0x1.ea23fcp-7,
+-0x1.2c01e2p-8,0x1.11263ep-8,0x1.719834p-7,0x1.12f29ep-6,0x1.53940ap-6,
+0x1.7bf2c4p-6,0x1.8dbcaep-6,0x1.8b0b1ap-6,0x1.7662d6p-6,0x1.52b426p-6,
+0x1.235ac8p-6,0x1.d83bdap-7,0x1.626086p-7,0x1.dcbfaep-8,0x1.0c9a04p-8,
+0x1.a89154p-10,0x1.9c18aap-13,0x1.bfeb2cp-13,0x1.10bbe4p-9,0x1.98885p-8,
+0x1.ae5c08p-7,0x1.7d352cp-6,0x1.304e7p-5,0x1.c51afap-5,0x1.40cf2ap-4,
+0x1.b5562ep-4,0x1.2153acp-3,0x1.75b128p-3,0x1.d920dp-3,0x1.2686acp-2,
+0x1.697772p-2,0x1.b6258p-2,0x1.06ad2cp-1,-0x1.a7ac28p-5,-0x1.26d95p-3,
+-0x1.c7145cp-3,-0x1.2660c8p-2,-0x1.5cf9fep-2,-0x1.885632p-2,-0x1.a96c9ap-2,
+-0x1.c12b4cp-2,-0x1.d0772cp-2,-0x1.d82bfep-2,-0x1.d91c58p-2,-0x1.d411aep-2,
+-0x1.c9cc46p-2,-0x1.bb034p-2,-0x1.a86498p-2,-0x1.92951cp-2,-0x1.7a3076p-2,
+-0x1.5fc926p-2,-0x1.43e884p-2,-0x1.270ecp-2,-0x1.09b2e4p-2,-0x1.d885ap-3,
+-0x1.9e4676p-3,-0x1.655f6ep-3,-0x1.2e7556p-3,-0x1.f4356p-4,-0x1.919f58p-4,
+-0x1.360456p-4,-0x1.c436f2p-5,-0x1.2cee86p-5,-0x1.4e164ap-6,-0x1.98fa9ap-8,
+0x1.745d86p-8,0x1.f7d79ap-7,0x1.76d11ep-6,0x1.ceec54p-6,0x1.02fa78p-5,
+0x1.0f1a7cp-5,0x1.0d4474p-5,0x1.fe5fcap-6,0x1.cdbb1ep-6,0x1.8d2ee8p-6,
+0x1.41e1aep-6,0x1.e318e8p-7,0x1.44f582p-7,0x1.6e2a6ap-8,0x1.21644p-9,
+0x1.18e416p-12,0x1.314ed8p-12,0x1.73cc8cp-9,0x1.167638p-7,0x1.2556e4p-6,
+0x1.03d63ap-5,0x1.9ed6eap-5,0x1.34d7e4p-4,0x1.b5562ep-4,0x1.2a185ap-3,
+0x1.8a6b3ep-3,0x1.fd6d92p-3,0x1.427dbep-2,0x1.9181b4p-2,0x1.ecc31p-2,
+0x1.2aa5acp-1,0x1.66169ep-1,-0x1.18498p-4,-0x1.861facp-3,-0x1.2d10ap-2,
+-0x1.85803p-2,-0x1.cdbddep-2,-0x1.038e72p-1,-0x1.19722ep-1,-0x1.2927ap-1,
+-0x1.33463cp-1,-0x1.385f62p-1,-0x1.38fe66p-1,-0x1.35a88ap-1,-0x1.2edd02p-1,
+-0x1.2514fap-1,-0x1.18c384p-1,-0x1.0a55aep-1,-0x1.f464dep-2,-0x1.d17568p-2,
+-0x1.ac92b4p-2,-0x1.86666p-2,-0x1.5f8de8p-2,-0x1.389abp-2,-0x1.1211fap-2,
+-0x1.d8d9dap-3,-0x1.903128p-3,-0x1.4aebb2p-3,-0x1.09b316p-3,-0x1.9a316ap-4,
+-0x1.2b2b6cp-4,-0x1.8e2c0ep-5,-0x1.ba0a7ep-6,-0x1.0e90fcp-7,0x1.ecb028p-8,
+0x1.4d531ap-6,0x1.efee8cp-6,0x1.324106p-5,0x1.56a99p-5,0x1.66b494p-5,
+0x1.6446acp-5,0x1.51a55ep-5,0x1.31771ap-5,0x1.06c342p-5,0x1.a9e438p-6,
+0x1.3f99bap-6,0x1.adf69ep-7,0x1.e47c36p-8,0x1.7ee72cp-9,0x1.73a7d2p-12,
+0x1.93f664p-12,0x1.ebf056p-9,0x1.707102p-7,0x1.84206p-6,0x1.57cc54p-5,
+0x1.12718ap-4,0x1.98a3e4p-4,0x1.2153acp-3,0x1.8a6b3ep-3,0x1.04ef18p-2,
+0x1.51052p-2,0x1.aab2b6p-2,0x1.099f7ap-1,0x1.45fe8cp-1,0x1.8b2638p-1,
+0x1.d9cc3cp-1,-0x1.6a0432p-4,-0x1.f7e16p-3,-0x1.84da54p-2,-0x1.f71364p-2,
+-0x1.2a30d6p-1,-0x1.4f3da6p-1,-0x1.6b8362p-1,-0x1.7fcd74p-1,-0x1.8cdf76p-1,
+-0x1.93752ep-1,-0x1.94428ep-1,-0x1.8ff3b8p-1,-0x1.872cf6p-1,-0x1.7a8ac4p-1,
+-0x1.6aa1cap-1,-0x1.57fedcp-1,-0x1.4326fap-1,-0x1.2c9756p-1,-0x1.14c548p-1,
+-0x1.f83cb2p-2,-0x1.c61082p-2,-0x1.93c1c4p-2,-0x1.61fc98p-2,-0x1.315d78p-2,
+-0x1.027138p-2,-0x1.ab6a0ep-3,-0x1.572cdcp-3,-0x1.08e6ap-3,-0x1.8267a4p-4,
+-0x1.012346p-4,-0x1.1d77d8p-5,-0x1.5d760cp-7,0x1.3e2d04p-7,0x1.ae84e8p-6,
+0x1.404546p-5,0x1.8b8e14p-5,0x1.ba9468p-5,0x1.cf4cfep-5,0x1.cc29bep-5,
+0x1.b419bep-5,0x1.8a8948p-5,0x1.5361cep-5,0x1.1309f2p-5,0x1.9ccb1p-6,
+0x1.15ab2p-6,0x1.38e0ep-7,0x1.ee8dep-9,0x1.e006eep-12,0x1.04e09p-11,
+0x1.3db122p-8,0x1.dbe03p-7,0x1.f54cfep-6,0x1.bc0bf4p-5,0x1.627806p-4,
+0x1.07e5e6p-3,0x1.75b128p-3,0x1.fd6d92p-3,0x1.51052p-2,0x1.b34ac8p-2,
+0x1.138f4cp-1,0x1.571388p-1,0x1.a50d2ap-1,0x1.fe5f14p-1,0x1.31f9fep+0,
+-0x1.ca5884p-4,-0x1.3efab2p-2,-0x1.ec52bap-2,-0x1.3e784ap-1,-0x1.798966p-1,
+-0x1.a87208p-1,-0x1.cc3daap-1,-0x1.e5edd6p-1,-0x1.f67a3p-1,-0x1.fed076p-1,
+-0x1.ffd47cp-1,-0x1.fa603p-1,-0x1.ef4398p-1,-0x1.df44dp-1,-0x1.cb200cp-1,
+-0x1.b3879ep-1,-0x1.9923e8p-1,-0x1.7c9368p-1,-0x1.5e6ab6p-1,-0x1.3f348p-1,
+-0x1.1f718cp-1,-0x1.ff316ep-2,-0x1.c02dfp-2,-0x1.829ebep-2,-0x1.473624p-2,
+-0x1.0e929ep-2,-0x1.b27dbcp-3,-0x1.4f638p-3,-0x1.e9394ap-4,-0x1.458f56p-4,
+-0x1.696dcp-5,-0x1.ba731ep-7,0x1.92d6f2p-7,0x1.1089ccp-5,0x1.957de6p-5,
+0x1.f4cf06p-5,0x1.182c54p-4,0x1.254a5ep-4,0x1.234dep-4,0x1.141252p-4,
+0x1.f384d6p-5,0x1.adb04ap-5,0x1.5c396ap-5,0x1.055124p-5,0x1.5f8db8p-6,
+0x1.8c21f4p-7,0x1.39134cp-8,0x1.2fe108p-11,0x1.4a4b58p-11,0x1.923a1cp-8,
+0x1.2d4044p-6,0x1.3d58a4p-5,0x1.191a1p-4,0x1.c0ca36p-4,0x1.4e1e78p-3,
+0x1.d920dp-3,0x1.427dbep-2,0x1.aab2b6p-2,0x1.138f4cp-1,0x1.5ce24p-1,
+0x1.b25dacp-1,0x1.0a8b74p+0,0x1.4316ap+0,0x1.8364ecp+0,-0x1.1d52eap-3,
+-0x1.8d226p-2,-0x1.3279ap-1,-0x1.8c8006p-1,-0x1.d60a0ap-1,-0x1.08387ep+0,
+-0x1.1e80eep+0,-0x1.2e7ea4p+0,-0x1.38cbcep+0,-0x1.3dfc68p+0,-0x1.3e9e48p+0,
+-0x1.3b3912p+0,-0x1.344e4ap+0,-0x1.2a594p+0,-0x1.1dcf2p+0,-0x1.0f1eeap+0,
+-0x1.fd62dap-1,-0x1.d9d2aep-1,-0x1.b4464ap-1,-0x1.8d6a5ap-1,-0x1.65df2ep-1,
+-0x1.3e38c6p-1,-0x1.16fecap-1,-0x1.e15922p-2,-0x1.97622ep-2,-0x1.50de0cp-2,
+-0x1.0e7966p-2,-0x1.a19072p-3,-0x1.308bb4p-3,-0x1.9553cap-4,-0x1.c1fc08p-5,
+-0x1.136dbp-6,0x1.f58ab2p-7,0x1.535084p-5,0x1.f8d802p-5,0x1.37c1e6p-4,
+0x1.5cd1eep-4,0x1.6d26cp-4,0x1.6aadaap-4,0x1.57b6a8p-4,0x1.36f45ap-4,
+0x1.0b7c0ep-4,0x1.b18b78p-5,0x1.4558p-5,0x1.b5b09ap-6,0x1.ed3102p-7,
+0x1.85c8aap-8,0x1.7a559p-11,0x1.9b38c2p-11,0x1.f4c76cp-8,0x1.770ff6p-6,
+0x1.8b19e4p-5,0x1.5df9eap-4,0x1.176012p-3,0x1.9ffbc6p-3,0x1.2686acp-2,
+0x1.9181b4p-2,0x1.099f7ap-1,0x1.571388p-1,0x1.b25dacp-1,0x1.0e657p+0,
+0x1.4bda3cp+0,0x1.92400cp+0,0x1.e24fdep+0,-0x1.5e2c44p-3,-0x1.e76554p-2,
+-0x1.7821a4p-1,-0x1.e69e14p-1,-0x1.206f74p+0,-0x1.4445f8p+0,-0x1.5f9eeap+0,
+-0x1.733f1p+0,-0x1.7fe39cp+0,-0x1.86422ep+0,-0x1.8708d6p+0,-0x1.82de12p+0,
+-0x1.7a60d2p+0,-0x1.6e287p+0,-0x1.5ec4b6p+0,-0x1.4cbddcp+0,-0x1.38948cp+0,
+-0x1.22c1dap+0,-0x1.0bb74cp+0,-0x1.e7bda8p-1,-0x1.b735acp-1,-0x1.868c42p-1,
+-0x1.5667eap-1,-0x1.276p-1,-0x1.f3f978p-2,-0x1.9d6e6ap-2,-0x1.4bf2bap-2,
+-0x1.003c0cp-2,-0x1.75c376p-3,-0x1.f1737p-4,-0x1.142104p-4,-0x1.520746p-6,
+0x1.33c442p-6,0x1.a06f44p-5,0x1.35cafap-4,0x1.7e9d42p-4,0x1.ac19cp-4,
+0x1.c024ccp-4,0x1.bd1bd2p-4,0x1.a5d55ap-4,0x1.7da1p-4,0x1.48477p-4,
+0x1.0a0a78p-4,0x1.8f49ep-5,0x1.0c95ap-5,0x1.2ea47cp-6,0x1.de5feep-8,
+0x1.d052a6p-11,0x1.f8af5ep-11,0x1.334c6ep-7,0x1.cc4eacp-6,0x1.e4e68cp-5,
+0x1.ad8504p-4,0x1.56df4ep-3,0x1.fe8774p-3,0x1.697772p-2,0x1.ecc31p-2,
+0x1.45fe8cp-1,0x1.a50d2ap-1,0x1.0a8b74p+0,0x1.4bda3cp+0,0x1.9746dp+0,
+0x1.edaca8p+0,0x1.27f768p+1,-0x1.a875p-3,-0x1.276518p-1,-0x1.c7ec1ap-1,
+-0x1.26ec56p+0,-0x1.5d9f6ep+0,-0x1.89103p+0,-0x1.aa3648p+0,-0x1.c2003ap+0,
+-0x1.d1535cp+0,-0x1.d90bd4p+0,-0x1.d9fca2p+0,-0x1.d4ef92p+0,-0x1.caa54cp+0,
+-0x1.bbd544p+0,-0x1.a92dc8p+0,-0x1.9353f6p+0,-0x1.7ae3cp+0,-0x1.606feap+0,
+-0x1.448212p+0,-0x1.279aap+0,-0x1.0a30dap+0,-0x1.d965ap-1,-0x1.9f0adap-1,
+-0x1.6608d8p-1,-0x1.2f04b8p-1,-0x1.f52282p-2,-0x1.925dbep-2,-0x1.36974ep-2,
+-0x1.c50d52p-3,-0x1.2d7d2ep-3,-0x1.4eb4acp-4,-0x1.99bc7cp-6,0x1.750e0cp-6,
+0x1.f8c676p-5,0x1.7782cep-4,0x1.cfc7c8p-4,0x1.03753ep-3,0x1.0f9bp-3,
+0x1.0dc41ap-3,0x1.ff51bcp-4,0x1.ce9602p-4,0x1.8deb32p-4,0x1.427a44p-4,
+0x1.e3fdecp-5,0x1.458f8ep-5,0x1.6ed8p-6,0x1.21ed72p-7,0x1.19694p-10,
+0x1.31df94p-10,0x1.747ccep-7,0x1.16fa3ap-5,0x1.25e1f4p-4,0x1.045166p-3,
+0x1.9f9b92p-3,0x1.356a4ep-2,0x1.b6258p-2,0x1.2aa5acp-1,0x1.8b2638p-1,
+0x1.fe5f14p-1,0x1.4316ap+0,0x1.92400cp+0,0x1.edaca8p+0,0x1.2b333ep+1,
+0x1.66c05ep+1,-0x1.fcf056p-3,-0x1.623054p-1,-0x1.115556p+0,-0x1.619f88p+0,
+-0x1.a335bcp+0,-0x1.d74be8p+0,-0x1.ff0b08p+0,-0x1.0dc88cp+1,-0x1.16f888p+1,
+-0x1.1b9976p+1,-0x1.1c29d2p+1,-0x1.19229cp+1,-0x1.12f752p+1,-0x1.0a15eep+1,
+-0x1.fdcde4p+0,-0x1.e39ab4p+0,-0x1.c64d48p+0,-0x1.a695ap+0,-0x1.8518b4p+0,
+-0x1.627084p+0,-0x1.3f2c0ep+0,-0x1.1bcf4cp+0,-0x1.f1a67ap-1,-0x1.ad4bcp-1,
+-0x1.6b5466p-1,-0x1.2c7064p-1,-0x1.e2737ap-2,-0x1.7468d4p-2,-0x1.0f9cd4p-2,
+-0x1.697eeep-3,-0x1.9152e8p-4,-0x1.eb49bep-6,0x1.bf4e4ap-6,0x1.2e9f1ep-4,
+0x1.c2403p-4,0x1.160b6p-3,0x1.371962p-3,0x1.45aa18p-3,0x1.43757ap-3,
+0x1.328b7ap-3,0x1.15540ep-3,0x1.dd1e52p-4,0x1.82a972p-4,0x1.22295ep-4,
+0x1.865bd6p-5,0x1.b7dbc4p-6,0x1.5ba21ap-7,0x1.516bf8p-10,0x1.6ec0b8p-10,
+0x1.bea022p-7,0x1.4e80f2p-5,0x1.60602p-4,0x1.38215ep-3,0x1.f254p-3,
+0x1.72ffeap-2,0x1.06ad2cp-1,0x1.66169ep-1,0x1.d9cc3cp-1,0x1.31f9fep+0,
+0x1.8364ecp+0,0x1.e24fdep+0,0x1.27f768p+1,0x1.66c05ep+1,0x1.ae27cep+1,
+},{
+-0x1.d14ef4p-4,-0x1.f84654p-3,-0x1.231306p-2,-0x1.0aea26p-2,-0x1.9f9c6cp-3,
+-0x1.108788p-3,-0x1.14b8ep-4,-0x1.1cfd8cp-6,0x1.86c6e8p-7,0x1.4e3f7ep-6,
+0x1.bb5184p-7,0x1.2e1d02p-9,0x1.a63542p-9,0x1.397d4ep-5,0x1.14574ep-3,
+0x1.4e0734p-2,-0x1.f84654p-3,-0x1.114088p-1,-0x1.3b7322p-1,-0x1.214452p-1,
+-0x1.c26a5ep-2,-0x1.275a12p-2,-0x1.2be54cp-3,-0x1.34db38p-5,0x1.a78076p-6,
+0x1.6a3d2cp-5,0x1.e07176p-6,0x1.4769c4p-8,0x1.c990a2p-8,0x1.53bdf4p-4,
+0x1.2b7b8ep-2,0x1.6a0028p-1,-0x1.231306p-2,-0x1.3b7322p-1,-0x1.6c29f4p-1,
+-0x1.4df00ap-1,-0x1.03fc6ep-1,-0x1.54f658p-2,-0x1.5a3536p-3,-0x1.648d62p-5,
+0x1.e8e6f4p-6,0x1.a22dbap-5,0x1.155186p-5,0x1.79f98ap-8,0x1.081cep-7,
+0x1.88352p-4,0x1.59bb22p-2,0x1.a1e74ap-1,-0x1.0aea26p-2,-0x1.214452p-1,
+-0x1.4df00ap-1,-0x1.32386p-1,-0x1.dcd04p-2,-0x1.38a96ep-2,-0x1.3d78d6p-3,
+-0x1.46f532p-5,0x1.c0528ap-6,0x1.7f7814p-5,0x1.fc99ep-6,0x1.5a9a2ap-8,
+0x1.e461c8p-8,0x1.67a752p-4,0x1.3d08e4p-2,0x1.7f377ep-1,-0x1.9f9c6cp-3,
+-0x1.c26a5ep-2,-0x1.03fc6ep-1,-0x1.dcd04p-2,-0x1.7338b8p-2,-0x1.e6d7fap-3,
+-0x1.ee5564p-4,-0x1.fd1a96p-6,0x1.5d0a3ap-6,0x1.2a8c7p-5,0x1.8bf83cp-6,
+0x1.0dd894p-8,0x1.791d2ep-8,0x1.1801d4p-4,0x1.eda716p-3,0x1.2a5a26p-1,
+-0x1.108788p-3,-0x1.275a12p-2,-0x1.54f658p-2,-0x1.38a96ep-2,-0x1.e6d7fap-3,
+-0x1.3f3d2ap-3,-0x1.44267ap-4,-0x1.4dd5eep-6,0x1.c9c0d6p-7,0x1.87892p-6,
+0x1.03a664p-6,0x1.61e4aep-9,0x1.ee9244p-9,0x1.6f382p-5,0x1.43b42ep-3,
+0x1.87473p-2,-0x1.14b8ep-4,-0x1.2be54cp-3,-0x1.5a3536p-3,-0x1.3d78d6p-3,
+-0x1.ee5564p-4,-0x1.44267ap-4,-0x1.49232p-5,-0x1.52f8bap-7,0x1.d0cbaep-8,
+0x1.8d8f2cp-7,0x1.07a502p-7,0x1.67567ap-10,0x1.f62e1ep-10,0x1.74de66p-6,
+0x1.48af12p-4,0x1.8d4c38p-3,-0x1.1cfd8cp-6,-0x1.34db38p-5,-0x1.648d62p-5,
+-0x1.46f532p-5,-0x1.fd1a96p-6,-0x1.4dd5eep-6,-0x1.52f8bap-7,-0x1.5d198cp-9,
+0x1.deaefp-10,0x1.997022p-9,0x1.0f85a6p-9,0x1.721314p-12,0x1.0297aap-11,
+0x1.80028p-8,0x1.528134p-6,0x1.992b2ep-5,0x1.86c6e8p-7,0x1.a78076p-6,
+0x1.e8e6f4p-6,0x1.c0528ap-6,0x1.5d0a3ap-6,0x1.c9c0d6p-7,0x1.d0cbaep-8,
+0x1.deaefp-10,-0x1.482f08p-10,-0x1.18b59ap-9,-0x1.744f2cp-10,-0x1.fb7198p-13,
+-0x1.62948cp-12,-0x1.07469ep-8,-0x1.d027c8p-7,-0x1.188652p-5,0x1.4e3f7ep-6,
+0x1.6a3d2cp-5,0x1.a22dbap-5,0x1.7f7814p-5,0x1.2a8c7p-5,0x1.87892p-6,
+0x1.8d8f2cp-7,0x1.997022p-9,-0x1.18b59ap-9,-0x1.e03482p-9,-0x1.3e73aap-9,
+-0x1.b209bcp-12,-0x1.2f4996p-11,-0x1.c261cp-8,-0x1.8d02fcp-6,-0x1.dfe3ap-5,
+0x1.bb5184p-7,0x1.e07176p-6,0x1.155186p-5,0x1.fc99ep-6,0x1.8bf83cp-6,
+0x1.03a664p-6,0x1.07a502p-7,0x1.0f85a6p-9,-0x1.744f2cp-10,-0x1.3e73aap-9,
+-0x1.a65e1ep-10,-0x1.1fd5f2p-12,-0x1.924142p-12,-0x1.2aac9cp-8,-0x1.07480cp-6,
+-0x1.3e3e06p-5,0x1.2e1d02p-9,0x1.4769c4p-8,0x1.79f98ap-8,0x1.5a9a2ap-8,
+0x1.0dd894p-8,0x1.61e4aep-9,0x1.67567ap-10,0x1.721314p-12,-0x1.fb7198p-13,
+-0x1.b209bcp-12,-0x1.1fd5f2p-12,-0x1.884f38p-15,-0x1.122118p-14,-0x1.9714fcp-11,
+-0x1.66d7c4p-9,-0x1.b1c0a2p-8,0x1.a63542p-9,0x1.c990a2p-8,0x1.081cep-7,
+0x1.e461c8p-8,0x1.791d2ep-8,0x1.ee9244p-9,0x1.f62e1ep-10,0x1.0297aap-11,
+-0x1.62948cp-12,-0x1.2f4996p-11,-0x1.924142p-12,-0x1.122118p-14,-0x1.7f1994p-14,
+-0x1.1c73a2p-10,-0x1.f57d0ap-9,-0x1.2f168p-7,0x1.397d4ep-5,0x1.53bdf4p-4,
+0x1.88352p-4,0x1.67a752p-4,0x1.1801d4p-4,0x1.6f382p-5,0x1.74de66p-6,
+0x1.80028p-8,-0x1.07469ep-8,-0x1.c261cp-8,-0x1.2aac9cp-8,-0x1.9714fcp-11,
+-0x1.1c73a2p-10,-0x1.a66928p-7,-0x1.745aeap-5,-0x1.c215e4p-4,0x1.14574ep-3,
+0x1.2b7b8ep-2,0x1.59bb22p-2,0x1.3d08e4p-2,0x1.eda716p-3,0x1.43b42ep-3,
+0x1.48af12p-4,0x1.528134p-6,-0x1.d027c8p-7,-0x1.8d02fcp-6,-0x1.07480cp-6,
+-0x1.66d7c4p-9,-0x1.f57d0ap-9,-0x1.745aeap-5,-0x1.483b2cp-3,-0x1.8cc02p-2,
+0x1.4e0734p-2,0x1.6a0028p-1,0x1.a1e74ap-1,0x1.7f377ep-1,0x1.2a5a26p-1,
+0x1.87473p-2,0x1.8d4c38p-3,0x1.992b2ep-5,-0x1.188652p-5,-0x1.dfe3ap-5,
+-0x1.3e3e06p-5,-0x1.b1c0a2p-8,-0x1.2f168p-7,-0x1.c215e4p-4,-0x1.8cc02p-2,
+-0x1.df92cep-1,-0x1.f84654p-3,-0x1.114088p-1,-0x1.3b7322p-1,-0x1.21445p-1,
+-0x1.c26a5ep-2,-0x1.275a12p-2,-0x1.2be54cp-3,-0x1.34db3ap-5,0x1.a78076p-6,
+0x1.6a3d2ap-5,0x1.e07176p-6,0x1.4769c4p-8,0x1.c990a2p-8,0x1.53bdf4p-4,
+0x1.2b7b8ep-2,0x1.6a0028p-1,-0x1.114088p-1,-0x1.28229p+0,-0x1.55ddcep+0,
+-0x1.397dacp+0,-0x1.e82276p-1,-0x1.4015ep-1,-0x1.450284p-2,-0x1.4eb88ap-4,
+0x1.caf792p-5,0x1.8892eap-4,0x1.0456a6p-4,0x1.62d4e8p-7,0x1.efe1fep-7,
+0x1.703166p-3,0x1.448feap-1,0x1.8850cap+0,-0x1.3b7322p-1,-0x1.55ddcep+0,
+-0x1.8aa8f6p+0,-0x1.69e70ep+0,-0x1.19c21p+0,-0x1.7183f6p-1,-0x1.773348p-2,
+-0x1.826938p-4,0x1.08ec1p-4,0x1.c532b8p-4,0x1.2c8abap-4,0x1.99a0a2p-7,
+0x1.1e3afap-6,0x1.a90d58p-3,0x1.76aefcp-1,0x1.c4e662p+0,-0x1.21445p-1,
+-0x1.397dacp+0,-0x1.69e70ep+0,-0x1.4bdd2ep+0,-0x1.025f22p+0,-0x1.52d854p-1,
+-0x1.580edcp-2,-0x1.625694p-4,0x1.e5ddc2p-5,0x1.9f94f6p-4,0x1.1398aep-4,
+0x1.77a0bp-7,0x1.067906p-6,0x1.85c5a4p-3,0x1.57958ap-1,0x1.9f4ef6p+0,
+-0x1.c26a5ep-2,-0x1.e82276p-1,-0x1.19c21p+0,-0x1.025f22p+0,-0x1.924f0ap-1,
+-0x1.07ce82p-1,-0x1.0bdd8p-2,-0x1.13de6cp-4,0x1.7a4502p-5,0x1.438cc6p-4,
+0x1.ad211cp-5,0x1.247196p-7,0x1.98b1d2p-7,0x1.2f74acp-3,0x1.0b7f0ep-1,
+0x1.435648p+0,-0x1.275a12p-2,-0x1.4015ep-1,-0x1.7183f6p-1,-0x1.52d854p-1,
+-0x1.07ce82p-1,-0x1.59f912p-2,-0x1.5f4bacp-3,-0x1.69cac2p-5,0x1.f0163cp-6,
+0x1.a852fp-5,0x1.1964dp-5,0x1.7f8782p-8,0x1.0bfe7ep-7,0x1.8df8a4p-4,
+0x1.5ecfccp-2,0x1.a80b7ap-1,-0x1.2be54cp-3,-0x1.450284p-2,-0x1.773348p-2,
+-0x1.580edcp-2,-0x1.0bdd8p-2,-0x1.5f4bacp-3,-0x1.64b33cp-4,-0x1.6f5baap-6,
+0x1.f7b80ep-7,0x1.aeda2p-6,0x1.1db912p-6,0x1.856e06p-9,0x1.101dfap-8,
+0x1.941808p-5,0x1.643576p-3,0x1.ae919p-2,-0x1.34db3ap-5,-0x1.4eb88ap-4,
+-0x1.826938p-4,-0x1.625694p-4,-0x1.13de6cp-4,-0x1.69cac2p-5,-0x1.6f5baap-6,
+-0x1.7a559ep-8,0x1.036284p-8,0x1.bbb9bep-8,0x1.264296p-8,0x1.9110cep-11,
+0x1.183f6ap-10,0x1.a02afap-7,0x1.6eda2p-5,0x1.bb6f04p-4,0x1.a78076p-6,
+0x1.caf792p-5,0x1.08ec1p-4,0x1.e5ddc2p-5,0x1.7a4502p-5,0x1.f0163cp-6,
+0x1.f7b80ep-7,0x1.036284p-8,-0x1.63aab2p-9,-0x1.30378p-8,-0x1.937ccep-9,
+-0x1.12f822p-11,-0x1.80461ap-11,-0x1.1d52c6p-7,-0x1.f7066ep-6,-0x1.300442p-4,
+0x1.6a3d2ap-5,0x1.8892eap-4,0x1.c532b8p-4,0x1.9f94f6p-4,0x1.438cc6p-4,
+0x1.a852fp-5,0x1.aeda2p-6,0x1.bbb9bep-8,-0x1.30378p-8,-0x1.04359ep-7,
+-0x1.591ebp-8,-0x1.d662b8p-11,-0x1.48af84p-10,-0x1.e8191ep-7,-0x1.ae4232p-5,
+-0x1.0409cap-3,0x1.e07176p-6,0x1.0456a6p-4,0x1.2c8abap-4,0x1.1398aep-4,
+0x1.ad211cp-5,0x1.1964dp-5,0x1.1db912p-6,0x1.264296p-8,-0x1.937ccep-9,
+-0x1.591ebp-8,-0x1.c9bceap-9,-0x1.37f0ap-11,-0x1.b3f0ep-11,-0x1.43afa6p-7,
+-0x1.1d5452p-5,-0x1.58e49p-4,0x1.4769c4p-8,0x1.62d4e8p-7,0x1.99a0a2p-7,
+0x1.77a0bp-7,0x1.247196p-7,0x1.7f8782p-8,0x1.856e06p-9,0x1.9110cep-11,
+-0x1.12f822p-11,-0x1.d662b8p-11,-0x1.37f0ap-11,-0x1.a9299ep-14,-0x1.2915eep-13,
+-0x1.b92c16p-10,-0x1.84e4b4p-8,-0x1.d6137ep-7,0x1.c990a2p-8,0x1.efe1fep-7,
+0x1.1e3afap-6,0x1.067906p-6,0x1.98b1d2p-7,0x1.0bfe7ep-7,0x1.101dfap-8,
+0x1.183f6ap-10,-0x1.80461ap-11,-0x1.48af84p-10,-0x1.b3f0ep-11,-0x1.2915eep-13,
+-0x1.9f2e8cp-13,-0x1.3445c2p-9,-0x1.0fbe06p-7,-0x1.487828p-6,0x1.53bdf4p-4,
+0x1.703166p-3,0x1.a90d58p-3,0x1.85c5a4p-3,0x1.2f74acp-3,0x1.8df8a4p-4,
+0x1.941808p-5,0x1.a02afap-7,-0x1.1d52c6p-7,-0x1.e8191ep-7,-0x1.43afa6p-7,
+-0x1.b92c16p-10,-0x1.3445c2p-9,-0x1.c9c8ep-6,-0x1.93898ap-4,-0x1.e7c6eap-3,
+0x1.2b7b8ep-2,0x1.448feap-1,0x1.76aefcp-1,0x1.57958ap-1,0x1.0b7f0ep-1,
+0x1.5ecfccp-2,0x1.643576p-3,0x1.6eda2p-5,-0x1.f7066ep-6,-0x1.ae4232p-5,
+-0x1.1d5452p-5,-0x1.84e4b4p-8,-0x1.0fbe06p-7,-0x1.93898ap-4,-0x1.63b7dap-2,
+-0x1.adf9bcp-1,0x1.6a0028p-1,0x1.8850cap+0,0x1.c4e662p+0,0x1.9f4ef6p+0,
+0x1.435648p+0,0x1.a80b7ap-1,0x1.ae919p-2,0x1.bb6f04p-4,-0x1.300442p-4,
+-0x1.0409cap-3,-0x1.58e49p-4,-0x1.d6137ep-7,-0x1.487828p-6,-0x1.e7c6eap-3,
+-0x1.adf9bcp-1,-0x1.03ddfep+1,-0x1.231306p-2,-0x1.3b7322p-1,-0x1.6c29f4p-1,
+-0x1.4df008p-1,-0x1.03fc6ep-1,-0x1.54f658p-2,-0x1.5a3536p-3,-0x1.648d62p-5,
+0x1.e8e6f4p-6,0x1.a22dbap-5,0x1.155186p-5,0x1.79f98ap-8,0x1.081cep-7,
+0x1.88352p-4,0x1.59bb24p-2,0x1.a1e74cp-1,-0x1.3b7322p-1,-0x1.55ddccp+0,
+-0x1.8aa8f6p+0,-0x1.69e70ep+0,-0x1.19c20ep+0,-0x1.7183f6p-1,-0x1.773348p-2,
+-0x1.826936p-4,0x1.08ec1p-4,0x1.c532b8p-4,0x1.2c8abap-4,0x1.99a0a2p-7,
+0x1.1e3afap-6,0x1.a90d58p-3,0x1.76aefcp-1,0x1.c4e662p+0,-0x1.6c29f4p-1,
+-0x1.8aa8f6p+0,-0x1.c79b3ep+0,-0x1.a1ca5p+0,-0x1.4544eep+0,-0x1.aa943p-1,
+-0x1.b1244p-2,-0x1.be1562p-4,0x1.31d55ap-4,0x1.05979ap-3,0x1.5af432p-4,
+0x1.d8e2ap-7,0x1.4a6ea8p-6,0x1.eab12p-3,0x1.b08b84p-1,0x1.056b8ap+1,
+-0x1.4df008p-1,-0x1.69e70ep+0,-0x1.a1ca5p+0,-0x1.7f1ceap+0,-0x1.2a4576p+0,
+-0x1.872c0cp-1,-0x1.8d30aap-2,-0x1.990eccp-4,0x1.1872dep-4,0x1.dfc25ap-4,
+0x1.3e27f6p-4,0x1.b1a28cp-7,0x1.2f017cp-6,0x1.c1f6aep-3,0x1.8ca49cp-1,
+0x1.df718cp+0,-0x1.03fc6ep-1,-0x1.19c20ep+0,-0x1.4544eep+0,-0x1.2a4576p+0,
+-0x1.d06fb2p-1,-0x1.308bb4p-1,-0x1.353b24p-2,-0x1.3e787ap-4,0x1.b4af5p-5,
+0x1.7583d2p-4,0x1.ef6614p-5,0x1.519ae6p-7,0x1.d7ceeep-7,0x1.5e5154p-3,
+0x1.34ce1cp-1,0x1.7544eap+0,-0x1.54f658p-2,-0x1.7183f6p-1,-0x1.aa943p-1,
+-0x1.872c0cp-1,-0x1.308bb4p-1,-0x1.8f6694p-2,-0x1.958b9ap-3,-0x1.a1a9a6p-5,
+0x1.1e5922p-5,0x1.e9d9fp-5,0x1.44d948p-5,0x1.bac1cp-8,0x1.35613ap-7,
+0x1.cb6dd2p-4,0x1.94fc9ap-2,0x1.e9877p-1,-0x1.5a3536p-3,-0x1.773348p-2,
+-0x1.b1244p-2,-0x1.8d30aap-2,-0x1.353b24p-2,-0x1.958b9ap-3,-0x1.9bc8d2p-4,
+-0x1.a8169ap-6,0x1.22c0e8p-6,0x1.f16332p-6,0x1.49d8bp-6,0x1.c19188p-9,
+0x1.3a23b4p-8,0x1.d27f42p-5,0x1.9b37ap-3,0x1.f10f6ep-2,-0x1.648d62p-5,
+-0x1.826936p-4,-0x1.be1562p-4,-0x1.990eccp-4,-0x1.3e787ap-4,-0x1.a1a9a6p-5,
+-0x1.a8169ap-6,-0x1.b4c27cp-8,0x1.2b70e6p-8,0x1.001fep-7,0x1.53b3b6p-8,
+0x1.cf005p-11,0x1.438694p-10,0x1.e06f88p-7,0x1.a7810ep-5,0x1.ffe97cp-4,
+0x1.e8e6f4p-6,0x1.08ec1p-4,0x1.31d55ap-4,0x1.1872dep-4,0x1.b4af5p-5,
+0x1.1e5922p-5,0x1.22c0e8p-6,0x1.2b70e6p-8,-0x1.9a977p-9,-0x1.5f323ep-8,
+-0x1.d1cc1p-9,-0x1.3d6eap-11,-0x1.bb9dc6p-11,-0x1.496296p-7,-0x1.225a6p-5,
+-0x1.5ef716p-4,0x1.a22dbap-5,0x1.c532b8p-4,0x1.05979ap-3,0x1.dfc25ap-4,
+0x1.7583d2p-4,0x1.e9d9fp-5,0x1.f16332p-6,0x1.001fep-7,-0x1.5f323ep-8,
+-0x1.2c6498p-7,-0x1.8e6a7ap-8,-0x1.0f8358p-10,-0x1.7b7198p-10,-0x1.19bcaap-6,
+-0x1.f0b3dp-5,-0x1.2c32p-3,0x1.155186p-5,0x1.2c8abap-4,0x1.5af432p-4,
+0x1.3e27f6p-4,0x1.ef6614p-5,0x1.44d948p-5,0x1.49d8bp-6,0x1.53b3b6p-8,
+-0x1.d1cc1p-9,-0x1.8e6a7ap-8,-0x1.08367p-8,-0x1.681cbp-11,-0x1.f7432p-11,
+-0x1.75ac14p-7,-0x1.49646p-5,-0x1.8e275ep-4,0x1.79f98ap-8,0x1.99a0a2p-7,
+0x1.d8e2ap-7,0x1.b1a28cp-7,0x1.519ae6p-7,0x1.bac1cp-8,0x1.c19188p-9,
+0x1.cf005p-11,-0x1.3d6eap-11,-0x1.0f8358p-10,-0x1.681cbp-11,-0x1.ead1c4p-14,
+-0x1.56f6cp-13,-0x1.fd4d26p-10,-0x1.c0f302p-8,-0x1.0f559ep-6,0x1.081cep-7,
+0x1.1e3afap-6,0x1.4a6ea8p-6,0x1.2f017cp-6,0x1.d7ceeep-7,0x1.35613ap-7,
+0x1.3a23b4p-8,0x1.438694p-10,-0x1.bb9dc6p-11,-0x1.7b7198p-10,-0x1.f7432p-11,
+-0x1.56f6cp-13,-0x1.df4c1ep-13,-0x1.63e0d6p-9,-0x1.39b4eep-7,-0x1.7b31bp-6,
+0x1.88352p-4,0x1.a90d58p-3,0x1.eab12p-3,0x1.c1f6aep-3,0x1.5e5154p-3,
+0x1.cb6dd2p-4,0x1.d27f42p-5,0x1.e06f88p-7,-0x1.496296p-7,-0x1.19bcaap-6,
+-0x1.75ac14p-7,-0x1.fd4d26p-10,-0x1.63e0d6p-9,-0x1.083d58p-5,-0x1.d1dac2p-4,
+-0x1.198d36p-2,0x1.59bb24p-2,0x1.76aefcp-1,0x1.b08b84p-1,0x1.8ca49cp-1,
+0x1.34ce1cp-1,0x1.94fc9ap-2,0x1.9b37ap-3,0x1.a7810ep-5,-0x1.225a6p-5,
+-0x1.f0b3dp-5,-0x1.49646p-5,-0x1.c0f302p-8,-0x1.39b4eep-7,-0x1.d1dac2p-4,
+-0x1.9aa6ap-2,-0x1.f06028p-1,0x1.a1e74cp-1,0x1.c4e662p+0,0x1.056b8ap+1,
+0x1.df718cp+0,0x1.7544eap+0,0x1.e9877p-1,0x1.f10f6ep-2,0x1.ffe97cp-4,
+-0x1.5ef716p-4,-0x1.2c32p-3,-0x1.8e275ep-4,-0x1.0f559ep-6,-0x1.7b31bp-6,
+-0x1.198d36p-2,-0x1.f06028p-1,-0x1.2bff72p+1,-0x1.0aea26p-2,-0x1.21445p-1,
+-0x1.4df008p-1,-0x1.32386p-1,-0x1.dcd04p-2,-0x1.38a96cp-2,-0x1.3d78d4p-3,
+-0x1.46f534p-5,0x1.c0528ap-6,0x1.7f7814p-5,0x1.fc99dep-6,0x1.5a9a2ap-8,
+0x1.e461c8p-8,0x1.67a754p-4,0x1.3d08e4p-2,0x1.7f377ep-1,-0x1.21445p-1,
+-0x1.397dacp+0,-0x1.69e70cp+0,-0x1.4bdd3p+0,-0x1.025f22p+0,-0x1.52d854p-1,
+-0x1.580edcp-2,-0x1.625694p-4,0x1.e5ddc2p-5,0x1.9f94f6p-4,0x1.1398aep-4,
+0x1.77a0bp-7,0x1.067906p-6,0x1.85c5a4p-3,0x1.57958ap-1,0x1.9f4ef6p+0,
+-0x1.4df008p-1,-0x1.69e70cp+0,-0x1.a1ca5p+0,-0x1.7f1ceap+0,-0x1.2a4576p+0,
+-0x1.872c0cp-1,-0x1.8d30aap-2,-0x1.990eccp-4,0x1.1872dep-4,0x1.dfc25ap-4,
+0x1.3e27f6p-4,0x1.b1a28cp-7,0x1.2f017cp-6,0x1.c1f6aep-3,0x1.8ca49cp-1,
+0x1.df718ap+0,-0x1.32386p-1,-0x1.4bdd3p+0,-0x1.7f1ceap+0,-0x1.5f505cp+0,
+-0x1.1183a8p+0,-0x1.66b43ep-1,-0x1.6c38fcp-2,-0x1.771af4p-4,0x1.012bc4p-4,
+0x1.b7f036p-4,0x1.23bfa2p-4,0x1.8da47ap-7,0x1.15db14p-6,0x1.9c9da8p-3,
+0x1.6bb88ep-1,0x1.b7a61cp+0,-0x1.dcd04p-2,-0x1.025f22p+0,-0x1.2a4576p+0,
+-0x1.1183a8p+0,-0x1.a9e324p-1,-0x1.174494p-1,-0x1.1b9076p-2,-0x1.240978p-4,
+0x1.90707p-5,0x1.568336p-4,0x1.c6479ep-5,0x1.35955p-7,0x1.b0a5bcp-7,
+0x1.413d9ep-3,0x1.1b2c7ap-1,0x1.564986p+0,-0x1.38a96cp-2,-0x1.52d854p-1,
+-0x1.872c0cp-1,-0x1.66b43ep-1,-0x1.174494p-1,-0x1.6e3feep-2,-0x1.73e264p-3,
+-0x1.7efef8p-5,0x1.0694aep-5,0x1.c1315ap-5,0x1.29e2cp-5,0x1.9601dap-8,
+0x1.1bb362p-7,0x1.a54baap-4,0x1.735f42p-2,0x1.c0e5b4p-1,-0x1.3d78d4p-3,
+-0x1.580edcp-2,-0x1.8d30aap-2,-0x1.6c38fcp-2,-0x1.1b9076p-2,-0x1.73e264p-3,
+-0x1.799b0ap-4,-0x1.84e362p-6,0x1.0a9ed8p-6,0x1.c81a7cp-6,0x1.2e77f6p-6,
+0x1.9c40e6p-9,0x1.2010bap-8,0x1.abc6eap-5,0x1.7915e6p-3,0x1.c7cdaap-2,
+-0x1.46f534p-5,-0x1.625694p-4,-0x1.990eccp-4,-0x1.771af4p-4,-0x1.240978p-4,
+-0x1.7efef8p-5,-0x1.84e362p-6,-0x1.908204p-8,0x1.12963ep-8,0x1.d5bb4p-8,
+0x1.378192p-8,0x1.a89242p-11,0x1.28ac2ap-10,0x1.b88f04p-7,0x1.845a4p-5,
+0x1.d56c26p-4,0x1.c0528ap-6,0x1.e5ddc2p-5,0x1.1872dep-4,0x1.012bc4p-4,
+0x1.90707p-5,0x1.0694aep-5,0x1.0a9ed8p-6,0x1.12963ep-8,-0x1.7883p-9,
+-0x1.420bdep-8,-0x1.ab229ap-9,-0x1.2315aep-11,-0x1.96cb9ep-11,-0x1.2e0baap-7,
+-0x1.0a40d4p-5,-0x1.41d59ep-4,0x1.7f7814p-5,0x1.9f94f6p-4,0x1.dfc25ap-4,
+0x1.b7f036p-4,0x1.568336p-4,0x1.c1315ap-5,0x1.c81a7cp-6,0x1.d5bb4p-8,
+-0x1.420bdep-8,-0x1.1375b6p-7,-0x1.6d58cp-8,-0x1.f1f43ap-11,-0x1.5bf3p-10,
+-0x1.025a3p-6,-0x1.c779a8p-5,-0x1.13475p-3,0x1.fc99dep-6,0x1.1398aep-4,
+0x1.3e27f6p-4,0x1.23bfa2p-4,0x1.c6479ep-5,0x1.29e2cp-5,0x1.2e77f6p-6,
+0x1.378192p-8,-0x1.ab229ap-9,-0x1.6d58cp-8,-0x1.e490aap-9,-0x1.4a38dep-11,
+-0x1.cd7d96p-11,-0x1.56a82p-7,-0x1.2e0d4ep-5,-0x1.6d1b38p-4,0x1.5a9a2ap-8,
+0x1.77a0bp-7,0x1.b1a28cp-7,0x1.8da47ap-7,0x1.35955p-7,0x1.9601dap-8,
+0x1.9c40e6p-9,0x1.a89242p-11,-0x1.2315aep-11,-0x1.f1f43ap-11,-0x1.4a38dep-11,
+-0x1.c2149ep-14,-0x1.3a7f4cp-13,-0x1.d30748p-10,-0x1.9baf88p-8,-0x1.f1a05cp-7,
+0x1.e461c8p-8,0x1.067906p-6,0x1.2f017cp-6,0x1.15db14p-6,0x1.b0a5bcp-7,
+0x1.1bb362p-7,0x1.2010bap-8,0x1.28ac2ap-10,-0x1.96cb9ep-11,-0x1.5bf3p-10,
+-0x1.cd7d96p-11,-0x1.3a7f4cp-13,-0x1.b783cap-13,-0x1.4656fap-9,-0x1.1fab26p-7,
+-0x1.5bb866p-6,0x1.67a754p-4,0x1.85c5a4p-3,0x1.c1f6aep-3,0x1.9c9da8p-3,
+0x1.413d9ep-3,0x1.a54baap-4,0x1.abc6eap-5,0x1.b88f04p-7,-0x1.2e0baap-7,
+-0x1.025a3p-6,-0x1.56a82p-7,-0x1.d30748p-10,-0x1.4656fap-9,-0x1.e49d52p-6,
+-0x1.ab3012p-4,-0x1.022eaep-2,0x1.3d08e4p-2,0x1.57958ap-1,0x1.8ca49cp-1,
+0x1.6bb88ep-1,0x1.1b2c7ap-1,0x1.735f42p-2,0x1.7915e6p-3,0x1.845a4p-5,
+-0x1.0a40d4p-5,-0x1.c779a8p-5,-0x1.2e0d4ep-5,-0x1.9baf88p-8,-0x1.1fab26p-7,
+-0x1.ab3012p-4,-0x1.7890eep-2,-0x1.c72cfp-1,0x1.7f377ep-1,0x1.9f4ef6p+0,
+0x1.df718ap+0,0x1.b7a61cp+0,0x1.564986p+0,0x1.c0e5b4p-1,0x1.c7cdaap-2,
+0x1.d56c26p-4,-0x1.41d59ep-4,-0x1.13475p-3,-0x1.6d1b38p-4,-0x1.f1a05cp-7,
+-0x1.5bb866p-6,-0x1.022eaep-2,-0x1.c72cfp-1,-0x1.1318f4p+1,-0x1.9f9c6cp-3,
+-0x1.c26a5ep-2,-0x1.03fc6ep-1,-0x1.dcd04p-2,-0x1.7338b8p-2,-0x1.e6d7fap-3,
+-0x1.ee5564p-4,-0x1.fd1a98p-6,0x1.5d0a3ap-6,0x1.2a8c6ep-5,0x1.8bf83cp-6,
+0x1.0dd894p-8,0x1.791d2ep-8,0x1.1801d4p-4,0x1.eda716p-3,0x1.2a5a26p-1,
+-0x1.c26a5ep-2,-0x1.e82276p-1,-0x1.19c20ep+0,-0x1.025f24p+0,-0x1.924f0ap-1,
+-0x1.07ce82p-1,-0x1.0bdd8p-2,-0x1.13de6cp-4,0x1.7a4502p-5,0x1.438cc6p-4,
+0x1.ad211cp-5,0x1.247196p-7,0x1.98b1d2p-7,0x1.2f74acp-3,0x1.0b7f0ep-1,
+0x1.435646p+0,-0x1.03fc6ep-1,-0x1.19c20ep+0,-0x1.4544ecp+0,-0x1.2a4576p+0,
+-0x1.d06fb4p-1,-0x1.308bb4p-1,-0x1.353b24p-2,-0x1.3e787ap-4,0x1.b4af5p-5,
+0x1.7583d2p-4,0x1.ef6616p-5,0x1.519ae6p-7,0x1.d7ceeep-7,0x1.5e5154p-3,
+0x1.34ce1ap-1,0x1.7544e8p+0,-0x1.dcd04p-2,-0x1.025f24p+0,-0x1.2a4576p+0,
+-0x1.1183a8p+0,-0x1.a9e324p-1,-0x1.174494p-1,-0x1.1b9076p-2,-0x1.240978p-4,
+0x1.90707p-5,0x1.568336p-4,0x1.c647ap-5,0x1.35955p-7,0x1.b0a5bcp-7,
+0x1.413d9ep-3,0x1.1b2c7ap-1,0x1.564986p+0,-0x1.7338b8p-2,-0x1.924f0ap-1,
+-0x1.d06fb4p-1,-0x1.a9e324p-1,-0x1.4b92bap-1,-0x1.b2d8ap-2,-0x1.b9894p-3,
+-0x1.c6ba96p-5,0x1.37c2b8p-5,0x1.0aa97ap-4,0x1.61ad92p-5,0x1.e20cdp-8,
+0x1.50d612p-7,0x1.f433a8p-4,0x1.b8ed8ep-2,0x1.0a7c9p+0,-0x1.e6d7fap-3,
+-0x1.07ce82p-1,-0x1.308bb4p-1,-0x1.174494p-1,-0x1.b2d8ap-2,-0x1.1d247cp-2,
+-0x1.218782p-3,-0x1.2a2e24p-5,0x1.98dcep-6,0x1.5db7b2p-5,0x1.cfd6p-6,
+0x1.3c187ap-8,0x1.b9bf9ep-8,0x1.47ff9p-4,0x1.21216ap-2,0x1.5d7cccp-1,
+-0x1.ee5564p-4,-0x1.0bdd8p-2,-0x1.353b24p-2,-0x1.1b9076p-2,-0x1.b9894p-3,
+-0x1.218782p-3,-0x1.25fbcep-4,-0x1.2ec484p-6,0x1.9f272ap-7,0x1.63190cp-6,
+0x1.d6f8ccp-7,0x1.40f568p-9,0x1.c08b6ep-9,0x1.4d0b5ep-5,0x1.259426p-3,
+0x1.62dd3ep-2,-0x1.fd1a98p-6,-0x1.13de6cp-4,-0x1.3e787ap-4,-0x1.240978p-4,
+-0x1.c6ba96p-5,-0x1.2a2e24p-5,-0x1.2ec484p-6,-0x1.37d068p-8,0x1.ab8eb4p-9,
+0x1.6db538p-8,0x1.e50b4cp-9,0x1.4a8c72p-11,0x1.cdf262p-11,0x1.56fedap-7,
+0x1.2e59cp-5,0x1.6d77ap-4,0x1.5d0a3ap-6,0x1.7a4502p-5,0x1.b4af5p-5,0x1.90707p-5,
+0x1.37c2b8p-5,0x1.98dcep-6,0x1.9f272ap-7,0x1.ab8eb4p-9,-0x1.2521c8p-9,
+-0x1.f574ccp-9,-0x1.4c8b7p-9,-0x1.c53efep-12,-0x1.3cb58ep-11,-0x1.d6502cp-8,
+-0x1.9e94c6p-6,-0x1.f52056p-5,0x1.2a8c6ep-5,0x1.438cc6p-4,0x1.7583d2p-4,
+0x1.568336p-4,0x1.0aa97ap-4,0x1.5db7b2p-5,0x1.63190cp-6,0x1.6db538p-8,
+-0x1.f574ccp-9,-0x1.aceaaap-8,-0x1.1c708p-8,-0x1.83ae32p-11,-0x1.0ee50cp-10,
+-0x1.924758p-7,-0x1.629bd6p-5,-0x1.aca26cp-4,0x1.8bf83cp-6,0x1.ad211cp-5,
+0x1.ef6616p-5,0x1.c647ap-5,0x1.61ad92p-5,0x1.cfd6p-6,0x1.d6f8ccp-7,
+0x1.e50b4cp-9,-0x1.4c8b7p-9,-0x1.1c708p-8,-0x1.7941aep-9,-0x1.0117e6p-11,
+-0x1.674abep-11,-0x1.0ac638p-7,-0x1.d652bap-6,-0x1.1c4098p-4,0x1.0dd894p-8,
+0x1.247196p-7,0x1.519ae6p-7,0x1.35955p-7,0x1.e20cdp-8,0x1.3c187ap-8,
+0x1.40f568p-9,0x1.4a8c72p-11,-0x1.c53efep-12,-0x1.83ae32p-11,-0x1.0117e6p-11,
+-0x1.5e68a2p-14,-0x1.e9b39ep-14,-0x1.6b9a7cp-10,-0x1.40843ap-8,-0x1.836ce8p-7,
+0x1.791d2ep-8,0x1.98b1d2p-7,0x1.d7ceeep-7,0x1.b0a5bcp-7,0x1.50d612p-7,
+0x1.b9bf9ep-8,0x1.c08b6ep-9,0x1.cdf262p-11,-0x1.3cb58ep-11,-0x1.0ee50cp-10,
+-0x1.674abep-11,-0x1.e9b39ep-14,-0x1.562eccp-13,-0x1.fc2438p-10,-0x1.bfed44p-8,
+-0x1.0eb76ep-6,0x1.1801d4p-4,0x1.2f74acp-3,0x1.5e5154p-3,0x1.413d9ep-3,
+0x1.f433a8p-4,0x1.47ff9p-4,0x1.4d0b5ep-5,0x1.56fedap-7,-0x1.d6502cp-8,
+-0x1.924758p-7,-0x1.0ac638p-7,-0x1.6b9a7cp-10,-0x1.fc2438p-10,-0x1.794b88p-6,
+-0x1.4c95ecp-4,-0x1.920396p-3,0x1.eda716p-3,0x1.0b7f0ep-1,0x1.34ce1ap-1,
+0x1.1b2c7ap-1,0x1.b8ed8ep-2,0x1.21216ap-2,0x1.259426p-3,0x1.2e59cp-5,
+-0x1.9e94c6p-6,-0x1.629bd6p-5,-0x1.d652bap-6,-0x1.40843ap-8,-0x1.bfed44p-8,
+-0x1.4c95ecp-4,-0x1.252cap-2,-0x1.62601cp-1,0x1.2a5a26p-1,0x1.435646p+0,
+0x1.7544e8p+0,0x1.564986p+0,0x1.0a7c9p+0,0x1.5d7cccp-1,0x1.62dd3ep-2,
+0x1.6d77ap-4,-0x1.f52056p-5,-0x1.aca26cp-4,-0x1.1c4098p-4,-0x1.836ce8p-7,
+-0x1.0eb76ep-6,-0x1.920396p-3,-0x1.62601cp-1,-0x1.ac5a3cp+0,-0x1.108788p-3,
+-0x1.275a12p-2,-0x1.54f658p-2,-0x1.38a96ep-2,-0x1.e6d7fap-3,-0x1.3f3d2ap-3,
+-0x1.44267ap-4,-0x1.4dd5eep-6,0x1.c9c0d6p-7,0x1.87892p-6,0x1.03a664p-6,
+0x1.61e4aep-9,0x1.ee9244p-9,0x1.6f382p-5,0x1.43b42ep-3,0x1.87473p-2,
+-0x1.275a12p-2,-0x1.4015ep-1,-0x1.7183f6p-1,-0x1.52d856p-1,-0x1.07ce84p-1,
+-0x1.59f912p-2,-0x1.5f4bacp-3,-0x1.69cac2p-5,0x1.f0163cp-6,0x1.a852f2p-5,
+0x1.1964dp-5,0x1.7f8782p-8,0x1.0bfe7ep-7,0x1.8df8a4p-4,0x1.5ecfccp-2,
+0x1.a80b78p-1,-0x1.54f658p-2,-0x1.7183f6p-1,-0x1.aa943p-1,-0x1.872c0cp-1,
+-0x1.308bb6p-1,-0x1.8f6694p-2,-0x1.958b9ap-3,-0x1.a1a9a6p-5,0x1.1e5922p-5,
+0x1.e9d9fp-5,0x1.44d94ap-5,0x1.bac1cp-8,0x1.35613ap-7,0x1.cb6dd2p-4,
+0x1.94fc9ap-2,0x1.e9876ep-1,-0x1.38a96ep-2,-0x1.52d856p-1,-0x1.872c0cp-1,
+-0x1.66b43ep-1,-0x1.174494p-1,-0x1.6e3feep-2,-0x1.73e264p-3,-0x1.7efef6p-5,
+0x1.0694aep-5,0x1.c1315cp-5,0x1.29e2c2p-5,0x1.9601dap-8,0x1.1bb362p-7,
+0x1.a54baap-4,0x1.735f42p-2,0x1.c0e5b4p-1,-0x1.e6d7fap-3,-0x1.07ce84p-1,
+-0x1.308bb6p-1,-0x1.174494p-1,-0x1.b2d8ap-2,-0x1.1d247cp-2,-0x1.218782p-3,
+-0x1.2a2e24p-5,0x1.98dcep-6,0x1.5db7b4p-5,0x1.cfd6p-6,0x1.3c187ap-8,
+0x1.b9bf9ep-8,0x1.47ff9p-4,0x1.21216ap-2,0x1.5d7cccp-1,-0x1.3f3d2ap-3,
+-0x1.59f912p-2,-0x1.8f6694p-2,-0x1.6e3feep-2,-0x1.1d247cp-2,-0x1.75f44p-3,
+-0x1.7bb50ep-4,-0x1.870d78p-6,0x1.0c1ab8p-6,0x1.caa456p-6,0x1.3026ecp-6,
+0x1.9e8c46p-9,0x1.21ab2ap-8,0x1.ae286cp-5,0x1.7b2f2ap-3,0x1.ca5718p-2,
+-0x1.44267ap-4,-0x1.5f4bacp-3,-0x1.958b9ap-3,-0x1.73e264p-3,-0x1.218782p-3,
+-0x1.7bb50ep-4,-0x1.818c84p-5,-0x1.8d119ep-7,0x1.103aa4p-7,0x1.d1b2aep-7,
+0x1.34d4dp-7,0x1.a4ecf4p-10,0x1.262002p-9,0x1.b4c694p-6,0x1.810492p-4,
+0x1.d1644p-3,-0x1.4dd5eep-6,-0x1.69cac2p-5,-0x1.a1a9a6p-5,-0x1.7efef6p-5,
+-0x1.2a2e24p-5,-0x1.870d78p-6,-0x1.8d119ep-7,-0x1.98eed2p-9,0x1.185cf2p-9,
+0x1.df9cd8p-9,0x1.3e0f16p-9,0x1.b180a6p-12,0x1.2ee9ccp-11,0x1.c1d382p-8,
+0x1.8c859ap-6,0x1.df4c12p-5,0x1.c9c0d6p-7,0x1.f0163cp-6,0x1.1e5922p-5,
+0x1.0694aep-5,0x1.98dcep-6,0x1.0c1ab8p-6,0x1.103aa4p-7,0x1.185cf2p-9,
+-0x1.806e96p-10,-0x1.48d224p-9,-0x1.b41eccp-10,-0x1.29353ap-12,-0x1.9f5a48p-12,
+-0x1.34663cp-8,-0x1.0fdaa6p-6,-0x1.489ac2p-5,0x1.87892p-6,0x1.a852f2p-5,
+0x1.e9d9fp-5,0x1.c1315cp-5,0x1.5db7b4p-5,0x1.caa456p-6,0x1.d1b2aep-7,
+0x1.df9cd8p-9,-0x1.48d224p-9,-0x1.19411cp-8,-0x1.750836p-9,-0x1.fc6dccp-12,
+-0x1.6344c6p-11,-0x1.07c976p-7,-0x1.d10e78p-6,-0x1.1911bep-4,0x1.03a664p-6,
+0x1.1964dp-5,0x1.44d94ap-5,0x1.29e2c2p-5,0x1.cfd6p-6,0x1.3026ecp-6,0x1.34d4dp-7,
+0x1.3e0f16p-9,-0x1.b41eccp-10,-0x1.750836p-9,-0x1.eec222p-10,-0x1.512b2cp-12,
+-0x1.d732cap-12,-0x1.5ddd64p-8,-0x1.3467eap-6,-0x1.74c962p-5,0x1.61e4aep-9,
+0x1.7f8782p-8,0x1.bac1cp-8,0x1.9601dap-8,0x1.3c187ap-8,0x1.9e8c46p-9,
+0x1.a4ecf4p-10,0x1.b180a6p-12,-0x1.29353ap-12,-0x1.fc6dccp-12,-0x1.512b2cp-12,
+-0x1.cb8c62p-15,-0x1.411cecp-14,-0x1.dcda5p-11,-0x1.a45888p-9,-0x1.fc182cp-8,
+0x1.ee9244p-9,0x1.0bfe7ep-7,0x1.35613ap-7,0x1.1bb362p-7,0x1.b9bf9ep-8,
+0x1.21ab2ap-8,0x1.262002p-9,0x1.2ee9ccp-11,-0x1.9f5a48p-12,-0x1.6344c6p-11,
+-0x1.d732cap-12,-0x1.411cecp-14,-0x1.c0c2a8p-14,-0x1.4d346p-10,-0x1.25b84cp-8,
+-0x1.6308fp-7,0x1.6f382p-5,0x1.8df8a4p-4,0x1.cb6dd2p-4,0x1.a54baap-4,
+0x1.47ff9p-4,0x1.ae286cp-5,0x1.b4c694p-6,0x1.c1d382p-8,-0x1.34663cp-8,
+-0x1.07c976p-7,-0x1.5ddd64p-8,-0x1.dcda5p-11,-0x1.4d346p-10,-0x1.eecf0ep-7,
+-0x1.b42c8ep-5,-0x1.079d08p-3,0x1.43b42ep-3,0x1.5ecfccp-2,0x1.94fc9ap-2,
+0x1.735f42p-2,0x1.21216ap-2,0x1.7b2f2ap-3,0x1.810492p-4,0x1.8c859ap-6,
+-0x1.0fdaa6p-6,-0x1.d10e78p-6,-0x1.3467eap-6,-0x1.a45888p-9,-0x1.25b84cp-8,
+-0x1.b42c8ep-5,-0x1.807ccep-3,-0x1.d0c024p-2,0x1.87473p-2,0x1.a80b78p-1,
+0x1.e9876ep-1,0x1.c0e5b4p-1,0x1.5d7cccp-1,0x1.ca5718p-2,0x1.d1644p-3,
+0x1.df4c12p-5,-0x1.489ac2p-5,-0x1.1911bep-4,-0x1.74c962p-5,-0x1.fc182cp-8,
+-0x1.6308fp-7,-0x1.079d08p-3,-0x1.d0c024p-2,-0x1.18e268p+0,-0x1.14b8ep-4,
+-0x1.2be54cp-3,-0x1.5a3536p-3,-0x1.3d78d6p-3,-0x1.ee5564p-4,-0x1.44267ap-4,
+-0x1.492322p-5,-0x1.52f8bap-7,0x1.d0cbaep-8,0x1.8d8f2cp-7,0x1.07a502p-7,
+0x1.67567ap-10,0x1.f62e1ep-10,0x1.74de68p-6,0x1.48af12p-4,0x1.8d4c38p-3,
+-0x1.2be54cp-3,-0x1.450284p-2,-0x1.773348p-2,-0x1.580edcp-2,-0x1.0bdd82p-2,
+-0x1.5f4bacp-3,-0x1.64b33cp-4,-0x1.6f5ba8p-6,0x1.f7b80ep-7,0x1.aeda2p-6,
+0x1.1db912p-6,0x1.856e06p-9,0x1.101dfap-8,0x1.941808p-5,0x1.643576p-3,
+0x1.ae918ep-2,-0x1.5a3536p-3,-0x1.773348p-2,-0x1.b1244p-2,-0x1.8d30aap-2,
+-0x1.353b26p-2,-0x1.958b9ap-3,-0x1.9bc8d4p-4,-0x1.a81698p-6,0x1.22c0e8p-6,
+0x1.f16334p-6,0x1.49d8b2p-6,0x1.c19188p-9,0x1.3a23b4p-8,0x1.d27f42p-5,
+0x1.9b37ap-3,0x1.f10f6cp-2,-0x1.3d78d6p-3,-0x1.580edcp-2,-0x1.8d30aap-2,
+-0x1.6c38fcp-2,-0x1.1b9076p-2,-0x1.73e264p-3,-0x1.799b0cp-4,-0x1.84e36p-6,
+0x1.0a9ed8p-6,0x1.c81a7cp-6,0x1.2e77f8p-6,0x1.9c40e6p-9,0x1.2010bap-8,
+0x1.abc6ecp-5,0x1.7915e6p-3,0x1.c7cdaap-2,-0x1.ee5564p-4,-0x1.0bdd82p-2,
+-0x1.353b26p-2,-0x1.1b9076p-2,-0x1.b9894p-3,-0x1.218782p-3,-0x1.25fbdp-4,
+-0x1.2ec482p-6,0x1.9f272ap-7,0x1.63190ep-6,0x1.d6f8ccp-7,0x1.40f568p-9,
+0x1.c08b6ep-9,0x1.4d0b5ep-5,0x1.259426p-3,0x1.62dd3ep-2,-0x1.44267ap-4,
+-0x1.5f4bacp-3,-0x1.958b9ap-3,-0x1.73e264p-3,-0x1.218782p-3,-0x1.7bb50ep-4,
+-0x1.818c84p-5,-0x1.8d119ep-7,0x1.103aa4p-7,0x1.d1b2aep-7,0x1.34d4dp-7,
+0x1.a4ecf4p-10,0x1.262002p-9,0x1.b4c694p-6,0x1.810492p-4,0x1.d1644p-3,
+-0x1.492322p-5,-0x1.64b33cp-4,-0x1.9bc8d4p-4,-0x1.799b0cp-4,-0x1.25fbdp-4,
+-0x1.818c84p-5,-0x1.877afcp-6,-0x1.932d74p-8,0x1.146acep-8,0x1.d8dcdp-8,
+0x1.399522p-8,0x1.ab66c2p-11,0x1.2aa66ap-10,0x1.bb7eccp-7,0x1.86f0f2p-5,
+0x1.d88d2ep-4,-0x1.52f8bap-7,-0x1.6f5ba8p-6,-0x1.a81698p-6,-0x1.84e36p-6,
+-0x1.2ec482p-6,-0x1.8d119ep-7,-0x1.932d74p-8,-0x1.9f3964p-10,0x1.1cad24p-10,
+0x1.e6fdc8p-10,0x1.42f3cp-10,0x1.b82bfcp-13,0x1.3392cep-12,0x1.c8bf22p-9,
+0x1.929f4ap-7,0x1.e6abc4p-6,0x1.d0cbaep-8,0x1.f7b80ep-7,0x1.22c0e8p-6,
+0x1.0a9ed8p-6,0x1.9f272ap-7,0x1.103aa4p-7,0x1.146acep-8,0x1.1cad24p-10,
+-0x1.8658a8p-11,-0x1.4de13p-10,-0x1.bad47p-11,-0x1.2dc7c4p-13,-0x1.a5be22p-13,
+-0x1.3924dap-9,-0x1.140956p-7,-0x1.4da8f4p-6,0x1.8d8f2cp-7,0x1.aeda2p-6,
+0x1.f16334p-6,0x1.c81a7cp-6,0x1.63190ep-6,0x1.d1b2aep-7,0x1.d8dcdp-8,
+0x1.e6fdc8p-10,-0x1.4de13p-10,-0x1.1d94d2p-9,-0x1.7ac562p-10,-0x1.02201cp-12,
+-0x1.68bbfcp-12,-0x1.0bd86p-8,-0x1.d83614p-7,-0x1.1d64b8p-5,0x1.07a502p-7,
+0x1.1db912p-6,0x1.49d8b2p-6,0x1.2e77f8p-6,0x1.d6f8ccp-7,0x1.34d4dp-7,
+0x1.399522p-8,0x1.42f3cp-10,-0x1.bad47p-11,-0x1.7ac562p-10,-0x1.f65eb8p-11,
+-0x1.565b18p-13,-0x1.de7296p-13,-0x1.633f52p-9,-0x1.39268ep-7,-0x1.7a8596p-6,
+0x1.67567ap-10,0x1.856e06p-9,0x1.c19188p-9,0x1.9c40e6p-9,0x1.40f568p-9,
+0x1.a4ecf4p-10,0x1.ab66c2p-11,0x1.b82bfcp-13,-0x1.2dc7c4p-13,-0x1.02201cp-12,
+-0x1.565b18p-13,-0x1.d29e4cp-16,-0x1.460d9ep-15,-0x1.e43062p-12,-0x1.aad00cp-10,
+-0x1.01f4a4p-8,0x1.f62e1ep-10,0x1.101dfap-8,0x1.3a23b4p-8,0x1.2010bap-8,
+0x1.c08b6ep-9,0x1.262002p-9,0x1.2aa66ap-10,0x1.3392cep-12,-0x1.a5be22p-13,
+-0x1.68bbfcp-12,-0x1.de7296p-13,-0x1.460d9ep-15,-0x1.c7aa16p-15,-0x1.5254bp-11,
+-0x1.2a3d1ap-9,-0x1.687f3ap-8,0x1.74de68p-6,0x1.941808p-5,0x1.d27f42p-5,
+0x1.abc6ecp-5,0x1.4d0b5ep-5,0x1.b4c694p-6,0x1.bb7eccp-7,0x1.c8bf22p-9,
+-0x1.3924dap-9,-0x1.0bd86p-8,-0x1.633f52p-9,-0x1.e43062p-12,-0x1.5254bp-11,
+-0x1.f66bd8p-8,-0x1.bae26ap-6,-0x1.0bab44p-4,0x1.48af12p-4,0x1.643576p-3,
+0x1.9b37ap-3,0x1.7915e6p-3,0x1.259426p-3,0x1.810492p-4,0x1.86f0f2p-5,
+0x1.929f4ap-7,-0x1.140956p-7,-0x1.d83614p-7,-0x1.39268ep-7,-0x1.aad00cp-10,
+-0x1.2a3d1ap-9,-0x1.bae26ap-6,-0x1.866718p-4,-0x1.d7e68cp-3,0x1.8d4c38p-3,
+0x1.ae918ep-2,0x1.f10f6cp-2,0x1.c7cdaap-2,0x1.62dd3ep-2,0x1.d1644p-3,
+0x1.d88d2ep-4,0x1.e6abc4p-6,-0x1.4da8f4p-6,-0x1.1d64b8p-5,-0x1.7a8596p-6,
+-0x1.01f4a4p-8,-0x1.687f3ap-8,-0x1.0bab44p-4,-0x1.d7e68cp-3,-0x1.1d34a8p-1,
+-0x1.1cfd8cp-6,-0x1.34db3ap-5,-0x1.648d62p-5,-0x1.46f534p-5,-0x1.fd1a96p-6,
+-0x1.4dd5eep-6,-0x1.52f8bap-7,-0x1.5d198cp-9,0x1.deaefp-10,0x1.997022p-9,
+0x1.0f85a6p-9,0x1.721314p-12,0x1.0297aap-11,0x1.800282p-8,0x1.528134p-6,
+0x1.992b2ep-5,-0x1.34db3ap-5,-0x1.4eb88cp-4,-0x1.826938p-4,-0x1.625696p-4,
+-0x1.13de6ep-4,-0x1.69cac2p-5,-0x1.6f5baap-6,-0x1.7a559cp-8,0x1.036284p-8,
+0x1.bbb9cp-8,0x1.264296p-8,0x1.9110cep-11,0x1.183f6ap-10,0x1.a02afap-7,
+0x1.6eda2p-5,0x1.bb6f02p-4,-0x1.648d62p-5,-0x1.826938p-4,-0x1.be1562p-4,
+-0x1.990ecep-4,-0x1.3e787cp-4,-0x1.a1a9a6p-5,-0x1.a8169ap-6,-0x1.b4c27ap-8,
+0x1.2b70e6p-8,0x1.001fep-7,0x1.53b3b6p-8,0x1.cf005p-11,0x1.438694p-10,
+0x1.e06f88p-7,0x1.a7811p-5,0x1.ffe97ap-4,-0x1.46f534p-5,-0x1.625696p-4,
+-0x1.990ecep-4,-0x1.771af4p-4,-0x1.240978p-4,-0x1.7efef6p-5,-0x1.84e36p-6,
+-0x1.908202p-8,0x1.12963ep-8,0x1.d5bb42p-8,0x1.378192p-8,0x1.a89242p-11,
+0x1.28ac2ap-10,0x1.b88f06p-7,0x1.845a4p-5,0x1.d56c24p-4,-0x1.fd1a96p-6,
+-0x1.13de6ep-4,-0x1.3e787cp-4,-0x1.240978p-4,-0x1.c6ba98p-5,-0x1.2a2e24p-5,
+-0x1.2ec484p-6,-0x1.37d068p-8,0x1.ab8eb4p-9,0x1.6db53ap-8,0x1.e50b4cp-9,
+0x1.4a8c72p-11,0x1.cdf262p-11,0x1.56fedap-7,0x1.2e59cp-5,0x1.6d77ap-4,
+-0x1.4dd5eep-6,-0x1.69cac2p-5,-0x1.a1a9a6p-5,-0x1.7efef6p-5,-0x1.2a2e24p-5,
+-0x1.870d78p-6,-0x1.8d119cp-7,-0x1.98eed2p-9,0x1.185cf2p-9,0x1.df9cd8p-9,
+0x1.3e0f16p-9,0x1.b180a6p-12,0x1.2ee9ccp-11,0x1.c1d382p-8,0x1.8c859ap-6,
+0x1.df4c12p-5,-0x1.52f8bap-7,-0x1.6f5baap-6,-0x1.a8169ap-6,-0x1.84e36p-6,
+-0x1.2ec484p-6,-0x1.8d119cp-7,-0x1.932d72p-8,-0x1.9f3964p-10,0x1.1cad24p-10,
+0x1.e6fdc8p-10,0x1.42f3cp-10,0x1.b82bfcp-13,0x1.3392cep-12,0x1.c8bf22p-9,
+0x1.929f4ap-7,0x1.e6abc2p-6,-0x1.5d198cp-9,-0x1.7a559cp-8,-0x1.b4c27ap-8,
+-0x1.908202p-8,-0x1.37d068p-8,-0x1.98eed2p-9,-0x1.9f3964p-10,-0x1.aba178p-12,
+0x1.252ea8p-12,0x1.f58adp-12,0x1.4c9a08p-12,0x1.c552e4p-15,0x1.3cc376p-14,
+0x1.d664d2p-11,0x1.9ea6fap-9,0x1.f5365ap-8,0x1.deaefp-10,0x1.036284p-8,
+0x1.2b70e6p-8,0x1.12963ep-8,0x1.ab8eb4p-9,0x1.185cf2p-9,0x1.1cad24p-10,
+0x1.252ea8p-12,-0x1.920272p-13,-0x1.57db1p-12,-0x1.c80faep-13,-0x1.36cc1cp-15,
+-0x1.b25814p-15,-0x1.42801ep-11,-0x1.1c48c2p-9,-0x1.57a124p-8,0x1.997022p-9,
+0x1.bbb9cp-8,0x1.001fep-7,0x1.d5bb42p-8,0x1.6db53ap-8,0x1.df9cd8p-9,
+0x1.e6fdc8p-10,0x1.f58adp-12,-0x1.57db1p-12,-0x1.261d42p-11,-0x1.8616a2p-12,
+-0x1.09d688p-14,-0x1.738344p-14,-0x1.13d926p-10,-0x1.e6520ep-9,-0x1.25ebb8p-7,
+0x1.0f85a6p-9,0x1.264296p-8,0x1.53b3b6p-8,0x1.378192p-8,0x1.e50b4cp-9,
+0x1.3e0f16p-9,0x1.42f3cp-10,0x1.4c9a08p-12,-0x1.c80faep-13,-0x1.8616a2p-12,
+-0x1.02b0b2p-12,-0x1.6095cep-15,-0x1.ecbe46p-15,-0x1.6ddca4p-11,-0x1.4281dep-9,
+-0x1.85d4eep-8,0x1.721314p-12,0x1.9110cep-11,0x1.cf005p-11,0x1.a89242p-11,
+0x1.4a8c72p-11,0x1.b180a6p-12,0x1.b82bfcp-13,0x1.c552e4p-15,-0x1.36cc1cp-15,
+-0x1.09d688p-14,-0x1.6095cep-15,-0x1.e08f8p-18,-0x1.4fcbap-17,-0x1.f2a7fap-14,
+-0x1.b790c6p-12,-0x1.09a9c4p-10,0x1.0297aap-11,0x1.183f6ap-10,0x1.438694p-10,
+0x1.28ac2ap-10,0x1.cdf262p-11,0x1.2ee9ccp-11,0x1.3392cep-12,0x1.3cc376p-14,
+-0x1.b25814p-15,-0x1.738344p-14,-0x1.ecbe46p-15,-0x1.4fcbap-17,-0x1.d5478p-17,
+-0x1.5c709cp-13,-0x1.33265ap-11,-0x1.7344b2p-10,0x1.800282p-8,0x1.a02afap-7,
+0x1.e06f88p-7,0x1.b88f06p-7,0x1.56fedap-7,0x1.c1d382p-8,0x1.c8bf22p-9,
+0x1.d664d2p-11,-0x1.42801ep-11,-0x1.13d926p-10,-0x1.6ddca4p-11,-0x1.f2a7fap-14,
+-0x1.5c709cp-13,-0x1.02b774p-9,-0x1.c81e12p-8,-0x1.13aabp-6,0x1.528134p-6,
+0x1.6eda2p-5,0x1.a7811p-5,0x1.845a4p-5,0x1.2e59cp-5,0x1.8c859ap-6,0x1.929f4ap-7,
+0x1.9ea6fap-9,-0x1.1c48c2p-9,-0x1.e6520ep-9,-0x1.4281dep-9,-0x1.b790c6p-12,
+-0x1.33265ap-11,-0x1.c81e12p-8,-0x1.92115p-6,-0x1.e60026p-5,0x1.992b2ep-5,
+0x1.bb6f02p-4,0x1.ffe97ap-4,0x1.d56c24p-4,0x1.6d77ap-4,0x1.df4c12p-5,
+0x1.e6abc2p-6,0x1.f5365ap-8,-0x1.57a124p-8,-0x1.25ebb8p-7,-0x1.85d4eep-8,
+-0x1.09a9c4p-10,-0x1.7344b2p-10,-0x1.13aabp-6,-0x1.e60026p-5,-0x1.25ba38p-3,
+0x1.86c6e8p-7,0x1.a78076p-6,0x1.e8e6f2p-6,0x1.c0528ap-6,0x1.5d0a3ap-6,
+0x1.c9c0d6p-7,0x1.d0cbacp-8,0x1.deaefp-10,-0x1.482f08p-10,-0x1.18b59ap-9,
+-0x1.744f2cp-10,-0x1.fb7198p-13,-0x1.62948cp-12,-0x1.07469ep-8,-0x1.d027c8p-7,
+-0x1.188652p-5,0x1.a78076p-6,0x1.caf792p-5,0x1.08ec1p-4,0x1.e5ddc2p-5,
+0x1.7a4502p-5,0x1.f0163cp-6,0x1.f7b80cp-7,0x1.036284p-8,-0x1.63aab2p-9,
+-0x1.30378p-8,-0x1.937ccep-9,-0x1.12f822p-11,-0x1.80461ap-11,-0x1.1d52c6p-7,
+-0x1.f7066ep-6,-0x1.300442p-4,0x1.e8e6f2p-6,0x1.08ec1p-4,0x1.31d55ap-4,
+0x1.1872dep-4,0x1.b4af52p-5,0x1.1e5922p-5,0x1.22c0e6p-6,0x1.2b70e6p-8,
+-0x1.9a977p-9,-0x1.5f323ep-8,-0x1.d1cc12p-9,-0x1.3d6eap-11,-0x1.bb9dc6p-11,
+-0x1.496298p-7,-0x1.225a6p-5,-0x1.5ef716p-4,0x1.c0528ap-6,0x1.e5ddc2p-5,
+0x1.1872dep-4,0x1.012bc4p-4,0x1.90707p-5,0x1.0694aep-5,0x1.0a9ed8p-6,
+0x1.12963ep-8,-0x1.7883p-9,-0x1.420bdep-8,-0x1.ab229ap-9,-0x1.2315aep-11,
+-0x1.96cb9ep-11,-0x1.2e0baap-7,-0x1.0a40d4p-5,-0x1.41d5ap-4,0x1.5d0a3ap-6,
+0x1.7a4502p-5,0x1.b4af52p-5,0x1.90707p-5,0x1.37c2b8p-5,0x1.98dcep-6,
+0x1.9f272ap-7,0x1.ab8eb2p-9,-0x1.2521c8p-9,-0x1.f574cep-9,-0x1.4c8b7p-9,
+-0x1.c53efep-12,-0x1.3cb58ep-11,-0x1.d6502cp-8,-0x1.9e94c6p-6,-0x1.f52058p-5,
+0x1.c9c0d6p-7,0x1.f0163cp-6,0x1.1e5922p-5,0x1.0694aep-5,0x1.98dcep-6,
+0x1.0c1ab8p-6,0x1.103aa4p-7,0x1.185cf2p-9,-0x1.806e96p-10,-0x1.48d224p-9,
+-0x1.b41eccp-10,-0x1.29353ap-12,-0x1.9f5a48p-12,-0x1.34663ep-8,-0x1.0fdaa6p-6,
+-0x1.489ac2p-5,0x1.d0cbacp-8,0x1.f7b80cp-7,0x1.22c0e6p-6,0x1.0a9ed8p-6,
+0x1.9f272ap-7,0x1.103aa4p-7,0x1.146acep-8,0x1.1cad24p-10,-0x1.8658a8p-11,
+-0x1.4de13p-10,-0x1.bad47p-11,-0x1.2dc7c4p-13,-0x1.a5be22p-13,-0x1.3924dap-9,
+-0x1.140956p-7,-0x1.4da8f6p-6,0x1.deaefp-10,0x1.036284p-8,0x1.2b70e6p-8,
+0x1.12963ep-8,0x1.ab8eb2p-9,0x1.185cf2p-9,0x1.1cad24p-10,0x1.252ea8p-12,
+-0x1.920272p-13,-0x1.57db1p-12,-0x1.c80faep-13,-0x1.36cc1cp-15,-0x1.b25814p-15,
+-0x1.42801ep-11,-0x1.1c48c2p-9,-0x1.57a126p-8,-0x1.482f08p-10,-0x1.63aab2p-9,
+-0x1.9a977p-9,-0x1.7883p-9,-0x1.2521c8p-9,-0x1.806e96p-10,-0x1.8658a8p-11,
+-0x1.920272p-13,0x1.139dcep-13,0x1.d77e2p-13,0x1.38ac92p-13,0x1.aa29c8p-16,
+0x1.29c8ecp-15,0x1.ba35e4p-12,0x1.85cf04p-10,0x1.d72eb6p-9,-0x1.18b59ap-9,
+-0x1.30378p-8,-0x1.5f323ep-8,-0x1.420bdep-8,-0x1.f574cep-9,-0x1.48d224p-9,
+-0x1.4de13p-10,-0x1.57db1p-12,0x1.d77e2p-13,0x1.93499ep-12,0x1.0b717ep-12,
+0x1.6c83eep-15,0x1.fd6a76p-15,0x1.7a3dc4p-11,0x1.4d6b76p-9,0x1.9305bp-8,
+-0x1.744f2cp-10,-0x1.937ccep-9,-0x1.d1cc12p-9,-0x1.ab229ap-9,-0x1.4c8b7p-9,
+-0x1.b41eccp-10,-0x1.bad47p-11,-0x1.c80faep-13,0x1.38ac92p-13,0x1.0b717ep-12,
+0x1.62b6dep-13,0x1.e37664p-16,0x1.51d2bap-15,0x1.f5aadap-12,0x1.ba384ap-10,
+0x1.0b4472p-8,-0x1.fb7198p-13,-0x1.12f822p-11,-0x1.3d6eap-11,-0x1.2315aep-11,
+-0x1.c53efep-12,-0x1.29353ap-12,-0x1.2dc7c4p-13,-0x1.36cc1cp-15,0x1.aa29c8p-16,
+0x1.6c83eep-15,0x1.e37664p-16,0x1.49788p-18,0x1.cc70cp-18,0x1.55e086p-14,
+0x1.2d5d5ap-12,0x1.6c468ap-11,-0x1.62948cp-12,-0x1.80461ap-11,-0x1.bb9dc6p-11,
+-0x1.96cb9ep-11,-0x1.3cb58ep-11,-0x1.9f5a48p-12,-0x1.a5be22p-13,-0x1.b25814p-15,
+0x1.29c8ecp-15,0x1.fd6a76p-15,0x1.51d2bap-15,0x1.cc70cp-18,0x1.41bc8p-17,
+0x1.ddc74ap-14,0x1.a5296cp-12,0x1.fd14aap-11,-0x1.07469ep-8,-0x1.1d52c6p-7,
+-0x1.496298p-7,-0x1.2e0baap-7,-0x1.d6502cp-8,-0x1.34663ep-8,-0x1.3924dap-9,
+-0x1.42801ep-11,0x1.ba35e4p-12,0x1.7a3dc4p-11,0x1.f5aadap-12,0x1.55e086p-14,
+0x1.ddc74ap-14,0x1.62c022p-10,0x1.38b66ep-8,0x1.79fe1p-7,-0x1.d027c8p-7,
+-0x1.f7066ep-6,-0x1.225a6p-5,-0x1.0a40d4p-5,-0x1.9e94c6p-6,-0x1.0fdaa6p-6,
+-0x1.140956p-7,-0x1.1c48c2p-9,0x1.85cf04p-10,0x1.4d6b76p-9,0x1.ba384ap-10,
+0x1.2d5d5ap-12,0x1.a5296cp-12,0x1.38b66ep-8,0x1.13a8p-6,0x1.4d334ep-5,
+-0x1.188652p-5,-0x1.300442p-4,-0x1.5ef716p-4,-0x1.41d5ap-4,-0x1.f52058p-5,
+-0x1.489ac2p-5,-0x1.4da8f6p-6,-0x1.57a126p-8,0x1.d72eb6p-9,0x1.9305bp-8,
+0x1.0b4472p-8,0x1.6c468ap-11,0x1.fd14aap-11,0x1.79fe1p-7,0x1.4d334ep-5,
+0x1.92c1dp-4,0x1.4e3f7ep-6,0x1.6a3d2ap-5,0x1.a22dbap-5,0x1.7f7814p-5,
+0x1.2a8c6ep-5,0x1.87892p-6,0x1.8d8f2cp-7,0x1.997022p-9,-0x1.18b59ap-9,
+-0x1.e03482p-9,-0x1.3e73aap-9,-0x1.b209bcp-12,-0x1.2f4996p-11,-0x1.c261c2p-8,
+-0x1.8d02fep-6,-0x1.dfe3a2p-5,0x1.6a3d2ap-5,0x1.8892e8p-4,0x1.c532b6p-4,
+0x1.9f94f6p-4,0x1.438cc6p-4,0x1.a852fp-5,0x1.aeda2p-6,0x1.bbb9bep-8,
+-0x1.30378p-8,-0x1.04359ep-7,-0x1.591ebp-8,-0x1.d662b8p-11,-0x1.48af84p-10,
+-0x1.e8192p-7,-0x1.ae4232p-5,-0x1.0409cap-3,0x1.a22dbap-5,0x1.c532b6p-4,
+0x1.05979ap-3,0x1.dfc25ap-4,0x1.7583d4p-4,0x1.e9d9fp-5,0x1.f16332p-6,
+0x1.001fep-7,-0x1.5f323ep-8,-0x1.2c649ap-7,-0x1.8e6a7ap-8,-0x1.0f8358p-10,
+-0x1.7b7198p-10,-0x1.19bcaap-6,-0x1.f0b3dp-5,-0x1.2c32p-3,0x1.7f7814p-5,
+0x1.9f94f6p-4,0x1.dfc25ap-4,0x1.b7f034p-4,0x1.568334p-4,0x1.c1315ap-5,
+0x1.c81a7cp-6,0x1.d5bb4p-8,-0x1.420bdep-8,-0x1.1375b6p-7,-0x1.6d58c2p-8,
+-0x1.f1f43ap-11,-0x1.5bf3p-10,-0x1.025a3p-6,-0x1.c779a8p-5,-0x1.134752p-3,
+0x1.2a8c6ep-5,0x1.438cc6p-4,0x1.7583d4p-4,0x1.568334p-4,0x1.0aa978p-4,
+0x1.5db7b2p-5,0x1.63190cp-6,0x1.6db536p-8,-0x1.f574ccp-9,-0x1.aceaacp-8,
+-0x1.1c708p-8,-0x1.83ae32p-11,-0x1.0ee50cp-10,-0x1.924758p-7,-0x1.629bd6p-5,
+-0x1.aca26cp-4,0x1.87892p-6,0x1.a852fp-5,0x1.e9d9fp-5,0x1.c1315ap-5,
+0x1.5db7b2p-5,0x1.caa456p-6,0x1.d1b2aep-7,0x1.df9cd8p-9,-0x1.48d224p-9,
+-0x1.19411cp-8,-0x1.750836p-9,-0x1.fc6dccp-12,-0x1.6344c6p-11,-0x1.07c978p-7,
+-0x1.d10e78p-6,-0x1.1911bep-4,0x1.8d8f2cp-7,0x1.aeda2p-6,0x1.f16332p-6,
+0x1.c81a7cp-6,0x1.63190cp-6,0x1.d1b2aep-7,0x1.d8dcdp-8,0x1.e6fdc8p-10,
+-0x1.4de13p-10,-0x1.1d94d2p-9,-0x1.7ac562p-10,-0x1.02201cp-12,-0x1.68bbfcp-12,
+-0x1.0bd86p-8,-0x1.d83614p-7,-0x1.1d64bap-5,0x1.997022p-9,0x1.bbb9bep-8,
+0x1.001fep-7,0x1.d5bb4p-8,0x1.6db536p-8,0x1.df9cd8p-9,0x1.e6fdc8p-10,
+0x1.f58adp-12,-0x1.57db1p-12,-0x1.261d42p-11,-0x1.8616a2p-12,-0x1.09d688p-14,
+-0x1.738344p-14,-0x1.13d926p-10,-0x1.e6520ep-9,-0x1.25ebb8p-7,-0x1.18b59ap-9,
+-0x1.30378p-8,-0x1.5f323ep-8,-0x1.420bdep-8,-0x1.f574ccp-9,-0x1.48d224p-9,
+-0x1.4de13p-10,-0x1.57db1p-12,0x1.d77e2p-13,0x1.93499ep-12,0x1.0b717ep-12,
+0x1.6c83eep-15,0x1.fd6a76p-15,0x1.7a3dc4p-11,0x1.4d6b76p-9,0x1.9305bp-8,
+-0x1.e03482p-9,-0x1.04359ep-7,-0x1.2c649ap-7,-0x1.1375b6p-7,-0x1.aceaacp-8,
+-0x1.19411cp-8,-0x1.1d94d2p-9,-0x1.261d42p-11,0x1.93499ep-12,0x1.58f2e8p-11,
+0x1.c982d8p-12,0x1.37c90cp-14,0x1.b3b99p-14,0x1.438694p-10,0x1.1d301ep-8,
+0x1.58b8cep-7,-0x1.3e73aap-9,-0x1.591ebp-8,-0x1.8e6a7ap-8,-0x1.6d58c2p-8,
+-0x1.1c708p-8,-0x1.750836p-9,-0x1.7ac562p-10,-0x1.8616a2p-12,0x1.0b717ep-12,
+0x1.c982d8p-12,0x1.2f66fp-12,0x1.9d869cp-15,0x1.20f452p-14,0x1.ad18e6p-11,
+0x1.7a3fd2p-9,0x1.c935c8p-8,-0x1.b209bcp-12,-0x1.d662b8p-11,-0x1.0f8358p-10,
+-0x1.f1f43ap-11,-0x1.83ae32p-11,-0x1.fc6dccp-12,-0x1.02201cp-12,-0x1.09d688p-14,
+0x1.6c83eep-15,0x1.37c90cp-14,0x1.9d869cp-15,0x1.19cf68p-17,0x1.89d588p-17,
+0x1.246bfep-13,0x1.01c518p-11,0x1.37948ap-10,-0x1.2f4996p-11,-0x1.48af84p-10,
+-0x1.7b7198p-10,-0x1.5bf3p-10,-0x1.0ee50cp-10,-0x1.6344c6p-11,-0x1.68bbfcp-12,
+-0x1.738344p-14,0x1.fd6a76p-15,0x1.b3b99p-14,0x1.20f452p-14,0x1.89d588p-17,
+0x1.1331d4p-16,0x1.98aap-13,0x1.683cc8p-11,0x1.b3702ep-10,-0x1.c261c2p-8,
+-0x1.e8192p-7,-0x1.19bcaap-6,-0x1.025a3p-6,-0x1.924758p-7,-0x1.07c978p-7,
+-0x1.0bd86p-8,-0x1.13d926p-10,0x1.7a3dc4p-11,0x1.438694p-10,0x1.ad18e6p-11,
+0x1.246bfep-13,0x1.98aap-13,0x1.2f6edcp-9,0x1.0b79eep-7,0x1.435018p-6,
+-0x1.8d02fep-6,-0x1.ae4232p-5,-0x1.f0b3dp-5,-0x1.c779a8p-5,-0x1.629bd6p-5,
+-0x1.d10e78p-6,-0x1.d83614p-7,-0x1.e6520ep-9,0x1.4d6b76p-9,0x1.1d301ep-8,
+0x1.7a3fd2p-9,0x1.01c518p-11,0x1.683cc8p-11,0x1.0b79eep-7,0x1.d78f9p-6,
+0x1.1d0016p-4,-0x1.dfe3a2p-5,-0x1.0409cap-3,-0x1.2c32p-3,-0x1.134752p-3,
+-0x1.aca26cp-4,-0x1.1911bep-4,-0x1.1d64bap-5,-0x1.25ebb8p-7,0x1.9305bp-8,
+0x1.58b8cep-7,0x1.c935c8p-8,0x1.37948ap-10,0x1.b3702ep-10,0x1.435018p-6,
+0x1.1d0016p-4,0x1.587ecp-3,0x1.bb5184p-7,0x1.e07176p-6,0x1.155186p-5,
+0x1.fc99dep-6,0x1.8bf83cp-6,0x1.03a664p-6,0x1.07a502p-7,0x1.0f85a6p-9,
+-0x1.744f2cp-10,-0x1.3e73aap-9,-0x1.a65e1ep-10,-0x1.1fd5f2p-12,-0x1.924142p-12,
+-0x1.2aac9ep-8,-0x1.07480cp-6,-0x1.3e3e08p-5,0x1.e07176p-6,0x1.0456a6p-4,
+0x1.2c8abap-4,0x1.1398aep-4,0x1.ad211cp-5,0x1.1964dp-5,0x1.1db912p-6,
+0x1.264296p-8,-0x1.937ccep-9,-0x1.591eb2p-8,-0x1.c9bceap-9,-0x1.37f0ap-11,
+-0x1.b3f0ep-11,-0x1.43afa6p-7,-0x1.1d5452p-5,-0x1.58e49p-4,0x1.155186p-5,
+0x1.2c8abap-4,0x1.5af43p-4,0x1.3e27f6p-4,0x1.ef6616p-5,0x1.44d948p-5,
+0x1.49d8bp-6,0x1.53b3b4p-8,-0x1.d1cc1p-9,-0x1.8e6a7ap-8,-0x1.083672p-8,
+-0x1.681cbp-11,-0x1.f7432p-11,-0x1.75ac16p-7,-0x1.496462p-5,-0x1.8e275ep-4,
+0x1.fc99dep-6,0x1.1398aep-4,0x1.3e27f6p-4,0x1.23bfa2p-4,0x1.c6479ep-5,
+0x1.29e2cp-5,0x1.2e77f6p-6,0x1.37819p-8,-0x1.ab229ap-9,-0x1.6d58c2p-8,
+-0x1.e490acp-9,-0x1.4a38dep-11,-0x1.cd7d96p-11,-0x1.56a82p-7,-0x1.2e0d4ep-5,
+-0x1.6d1b38p-4,0x1.8bf83cp-6,0x1.ad211cp-5,0x1.ef6616p-5,0x1.c6479ep-5,
+0x1.61ad92p-5,0x1.cfd6p-6,0x1.d6f8ccp-7,0x1.e50b4ap-9,-0x1.4c8b7p-9,
+-0x1.1c7082p-8,-0x1.7941aep-9,-0x1.0117e6p-11,-0x1.674abep-11,-0x1.0ac638p-7,
+-0x1.d652bap-6,-0x1.1c409ap-4,0x1.03a664p-6,0x1.1964dp-5,0x1.44d948p-5,
+0x1.29e2cp-5,0x1.cfd6p-6,0x1.3026ecp-6,0x1.34d4dp-7,0x1.3e0f16p-9,
+-0x1.b41eccp-10,-0x1.750836p-9,-0x1.eec222p-10,-0x1.512b2cp-12,-0x1.d732cap-12,
+-0x1.5ddd66p-8,-0x1.3467eap-6,-0x1.74c962p-5,0x1.07a502p-7,0x1.1db912p-6,
+0x1.49d8bp-6,0x1.2e77f6p-6,0x1.d6f8ccp-7,0x1.34d4dp-7,0x1.39952p-8,
+0x1.42f3cp-10,-0x1.bad47p-11,-0x1.7ac562p-10,-0x1.f65eb8p-11,-0x1.565b18p-13,
+-0x1.de7296p-13,-0x1.633f52p-9,-0x1.39268ep-7,-0x1.7a8598p-6,0x1.0f85a6p-9,
+0x1.264296p-8,0x1.53b3b4p-8,0x1.37819p-8,0x1.e50b4ap-9,0x1.3e0f16p-9,
+0x1.42f3cp-10,0x1.4c9a08p-12,-0x1.c80faep-13,-0x1.8616a2p-12,-0x1.02b0b2p-12,
+-0x1.6095cep-15,-0x1.ecbe46p-15,-0x1.6ddca4p-11,-0x1.4281dep-9,-0x1.85d4fp-8,
+-0x1.744f2cp-10,-0x1.937ccep-9,-0x1.d1cc1p-9,-0x1.ab229ap-9,-0x1.4c8b7p-9,
+-0x1.b41eccp-10,-0x1.bad47p-11,-0x1.c80faep-13,0x1.38ac92p-13,0x1.0b717ep-12,
+0x1.62b6dep-13,0x1.e37664p-16,0x1.51d2bap-15,0x1.f5aadap-12,0x1.ba384ap-10,
+0x1.0b4472p-8,-0x1.3e73aap-9,-0x1.591eb2p-8,-0x1.8e6a7ap-8,-0x1.6d58c2p-8,
+-0x1.1c7082p-8,-0x1.750836p-9,-0x1.7ac562p-10,-0x1.8616a2p-12,0x1.0b717ep-12,
+0x1.c982d8p-12,0x1.2f66fp-12,0x1.9d869cp-15,0x1.20f452p-14,0x1.ad18e6p-11,
+0x1.7a3fd2p-9,0x1.c935c8p-8,-0x1.a65e1ep-10,-0x1.c9bceap-9,-0x1.083672p-8,
+-0x1.e490acp-9,-0x1.7941aep-9,-0x1.eec222p-10,-0x1.f65eb8p-11,-0x1.02b0b2p-12,
+0x1.62b6dep-13,0x1.2f66fp-12,0x1.92683p-13,0x1.123bap-15,0x1.7f3ea8p-15,
+0x1.1c8f2ap-11,0x1.f5ad94p-10,0x1.2f33d6p-8,-0x1.1fd5f2p-12,-0x1.37f0ap-11,
+-0x1.681cbp-11,-0x1.4a38dep-11,-0x1.0117e6p-11,-0x1.512b2cp-12,-0x1.565b18p-13,
+-0x1.6095cep-15,0x1.e37664p-16,0x1.9d869cp-15,0x1.123bap-15,0x1.75c4fp-18,
+0x1.052c98p-17,0x1.83d7fcp-14,0x1.55e26p-12,0x1.9d40f6p-11,-0x1.924142p-12,
+-0x1.b3f0ep-11,-0x1.f7432p-11,-0x1.cd7d96p-11,-0x1.674abep-11,-0x1.d732cap-12,
+-0x1.de7296p-13,-0x1.ecbe46p-15,0x1.51d2bap-15,0x1.20f452p-14,0x1.7f3ea8p-15,
+0x1.052c98p-17,0x1.6cfeb8p-17,0x1.0f024p-13,0x1.ddc9e2p-12,0x1.20c3a8p-10,
+-0x1.2aac9ep-8,-0x1.43afa6p-7,-0x1.75ac16p-7,-0x1.56a82p-7,-0x1.0ac638p-7,
+-0x1.5ddd66p-8,-0x1.633f52p-9,-0x1.6ddca4p-11,0x1.f5aadap-12,0x1.ad18e6p-11,
+0x1.1c8f2ap-11,0x1.83d7fcp-14,0x1.0f024p-13,0x1.9272b4p-10,0x1.62c20ep-8,
+0x1.acd0ap-7,-0x1.07480cp-6,-0x1.1d5452p-5,-0x1.496462p-5,-0x1.2e0d4ep-5,
+-0x1.d652bap-6,-0x1.3467eap-6,-0x1.39268ep-7,-0x1.4281dep-9,0x1.ba384ap-10,
+0x1.7a3fd2p-9,0x1.f5ad94p-10,0x1.55e26p-12,0x1.ddc9e2p-12,0x1.62c20ep-8,
+0x1.38b822p-6,0x1.7a001ep-5,-0x1.3e3e08p-5,-0x1.58e49p-4,-0x1.8e275ep-4,
+-0x1.6d1b38p-4,-0x1.1c409ap-4,-0x1.74c962p-5,-0x1.7a8598p-6,-0x1.85d4fp-8,
+0x1.0b4472p-8,0x1.c935c8p-8,0x1.2f33d6p-8,0x1.9d40f6p-11,0x1.20c3a8p-10,
+0x1.acd0ap-7,0x1.7a001ep-5,0x1.c8e8c8p-4,0x1.2e1dp-9,0x1.4769c4p-8,
+0x1.79f98ap-8,0x1.5a9a2ap-8,0x1.0dd894p-8,0x1.61e4aep-9,0x1.675678p-10,
+0x1.721314p-12,-0x1.fb7198p-13,-0x1.b209bcp-12,-0x1.1fd5f2p-12,-0x1.884f38p-15,
+-0x1.122118p-14,-0x1.9714fep-11,-0x1.66d7c4p-9,-0x1.b1c0a2p-8,0x1.4769c4p-8,
+0x1.62d4e8p-7,0x1.99a0a2p-7,0x1.77a0bp-7,0x1.247196p-7,0x1.7f8782p-8,
+0x1.856e06p-9,0x1.9110ccp-11,-0x1.12f822p-11,-0x1.d662bap-11,-0x1.37f0ap-11,
+-0x1.a9299ep-14,-0x1.2915eep-13,-0x1.b92c16p-10,-0x1.84e4b4p-8,-0x1.d6137ep-7,
+0x1.79f98ap-8,0x1.99a0a2p-7,0x1.d8e2ap-7,0x1.b1a28ep-7,0x1.519ae6p-7,
+0x1.bac1cp-8,0x1.c19188p-9,0x1.cf005p-11,-0x1.3d6eap-11,-0x1.0f8358p-10,
+-0x1.681cb2p-11,-0x1.ead1c4p-14,-0x1.56f6cp-13,-0x1.fd4d26p-10,-0x1.c0f302p-8,
+-0x1.0f559ep-6,0x1.5a9a2ap-8,0x1.77a0bp-7,0x1.b1a28ep-7,0x1.8da47ap-7,
+0x1.35955p-7,0x1.9601dap-8,0x1.9c40e6p-9,0x1.a8924p-11,-0x1.2315aep-11,
+-0x1.f1f43cp-11,-0x1.4a38dep-11,-0x1.c2149ep-14,-0x1.3a7f4cp-13,-0x1.d30748p-10,
+-0x1.9baf88p-8,-0x1.f1a05cp-7,0x1.0dd894p-8,0x1.247196p-7,0x1.519ae6p-7,
+0x1.35955p-7,0x1.e20cdp-8,0x1.3c187ap-8,0x1.40f568p-9,0x1.4a8c7p-11,
+-0x1.c53efep-12,-0x1.83ae34p-11,-0x1.0117e6p-11,-0x1.5e68a2p-14,-0x1.e9b39ep-14,
+-0x1.6b9a7cp-10,-0x1.40843ap-8,-0x1.836ce8p-7,0x1.61e4aep-9,0x1.7f8782p-8,
+0x1.bac1cp-8,0x1.9601dap-8,0x1.3c187ap-8,0x1.9e8c46p-9,0x1.a4ecf4p-10,
+0x1.b180a6p-12,-0x1.29353ap-12,-0x1.fc6dccp-12,-0x1.512b2cp-12,-0x1.cb8c62p-15,
+-0x1.411cecp-14,-0x1.dcda52p-11,-0x1.a45888p-9,-0x1.fc182cp-8,0x1.675678p-10,
+0x1.856e06p-9,0x1.c19188p-9,0x1.9c40e6p-9,0x1.40f568p-9,0x1.a4ecf4p-10,
+0x1.ab66cp-11,0x1.b82bfcp-13,-0x1.2dc7c4p-13,-0x1.02201cp-12,-0x1.565b18p-13,
+-0x1.d29e4cp-16,-0x1.460d9ep-15,-0x1.e43062p-12,-0x1.aad00cp-10,-0x1.01f4a4p-8,
+0x1.721314p-12,0x1.9110ccp-11,0x1.cf005p-11,0x1.a8924p-11,0x1.4a8c7p-11,
+0x1.b180a6p-12,0x1.b82bfcp-13,0x1.c552e4p-15,-0x1.36cc1cp-15,-0x1.09d688p-14,
+-0x1.6095cep-15,-0x1.e08f8p-18,-0x1.4fcbap-17,-0x1.f2a7fap-14,-0x1.b790c6p-12,
+-0x1.09a9c4p-10,-0x1.fb7198p-13,-0x1.12f822p-11,-0x1.3d6eap-11,-0x1.2315aep-11,
+-0x1.c53efep-12,-0x1.29353ap-12,-0x1.2dc7c4p-13,-0x1.36cc1cp-15,0x1.aa29c8p-16,
+0x1.6c83eep-15,0x1.e37664p-16,0x1.49788p-18,0x1.cc70cp-18,0x1.55e086p-14,
+0x1.2d5d5ap-12,0x1.6c4688p-11,-0x1.b209bcp-12,-0x1.d662bap-11,-0x1.0f8358p-10,
+-0x1.f1f43cp-11,-0x1.83ae34p-11,-0x1.fc6dccp-12,-0x1.02201cp-12,-0x1.09d688p-14,
+0x1.6c83eep-15,0x1.37c90cp-14,0x1.9d869cp-15,0x1.19cf68p-17,0x1.89d588p-17,
+0x1.246bfep-13,0x1.01c518p-11,0x1.379488p-10,-0x1.1fd5f2p-12,-0x1.37f0ap-11,
+-0x1.681cb2p-11,-0x1.4a38dep-11,-0x1.0117e6p-11,-0x1.512b2cp-12,-0x1.565b18p-13,
+-0x1.6095cep-15,0x1.e37664p-16,0x1.9d869cp-15,0x1.123bap-15,0x1.75c4fp-18,
+0x1.052c98p-17,0x1.83d7fcp-14,0x1.55e26p-12,0x1.9d40f6p-11,-0x1.884f38p-15,
+-0x1.a9299ep-14,-0x1.ead1c4p-14,-0x1.c2149ep-14,-0x1.5e68a2p-14,-0x1.cb8c62p-15,
+-0x1.d29e4cp-16,-0x1.e08f8p-18,0x1.49788p-18,0x1.19cf68p-17,0x1.75c4fp-18,
+0x1.fd6f08p-21,0x1.63f884p-20,0x1.084eecp-16,0x1.d1f9c2p-15,0x1.199ff2p-13,
+-0x1.122118p-14,-0x1.2915eep-13,-0x1.56f6cp-13,-0x1.3a7f4cp-13,-0x1.e9b39ep-14,
+-0x1.411cecp-14,-0x1.460d9ep-15,-0x1.4fcbap-17,0x1.cc70cp-18,0x1.89d588p-17,
+0x1.052c98p-17,0x1.63f884p-20,0x1.f17984p-20,0x1.715ffcp-16,0x1.459aa6p-14,
+0x1.899334p-13,-0x1.9714fep-11,-0x1.b92c16p-10,-0x1.fd4d26p-10,-0x1.d30748p-10,
+-0x1.6b9a7cp-10,-0x1.dcda52p-11,-0x1.e43062p-12,-0x1.f2a7fap-14,0x1.55e086p-14,
+0x1.246bfep-13,0x1.83d7fcp-14,0x1.084eecp-16,0x1.715ffcp-16,0x1.1242cap-12,
+0x1.e385a4p-11,0x1.243abcp-9,-0x1.66d7c4p-9,-0x1.84e4b4p-8,-0x1.c0f302p-8,
+-0x1.9baf88p-8,-0x1.40843ap-8,-0x1.a45888p-9,-0x1.aad00cp-10,-0x1.b790c6p-12,
+0x1.2d5d5ap-12,0x1.01c518p-11,0x1.55e26p-12,0x1.d1f9c2p-15,0x1.459aa6p-14,
+0x1.e385a4p-11,0x1.aa398cp-9,0x1.0199aep-7,-0x1.b1c0a2p-8,-0x1.d6137ep-7,
+-0x1.0f559ep-6,-0x1.f1a05cp-7,-0x1.836ce8p-7,-0x1.fc182cp-8,-0x1.01f4a4p-8,
+-0x1.09a9c4p-10,0x1.6c4688p-11,0x1.379488p-10,0x1.9d40f6p-11,0x1.199ff2p-13,
+0x1.899334p-13,0x1.243abcp-9,0x1.0199aep-7,0x1.37601p-6,0x1.a6354p-9,
+0x1.c990ap-8,0x1.081cep-7,0x1.e461c8p-8,0x1.791d2ep-8,0x1.ee9244p-9,
+0x1.f62e1cp-10,0x1.0297aap-11,-0x1.62948cp-12,-0x1.2f4996p-11,-0x1.924142p-12,
+-0x1.122118p-14,-0x1.7f1994p-14,-0x1.1c73a2p-10,-0x1.f57d0ap-9,-0x1.2f168p-7,
+0x1.c990ap-8,0x1.efe1fep-7,0x1.1e3afap-6,0x1.067908p-6,0x1.98b1d2p-7,
+0x1.0bfe7cp-7,0x1.101df8p-8,0x1.183f6ap-10,-0x1.80461ap-11,-0x1.48af84p-10,
+-0x1.b3f0ep-11,-0x1.2915eep-13,-0x1.9f2e8cp-13,-0x1.3445c2p-9,-0x1.0fbe06p-7,
+-0x1.487828p-6,0x1.081cep-7,0x1.1e3afap-6,0x1.4a6ea8p-6,0x1.2f017cp-6,
+0x1.d7cefp-7,0x1.356138p-7,0x1.3a23b4p-8,0x1.438694p-10,-0x1.bb9dc6p-11,
+-0x1.7b7198p-10,-0x1.f74322p-11,-0x1.56f6cp-13,-0x1.df4c1ep-13,-0x1.63e0d8p-9,
+-0x1.39b4eep-7,-0x1.7b31bp-6,0x1.e461c8p-8,0x1.067908p-6,0x1.2f017cp-6,
+0x1.15db14p-6,0x1.b0a5bcp-7,0x1.1bb362p-7,0x1.2010bap-8,0x1.28ac28p-10,
+-0x1.96cb9ep-11,-0x1.5bf302p-10,-0x1.cd7d96p-11,-0x1.3a7f4cp-13,-0x1.b783cap-13,
+-0x1.4656fap-9,-0x1.1fab26p-7,-0x1.5bb866p-6,0x1.791d2ep-8,0x1.98b1d2p-7,
+0x1.d7cefp-7,0x1.b0a5bcp-7,0x1.50d612p-7,0x1.b9bf9ep-8,0x1.c08b6ep-9,
+0x1.cdf26p-11,-0x1.3cb58ep-11,-0x1.0ee50ep-10,-0x1.674abep-11,-0x1.e9b39ep-14,
+-0x1.562eccp-13,-0x1.fc2438p-10,-0x1.bfed44p-8,-0x1.0eb76ep-6,0x1.ee9244p-9,
+0x1.0bfe7cp-7,0x1.356138p-7,0x1.1bb362p-7,0x1.b9bf9ep-8,0x1.21ab2ap-8,
+0x1.262002p-9,0x1.2ee9ccp-11,-0x1.9f5a48p-12,-0x1.6344c6p-11,-0x1.d732cap-12,
+-0x1.411cecp-14,-0x1.c0c2a8p-14,-0x1.4d346p-10,-0x1.25b84cp-8,-0x1.6308fp-7,
+0x1.f62e1cp-10,0x1.101df8p-8,0x1.3a23b4p-8,0x1.2010bap-8,0x1.c08b6ep-9,
+0x1.262002p-9,0x1.2aa668p-10,0x1.3392cep-12,-0x1.a5be22p-13,-0x1.68bbfcp-12,
+-0x1.de7296p-13,-0x1.460d9ep-15,-0x1.c7aa16p-15,-0x1.5254bp-11,-0x1.2a3d1ap-9,
+-0x1.687f3ap-8,0x1.0297aap-11,0x1.183f6ap-10,0x1.438694p-10,0x1.28ac28p-10,
+0x1.cdf26p-11,0x1.2ee9ccp-11,0x1.3392cep-12,0x1.3cc376p-14,-0x1.b25814p-15,
+-0x1.738344p-14,-0x1.ecbe46p-15,-0x1.4fcbap-17,-0x1.d5478p-17,-0x1.5c709cp-13,
+-0x1.33265ap-11,-0x1.7344b4p-10,-0x1.62948cp-12,-0x1.80461ap-11,-0x1.bb9dc6p-11,
+-0x1.96cb9ep-11,-0x1.3cb58ep-11,-0x1.9f5a48p-12,-0x1.a5be22p-13,-0x1.b25814p-15,
+0x1.29c8ecp-15,0x1.fd6a76p-15,0x1.51d2bap-15,0x1.cc70cp-18,0x1.41bc8p-17,
+0x1.ddc74ap-14,0x1.a5296cp-12,0x1.fd14a8p-11,-0x1.2f4996p-11,-0x1.48af84p-10,
+-0x1.7b7198p-10,-0x1.5bf302p-10,-0x1.0ee50ep-10,-0x1.6344c6p-11,-0x1.68bbfcp-12,
+-0x1.738344p-14,0x1.fd6a76p-15,0x1.b3b99p-14,0x1.20f452p-14,0x1.89d588p-17,
+0x1.1331d4p-16,0x1.98aap-13,0x1.683cc8p-11,0x1.b3702cp-10,-0x1.924142p-12,
+-0x1.b3f0ep-11,-0x1.f74322p-11,-0x1.cd7d96p-11,-0x1.674abep-11,-0x1.d732cap-12,
+-0x1.de7296p-13,-0x1.ecbe46p-15,0x1.51d2bap-15,0x1.20f452p-14,0x1.7f3ea8p-15,
+0x1.052c98p-17,0x1.6cfeb8p-17,0x1.0f024p-13,0x1.ddc9e2p-12,0x1.20c3a6p-10,
+-0x1.122118p-14,-0x1.2915eep-13,-0x1.56f6cp-13,-0x1.3a7f4cp-13,-0x1.e9b39ep-14,
+-0x1.411cecp-14,-0x1.460d9ep-15,-0x1.4fcbap-17,0x1.cc70cp-18,0x1.89d588p-17,
+0x1.052c98p-17,0x1.63f884p-20,0x1.f17984p-20,0x1.715ffcp-16,0x1.459aa6p-14,
+0x1.899334p-13,-0x1.7f1994p-14,-0x1.9f2e8cp-13,-0x1.df4c1ep-13,-0x1.b783cap-13,
+-0x1.562eccp-13,-0x1.c0c2a8p-14,-0x1.c7aa16p-15,-0x1.d5478p-17,0x1.41bc8p-17,
+0x1.1331d4p-16,0x1.6cfeb8p-17,0x1.f17984p-20,0x1.5b9d42p-19,0x1.021a86p-15,
+0x1.c7096ap-14,0x1.13037cp-12,-0x1.1c73a2p-10,-0x1.3445c2p-9,-0x1.63e0d8p-9,
+-0x1.4656fap-9,-0x1.fc2438p-10,-0x1.4d346p-10,-0x1.5254bp-11,-0x1.5c709cp-13,
+0x1.ddc74ap-14,0x1.98aap-13,0x1.0f024p-13,0x1.715ffcp-16,0x1.021a86p-15,
+0x1.7f48acp-12,0x1.51dd62p-10,0x1.98652ap-9,-0x1.f57d0ap-9,-0x1.0fbe06p-7,
+-0x1.39b4eep-7,-0x1.1fab26p-7,-0x1.bfed44p-8,-0x1.25b84cp-8,-0x1.2a3d1ap-9,
+-0x1.33265ap-11,0x1.a5296cp-12,0x1.683cc8p-11,0x1.ddc9e2p-12,0x1.459aa6p-14,
+0x1.c7096ap-14,0x1.51dd62p-10,0x1.29d3fp-8,0x1.68001cp-7,-0x1.2f168p-7,
+-0x1.487828p-6,-0x1.7b31bp-6,-0x1.5bb866p-6,-0x1.0eb76ep-6,-0x1.6308fp-7,
+-0x1.687f3ap-8,-0x1.7344b4p-10,0x1.fd14a8p-11,0x1.b3702cp-10,0x1.20c3a6p-10,
+0x1.899334p-13,0x1.13037cp-12,0x1.98652ap-9,0x1.68001cp-7,0x1.b326d8p-6,
+0x1.397d4ep-5,0x1.53bdf2p-4,0x1.88352p-4,0x1.67a752p-4,0x1.1801d2p-4,
+0x1.6f381ep-5,0x1.74de66p-6,0x1.80028p-8,-0x1.07469ep-8,-0x1.c261cp-8,
+-0x1.2aac9cp-8,-0x1.9714fcp-11,-0x1.1c73a2p-10,-0x1.a66928p-7,-0x1.745aecp-5,
+-0x1.c215e6p-4,0x1.53bdf2p-4,0x1.703166p-3,0x1.a90d58p-3,0x1.85c5a6p-3,
+0x1.2f74acp-3,0x1.8df8a2p-4,0x1.941808p-5,0x1.a02af8p-7,-0x1.1d52c6p-7,
+-0x1.e8192p-7,-0x1.43afa6p-7,-0x1.b92c16p-10,-0x1.3445c2p-9,-0x1.c9c8ep-6,
+-0x1.93898ap-4,-0x1.e7c6e8p-3,0x1.88352p-4,0x1.a90d58p-3,0x1.eab12p-3,
+0x1.c1f6bp-3,0x1.5e5154p-3,0x1.cb6ddp-4,0x1.d27f42p-5,0x1.e06f86p-7,
+-0x1.496296p-7,-0x1.19bcaap-6,-0x1.75ac16p-7,-0x1.fd4d26p-10,-0x1.63e0d6p-9,
+-0x1.083d58p-5,-0x1.d1dac4p-4,-0x1.198d36p-2,0x1.67a752p-4,0x1.85c5a6p-3,
+0x1.c1f6bp-3,0x1.9c9da6p-3,0x1.413d9ep-3,0x1.a54baap-4,0x1.abc6eap-5,
+0x1.b88f04p-7,-0x1.2e0baap-7,-0x1.025a32p-6,-0x1.56a822p-7,-0x1.d30748p-10,
+-0x1.4656fap-9,-0x1.e49d52p-6,-0x1.ab3014p-4,-0x1.022eaep-2,0x1.1801d2p-4,
+0x1.2f74acp-3,0x1.5e5154p-3,0x1.413d9ep-3,0x1.f433a8p-4,0x1.47ff8ep-4,
+0x1.4d0b5ep-5,0x1.56fed8p-7,-0x1.d6502cp-8,-0x1.924758p-7,-0x1.0ac638p-7,
+-0x1.6b9a7cp-10,-0x1.fc2438p-10,-0x1.794b88p-6,-0x1.4c95eep-4,-0x1.920396p-3,
+0x1.6f381ep-5,0x1.8df8a2p-4,0x1.cb6ddp-4,0x1.a54baap-4,0x1.47ff8ep-4,
+0x1.ae286ap-5,0x1.b4c692p-6,0x1.c1d382p-8,-0x1.34663cp-8,-0x1.07c976p-7,
+-0x1.5ddd64p-8,-0x1.dcda5p-11,-0x1.4d346p-10,-0x1.eecf1p-7,-0x1.b42c9p-5,
+-0x1.079d0ap-3,0x1.74de66p-6,0x1.941808p-5,0x1.d27f42p-5,0x1.abc6eap-5,
+0x1.4d0b5ep-5,0x1.b4c692p-6,0x1.bb7eccp-7,0x1.c8bf22p-9,-0x1.3924dap-9,
+-0x1.0bd86p-8,-0x1.633f52p-9,-0x1.e43062p-12,-0x1.5254bp-11,-0x1.f66bd8p-8,
+-0x1.bae26ap-6,-0x1.0bab44p-4,0x1.80028p-8,0x1.a02af8p-7,0x1.e06f86p-7,
+0x1.b88f04p-7,0x1.56fed8p-7,0x1.c1d382p-8,0x1.c8bf22p-9,0x1.d664d2p-11,
+-0x1.42801ep-11,-0x1.13d926p-10,-0x1.6ddca4p-11,-0x1.f2a7fap-14,-0x1.5c709cp-13,
+-0x1.02b774p-9,-0x1.c81e12p-8,-0x1.13aabp-6,-0x1.07469ep-8,-0x1.1d52c6p-7,
+-0x1.496296p-7,-0x1.2e0baap-7,-0x1.d6502cp-8,-0x1.34663cp-8,-0x1.3924dap-9,
+-0x1.42801ep-11,0x1.ba35e4p-12,0x1.7a3dc4p-11,0x1.f5aadap-12,0x1.55e086p-14,
+0x1.ddc74ap-14,0x1.62c022p-10,0x1.38b67p-8,0x1.79fe1p-7,-0x1.c261cp-8,
+-0x1.e8192p-7,-0x1.19bcaap-6,-0x1.025a32p-6,-0x1.924758p-7,-0x1.07c976p-7,
+-0x1.0bd86p-8,-0x1.13d926p-10,0x1.7a3dc4p-11,0x1.438694p-10,0x1.ad18e6p-11,
+0x1.246bfep-13,0x1.98aap-13,0x1.2f6edcp-9,0x1.0b79eep-7,0x1.435016p-6,
+-0x1.2aac9cp-8,-0x1.43afa6p-7,-0x1.75ac16p-7,-0x1.56a822p-7,-0x1.0ac638p-7,
+-0x1.5ddd64p-8,-0x1.633f52p-9,-0x1.6ddca4p-11,0x1.f5aadap-12,0x1.ad18e6p-11,
+0x1.1c8f2ap-11,0x1.83d7fcp-14,0x1.0f024p-13,0x1.9272b4p-10,0x1.62c20ep-8,
+0x1.acd0ap-7,-0x1.9714fcp-11,-0x1.b92c16p-10,-0x1.fd4d26p-10,-0x1.d30748p-10,
+-0x1.6b9a7cp-10,-0x1.dcda5p-11,-0x1.e43062p-12,-0x1.f2a7fap-14,0x1.55e086p-14,
+0x1.246bfep-13,0x1.83d7fcp-14,0x1.084eecp-16,0x1.715ffcp-16,0x1.1242cap-12,
+0x1.e385a6p-11,0x1.243abep-9,-0x1.1c73a2p-10,-0x1.3445c2p-9,-0x1.63e0d6p-9,
+-0x1.4656fap-9,-0x1.fc2438p-10,-0x1.4d346p-10,-0x1.5254bp-11,-0x1.5c709cp-13,
+0x1.ddc74ap-14,0x1.98aap-13,0x1.0f024p-13,0x1.715ffcp-16,0x1.021a86p-15,
+0x1.7f48acp-12,0x1.51dd64p-10,0x1.98652cp-9,-0x1.a66928p-7,-0x1.c9c8ep-6,
+-0x1.083d58p-5,-0x1.e49d52p-6,-0x1.794b88p-6,-0x1.eecf1p-7,-0x1.f66bd8p-8,
+-0x1.02b774p-9,0x1.62c022p-10,0x1.2f6edcp-9,0x1.9272b4p-10,0x1.1242cap-12,
+0x1.7f48acp-12,0x1.1c9698p-8,0x1.f5baacp-7,0x1.2f3bc2p-5,-0x1.745aecp-5,
+-0x1.93898ap-4,-0x1.d1dac4p-4,-0x1.ab3014p-4,-0x1.4c95eep-4,-0x1.b42c9p-5,
+-0x1.bae26ap-6,-0x1.c81e12p-8,0x1.38b67p-8,0x1.0b79eep-7,0x1.62c20ep-8,
+0x1.e385a6p-11,0x1.51dd64p-10,0x1.f5baacp-7,0x1.ba463ep-5,0x1.0b4ce2p-3,
+-0x1.c215e6p-4,-0x1.e7c6e8p-3,-0x1.198d36p-2,-0x1.022eaep-2,-0x1.920396p-3,
+-0x1.079d0ap-3,-0x1.0bab44p-4,-0x1.13aabp-6,0x1.79fe1p-7,0x1.435016p-6,
+0x1.acd0ap-7,0x1.243abep-9,0x1.98652cp-9,0x1.2f3bc2p-5,0x1.0b4ce2p-3,
+0x1.4319a4p-2,0x1.14574cp-3,0x1.2b7b8cp-2,0x1.59bb22p-2,0x1.3d08e2p-2,
+0x1.eda716p-3,0x1.43b42cp-3,0x1.48af12p-4,0x1.528134p-6,-0x1.d027c8p-7,
+-0x1.8d02fcp-6,-0x1.07480cp-6,-0x1.66d7c4p-9,-0x1.f57d0ap-9,-0x1.745aecp-5,
+-0x1.483b2cp-3,-0x1.8cc02p-2,0x1.2b7b8cp-2,0x1.448feap-1,0x1.76aefap-1,
+0x1.57958ap-1,0x1.0b7f0cp-1,0x1.5ecfccp-2,0x1.643574p-3,0x1.6eda2p-5,
+-0x1.f7066ep-6,-0x1.ae4234p-5,-0x1.1d5452p-5,-0x1.84e4b4p-8,-0x1.0fbe06p-7,
+-0x1.93898ap-4,-0x1.63b7dap-2,-0x1.adf9bap-1,0x1.59bb22p-2,0x1.76aefap-1,
+0x1.b08b84p-1,0x1.8ca49cp-1,0x1.34ce1cp-1,0x1.94fc9ap-2,0x1.9b37ap-3,
+0x1.a7810ep-5,-0x1.225a6p-5,-0x1.f0b3dp-5,-0x1.496462p-5,-0x1.c0f302p-8,
+-0x1.39b4eep-7,-0x1.d1dac4p-4,-0x1.9aa6ap-2,-0x1.f06026p-1,0x1.3d08e2p-2,
+0x1.57958ap-1,0x1.8ca49cp-1,0x1.6bb88ep-1,0x1.1b2c7ap-1,0x1.735f42p-2,
+0x1.7915e4p-3,0x1.845a4p-5,-0x1.0a40d4p-5,-0x1.c779a8p-5,-0x1.2e0d5p-5,
+-0x1.9baf88p-8,-0x1.1fab26p-7,-0x1.ab3014p-4,-0x1.7890eep-2,-0x1.c72cf2p-1,
+0x1.eda716p-3,0x1.0b7f0cp-1,0x1.34ce1cp-1,0x1.1b2c7ap-1,0x1.b8ed8ep-2,
+0x1.21216ap-2,0x1.259426p-3,0x1.2e59cp-5,-0x1.9e94c6p-6,-0x1.629bd6p-5,
+-0x1.d652bap-6,-0x1.40843ap-8,-0x1.bfed44p-8,-0x1.4c95eep-4,-0x1.252cap-2,
+-0x1.62601cp-1,0x1.43b42cp-3,0x1.5ecfccp-2,0x1.94fc9ap-2,0x1.735f42p-2,
+0x1.21216ap-2,0x1.7b2f2ap-3,0x1.810492p-4,0x1.8c859ap-6,-0x1.0fdaa6p-6,
+-0x1.d10e78p-6,-0x1.3467eap-6,-0x1.a45888p-9,-0x1.25b84cp-8,-0x1.b42c9p-5,
+-0x1.807ccep-3,-0x1.d0c026p-2,0x1.48af12p-4,0x1.643574p-3,0x1.9b37ap-3,
+0x1.7915e4p-3,0x1.259426p-3,0x1.810492p-4,0x1.86f0f2p-5,0x1.929f4ap-7,
+-0x1.140956p-7,-0x1.d83614p-7,-0x1.39268ep-7,-0x1.aad00cp-10,-0x1.2a3d1ap-9,
+-0x1.bae26ap-6,-0x1.866718p-4,-0x1.d7e68cp-3,0x1.528134p-6,0x1.6eda2p-5,
+0x1.a7810ep-5,0x1.845a4p-5,0x1.2e59cp-5,0x1.8c859ap-6,0x1.929f4ap-7,
+0x1.9ea6fap-9,-0x1.1c48c2p-9,-0x1.e6520ep-9,-0x1.4281dep-9,-0x1.b790c6p-12,
+-0x1.33265ap-11,-0x1.c81e12p-8,-0x1.92115p-6,-0x1.e60028p-5,-0x1.d027c8p-7,
+-0x1.f7066ep-6,-0x1.225a6p-5,-0x1.0a40d4p-5,-0x1.9e94c6p-6,-0x1.0fdaa6p-6,
+-0x1.140956p-7,-0x1.1c48c2p-9,0x1.85cf04p-10,0x1.4d6b76p-9,0x1.ba384ap-10,
+0x1.2d5d5ap-12,0x1.a5296cp-12,0x1.38b67p-8,0x1.13a8p-6,0x1.4d334cp-5,
+-0x1.8d02fcp-6,-0x1.ae4234p-5,-0x1.f0b3dp-5,-0x1.c779a8p-5,-0x1.629bd6p-5,
+-0x1.d10e78p-6,-0x1.d83614p-7,-0x1.e6520ep-9,0x1.4d6b76p-9,0x1.1d301ep-8,
+0x1.7a3fd2p-9,0x1.01c518p-11,0x1.683cc8p-11,0x1.0b79eep-7,0x1.d78f92p-6,
+0x1.1d0016p-4,-0x1.07480cp-6,-0x1.1d5452p-5,-0x1.496462p-5,-0x1.2e0d5p-5,
+-0x1.d652bap-6,-0x1.3467eap-6,-0x1.39268ep-7,-0x1.4281dep-9,0x1.ba384ap-10,
+0x1.7a3fd2p-9,0x1.f5ad94p-10,0x1.55e26p-12,0x1.ddc9e2p-12,0x1.62c20ep-8,
+0x1.38b822p-6,0x1.7a001cp-5,-0x1.66d7c4p-9,-0x1.84e4b4p-8,-0x1.c0f302p-8,
+-0x1.9baf88p-8,-0x1.40843ap-8,-0x1.a45888p-9,-0x1.aad00cp-10,-0x1.b790c6p-12,
+0x1.2d5d5ap-12,0x1.01c518p-11,0x1.55e26p-12,0x1.d1f9c2p-15,0x1.459aa6p-14,
+0x1.e385a6p-11,0x1.aa398cp-9,0x1.0199aep-7,-0x1.f57d0ap-9,-0x1.0fbe06p-7,
+-0x1.39b4eep-7,-0x1.1fab26p-7,-0x1.bfed44p-8,-0x1.25b84cp-8,-0x1.2a3d1ap-9,
+-0x1.33265ap-11,0x1.a5296cp-12,0x1.683cc8p-11,0x1.ddc9e2p-12,0x1.459aa6p-14,
+0x1.c7096ap-14,0x1.51dd64p-10,0x1.29d3fp-8,0x1.68001cp-7,-0x1.745aecp-5,
+-0x1.93898ap-4,-0x1.d1dac4p-4,-0x1.ab3014p-4,-0x1.4c95eep-4,-0x1.b42c9p-5,
+-0x1.bae26ap-6,-0x1.c81e12p-8,0x1.38b67p-8,0x1.0b79eep-7,0x1.62c20ep-8,
+0x1.e385a6p-11,0x1.51dd64p-10,0x1.f5baaep-7,0x1.ba463ep-5,0x1.0b4ce2p-3,
+-0x1.483b2cp-3,-0x1.63b7dap-2,-0x1.9aa6ap-2,-0x1.7890eep-2,-0x1.252cap-2,
+-0x1.807ccep-3,-0x1.866718p-4,-0x1.92115p-6,0x1.13a8p-6,0x1.d78f92p-6,
+0x1.38b822p-6,0x1.aa398cp-9,0x1.29d3fp-8,0x1.ba463ep-5,0x1.85dd6ep-3,
+0x1.d74026p-2,-0x1.8cc02p-2,-0x1.adf9bap-1,-0x1.f06026p-1,-0x1.c72cf2p-1,
+-0x1.62601cp-1,-0x1.d0c026p-2,-0x1.d7e68cp-3,-0x1.e60028p-5,0x1.4d334cp-5,
+0x1.1d0016p-4,0x1.7a001cp-5,0x1.0199aep-7,0x1.68001cp-7,0x1.0b4ce2p-3,
+0x1.d74026p-2,0x1.1cd016p+0,0x1.4e0732p-2,0x1.6a0028p-1,0x1.a1e74ap-1,
+0x1.7f377ep-1,0x1.2a5a26p-1,0x1.87472ep-2,0x1.8d4c36p-3,0x1.992b2ep-5,
+-0x1.188652p-5,-0x1.dfe3a2p-5,-0x1.3e3e08p-5,-0x1.b1c0a2p-8,-0x1.2f168p-7,
+-0x1.c215e6p-4,-0x1.8cc02p-2,-0x1.df92cep-1,0x1.6a0028p-1,0x1.8850cap+0,
+0x1.c4e662p+0,0x1.9f4ef8p+0,0x1.435648p+0,0x1.a80b7ap-1,0x1.ae918ep-2,
+0x1.bb6f02p-4,-0x1.300442p-4,-0x1.0409ccp-3,-0x1.58e49p-4,-0x1.d6137ep-7,
+-0x1.487828p-6,-0x1.e7c6eap-3,-0x1.adf9bcp-1,-0x1.03ddfep+1,0x1.a1e74ap-1,
+0x1.c4e662p+0,0x1.056b8cp+1,0x1.df718cp+0,0x1.7544eap+0,0x1.e9877p-1,
+0x1.f10f6cp-2,0x1.ffe97ap-4,-0x1.5ef718p-4,-0x1.2c3202p-3,-0x1.8e276p-4,
+-0x1.0f559ep-6,-0x1.7b31bp-6,-0x1.198d36p-2,-0x1.f06028p-1,-0x1.2bff7p+1,
+0x1.7f377ep-1,0x1.9f4ef8p+0,0x1.df718cp+0,0x1.b7a61cp+0,0x1.564984p+0,
+0x1.c0e5b4p-1,0x1.c7cdaap-2,0x1.d56c22p-4,-0x1.41d5ap-4,-0x1.134752p-3,
+-0x1.6d1b3ap-4,-0x1.f1a05cp-7,-0x1.5bb866p-6,-0x1.022eaep-2,-0x1.c72cf2p-1,
+-0x1.1318f4p+1,0x1.2a5a26p-1,0x1.435648p+0,0x1.7544eap+0,0x1.564984p+0,
+0x1.0a7c9p+0,0x1.5d7cccp-1,0x1.62dd3ep-2,0x1.6d779ep-4,-0x1.f52058p-5,
+-0x1.aca26ep-4,-0x1.1c4098p-4,-0x1.836ce8p-7,-0x1.0eb76ep-6,-0x1.920398p-3,
+-0x1.62601cp-1,-0x1.ac5a3cp+0,0x1.87472ep-2,0x1.a80b7ap-1,0x1.e9877p-1,
+0x1.c0e5b4p-1,0x1.5d7cccp-1,0x1.ca5718p-2,0x1.d1644p-3,0x1.df4c1p-5,
+-0x1.489ac2p-5,-0x1.1911bep-4,-0x1.74c962p-5,-0x1.fc182cp-8,-0x1.6308fp-7,
+-0x1.079d0ap-3,-0x1.d0c026p-2,-0x1.18e268p+0,0x1.8d4c36p-3,0x1.ae918ep-2,
+0x1.f10f6cp-2,0x1.c7cdaap-2,0x1.62dd3ep-2,0x1.d1644p-3,0x1.d88d2cp-4,
+0x1.e6abc2p-6,-0x1.4da8f6p-6,-0x1.1d64bap-5,-0x1.7a8598p-6,-0x1.01f4a4p-8,
+-0x1.687f3ap-8,-0x1.0bab44p-4,-0x1.d7e68cp-3,-0x1.1d34a8p-1,0x1.992b2ep-5,
+0x1.bb6f02p-4,0x1.ffe97ap-4,0x1.d56c22p-4,0x1.6d779ep-4,0x1.df4c1p-5,
+0x1.e6abc2p-6,0x1.f53658p-8,-0x1.57a126p-8,-0x1.25ebb8p-7,-0x1.85d4fp-8,
+-0x1.09a9c4p-10,-0x1.7344b2p-10,-0x1.13aabp-6,-0x1.e60026p-5,-0x1.25ba38p-3,
+-0x1.188652p-5,-0x1.300442p-4,-0x1.5ef718p-4,-0x1.41d5ap-4,-0x1.f52058p-5,
+-0x1.489ac2p-5,-0x1.4da8f6p-6,-0x1.57a126p-8,0x1.d72eb8p-9,0x1.9305b2p-8,
+0x1.0b4472p-8,0x1.6c468ap-11,0x1.fd14aap-11,0x1.79fe1p-7,0x1.4d334ep-5,
+0x1.92c1dp-4,-0x1.dfe3a2p-5,-0x1.0409ccp-3,-0x1.2c3202p-3,-0x1.134752p-3,
+-0x1.aca26ep-4,-0x1.1911bep-4,-0x1.1d64bap-5,-0x1.25ebb8p-7,0x1.9305b2p-8,
+0x1.58b8cep-7,0x1.c935cap-8,0x1.37948ap-10,0x1.b3702ep-10,0x1.435018p-6,
+0x1.1d0016p-4,0x1.587ebep-3,-0x1.3e3e08p-5,-0x1.58e49p-4,-0x1.8e276p-4,
+-0x1.6d1b3ap-4,-0x1.1c4098p-4,-0x1.74c962p-5,-0x1.7a8598p-6,-0x1.85d4fp-8,
+0x1.0b4472p-8,0x1.c935cap-8,0x1.2f33d6p-8,0x1.9d40f6p-11,0x1.20c3a8p-10,
+0x1.acd0ap-7,0x1.7a001ep-5,0x1.c8e8c6p-4,-0x1.b1c0a2p-8,-0x1.d6137ep-7,
+-0x1.0f559ep-6,-0x1.f1a05cp-7,-0x1.836ce8p-7,-0x1.fc182cp-8,-0x1.01f4a4p-8,
+-0x1.09a9c4p-10,0x1.6c468ap-11,0x1.37948ap-10,0x1.9d40f6p-11,0x1.199ff2p-13,
+0x1.899334p-13,0x1.243abep-9,0x1.0199aep-7,0x1.37601p-6,-0x1.2f168p-7,
+-0x1.487828p-6,-0x1.7b31bp-6,-0x1.5bb866p-6,-0x1.0eb76ep-6,-0x1.6308fp-7,
+-0x1.687f3ap-8,-0x1.7344b2p-10,0x1.fd14aap-11,0x1.b3702ep-10,0x1.20c3a8p-10,
+0x1.899334p-13,0x1.13037cp-12,0x1.98652cp-9,0x1.68001cp-7,0x1.b326d8p-6,
+-0x1.c215e6p-4,-0x1.e7c6eap-3,-0x1.198d36p-2,-0x1.022eaep-2,-0x1.920398p-3,
+-0x1.079d0ap-3,-0x1.0bab44p-4,-0x1.13aabp-6,0x1.79fe1p-7,0x1.435018p-6,
+0x1.acd0ap-7,0x1.243abep-9,0x1.98652cp-9,0x1.2f3bc2p-5,0x1.0b4ce2p-3,
+0x1.4319a4p-2,-0x1.8cc02p-2,-0x1.adf9bcp-1,-0x1.f06028p-1,-0x1.c72cf2p-1,
+-0x1.62601cp-1,-0x1.d0c026p-2,-0x1.d7e68cp-3,-0x1.e60026p-5,0x1.4d334ep-5,
+0x1.1d0016p-4,0x1.7a001ep-5,0x1.0199aep-7,0x1.68001cp-7,0x1.0b4ce2p-3,
+0x1.d74026p-2,0x1.1cd016p+0,-0x1.df92cep-1,-0x1.03ddfep+1,-0x1.2bff7p+1,
+-0x1.1318f4p+1,-0x1.ac5a3cp+0,-0x1.18e268p+0,-0x1.1d34a8p-1,-0x1.25ba38p-3,
+0x1.92c1dp-4,0x1.587ebep-3,0x1.c8e8c6p-4,0x1.37601p-6,0x1.b326d8p-6,
+0x1.4319a4p-2,0x1.1cd016p+0,0x1.5844bap+1,
+}
+#else
+/* C89: decimal floats; may not reproduce exactly */
+{
+-2.19601393e-03,-6.58053160e-03,-1.09550357e-02,-1.53195858e-02,-1.96741819e-02,
+-2.40187645e-02,-2.83534527e-02,-3.26781273e-02,-3.69929075e-02,-4.12977934e-02,
+-4.55927253e-02,-4.98777628e-02,-5.41529655e-02,-5.84182739e-02,-6.26736879e-02,
+-6.69192672e-02,-7.11550117e-02,-7.53809214e-02,-7.95969963e-02,-8.38032961e-02,
+-8.79998207e-02,-9.21865106e-02,-9.63634253e-02,-1.00530565e-01,-1.04687989e-01,
+-1.08835697e-01,-1.12973630e-01,-1.17101848e-01,-1.21220350e-01,-1.25329137e-01,
+-1.29428267e-01,-1.33517742e-01,-1.37597501e-01,-1.41667664e-01,-1.45728171e-01,
+-1.49779022e-01,-1.53820276e-01,-1.57851875e-01,-1.61873937e-01,-1.65886402e-01,
+-1.69889271e-01,-1.73882544e-01,-1.77866280e-01,-1.81840539e-01,-1.85805202e-01,
+-1.89760327e-01,-1.93705976e-01,-1.97642148e-01,-2.01568782e-01,-2.05485940e-01,
+-2.09393680e-01,-2.13291943e-01,-2.17180729e-01,-2.21060097e-01,-2.24930048e-01,
+-2.28790581e-01,-2.32641697e-01,-2.36483455e-01,-2.40315855e-01,-2.44138837e-01,
+-2.47952461e-01,-2.51756728e-01,-2.55551696e-01,-2.59337306e-01,-2.63113618e-01,
+-2.66880631e-01,-2.70638347e-01,-2.74386823e-01,-2.78125942e-01,-2.81855881e-01,
+-2.85576522e-01,-2.89287925e-01,-2.92990088e-01,-2.96683073e-01,-3.00366819e-01,
+-3.04041386e-01,-3.07706773e-01,-3.11362982e-01,-3.15010011e-01,-3.18647861e-01,
+-3.22276652e-01,-3.25896263e-01,-3.29506755e-01,-3.33108127e-01,-3.36700380e-01,
+-3.40283573e-01,-3.43857706e-01,-3.47422719e-01,-3.50978732e-01,-3.54525685e-01,
+-3.58063579e-01,-3.61592472e-01,-3.65112364e-01,-3.68623197e-01,-3.72125089e-01,
+-3.75617981e-01,-3.79101872e-01,-3.82576883e-01,-3.86042893e-01,-3.89499962e-01,
+-3.92948091e-01,-3.96387339e-01,-3.99817646e-01,-4.03239071e-01,-4.06651616e-01,
+-4.10055220e-01,-4.13450062e-01,-4.16835964e-01,-4.20213103e-01,-4.23581362e-01,
+-4.26940799e-01,-4.30291414e-01,-4.33633268e-01,-4.36966300e-01,-4.40290511e-01,
+-4.43606019e-01,-4.46912766e-01,-4.50210720e-01,-4.53499973e-01,-4.56780493e-01,
+-4.60052282e-01,-4.63315368e-01,-4.66569781e-01,-4.69815463e-01,-4.73052502e-01,
+-4.76280868e-01,-4.79500592e-01,-4.82711673e-01,-4.85914111e-01,-4.89107937e-01,
+-4.92293119e-01,-4.95469719e-01,-4.98637736e-01,-5.01797199e-01,-5.04948020e-01,
+-5.08090377e-01,-5.11224091e-01,-5.14349282e-01,-5.17465949e-01,-5.20574152e-01,
+-5.23673773e-01,-5.26764989e-01,-5.29847622e-01,-5.32921851e-01,-5.35987556e-01,
+-5.39044857e-01,-5.42093635e-01,-5.45134068e-01,-5.48166037e-01,-5.51189601e-01,
+-5.54204762e-01,-5.57211518e-01,-5.60209870e-01,-5.63199878e-01,-5.66181540e-01,
+-5.69154859e-01,-5.72119772e-01,-5.75076401e-01,-5.78024685e-01,-5.80964684e-01,
+-5.83896399e-01,-5.86819768e-01,-5.89734912e-01,-5.92641711e-01,-5.95540285e-01,
+-5.98430634e-01,-6.01312757e-01,-6.04186594e-01,-6.07052267e-01,-6.09909713e-01,
+-6.12758934e-01,-6.15599990e-01,-6.18432879e-01,-6.21257603e-01,-6.24074161e-01,
+-6.26882553e-01,-6.29682839e-01,-6.32475019e-01,-6.35259032e-01,-6.38034940e-01,
+-6.40802801e-01,-6.43562555e-01,-6.46314204e-01,-6.49057806e-01,-6.51793361e-01,
+-6.54520869e-01,-6.57240391e-01,-6.59951806e-01,-6.62655234e-01,-6.65350676e-01,
+-6.68038130e-01,-6.70717537e-01,-6.73389018e-01,-6.76052570e-01,-6.78708136e-01,
+-6.81355715e-01,-6.83995426e-01,-6.86627209e-01,-6.89251065e-01,-6.91866994e-01,
+-6.94475055e-01,-6.97075248e-01,-6.99667513e-01,-7.02251971e-01,-7.04828560e-01,
+-7.07397282e-01,-7.09958196e-01,-7.12511301e-01,-7.15056598e-01,-7.17594028e-01,
+-7.20123768e-01,-7.22645640e-01,-7.25159764e-01,-7.27666140e-01,-7.30164766e-01,
+-7.32655644e-01,-7.35138774e-01,-7.37614214e-01,-7.40081906e-01,-7.42541909e-01,
+-7.44994223e-01,-7.47438908e-01,-7.49875844e-01,-7.52305150e-01,-7.54726768e-01,
+-7.57140756e-01,-7.59547174e-01,-7.61945903e-01,-7.64337063e-01,-7.66720593e-01,
+-7.69096553e-01,-7.71464884e-01,-7.73825705e-01,-7.76178896e-01,-7.78524578e-01,
+-7.80862689e-01,-7.83193290e-01,-7.85516381e-01,-7.87831962e-01,-7.90140033e-01,
+-7.92440593e-01,-7.94733644e-01,-7.97019243e-01,-7.99297392e-01,-8.01568091e-01,
+-8.03831339e-01,-8.06087136e-01,-8.08335543e-01,-8.10576499e-01,-8.12810063e-01,
+-8.15036237e-01,-8.17255020e-01,-8.19466412e-01,-8.21670473e-01,-8.23867202e-01,
+-8.26056540e-01,-8.28238547e-01,-8.30413222e-01,-8.32580566e-01,-8.34740639e-01,
+-8.36893380e-01,-8.39038849e-01,-8.41177046e-01,-8.43307972e-01,-8.45431626e-01,
+-8.47548068e-01,-8.49657238e-01,-8.51759195e-01,-8.53853941e-01,-8.55941474e-01,
+-8.58021796e-01,-8.60094905e-01,-8.62160861e-01,-8.64219666e-01,-8.66271257e-01,
+-8.68315756e-01,-8.70353103e-01,-8.72383296e-01,-8.74406338e-01,-8.76422286e-01,
+-8.78431141e-01,-8.80432904e-01,-8.82427633e-01,-8.84415209e-01,-8.86395752e-01,
+-8.88369262e-01,-8.90335679e-01,-8.92295122e-01,-8.94247472e-01,-8.96192849e-01,
+-8.98131192e-01,-9.00062561e-01,-9.01986957e-01,-9.03904319e-01,-9.05814767e-01,
+-9.07718182e-01,-9.09614742e-01,-9.11504328e-01,-9.13386941e-01,-9.15262699e-01,
+-9.17131484e-01,-9.18993413e-01,-9.20848429e-01,-9.22696590e-01,-9.24537838e-01,
+-9.26372230e-01,-9.28199768e-01,-9.30020511e-01,-9.31834340e-01,-9.33641434e-01,
+-9.35441613e-01,-9.37235057e-01,-9.39021707e-01,-9.40801501e-01,-9.42574561e-01,
+-9.44340885e-01,-9.46100414e-01,-9.47853208e-01,-9.49599206e-01,-9.51338530e-01,
+-9.53071117e-01,-9.54796970e-01,-9.56516147e-01,-9.58228648e-01,-9.59934473e-01,
+-9.61633563e-01,-9.63326037e-01,-9.65011835e-01,-9.66690958e-01,-9.68363523e-01,
+-9.70029354e-01,-9.71688628e-01,-9.73341346e-01,-9.74987388e-01,-9.76626873e-01,
+-9.78259802e-01,-9.79886055e-01,-9.81505871e-01,-9.83119071e-01,-9.84725714e-01,
+-9.86325860e-01,-9.87919450e-01,-9.89506543e-01,-9.91087139e-01,-9.92661238e-01,
+-9.94228840e-01,-9.95790005e-01,-9.97344613e-01,-9.98892844e-01,-1.00043452e+00,
+-1.00196981e+00,-1.00349879e+00,-1.00502121e+00,-1.00653720e+00,-1.00804687e+00,
+-1.00955009e+00,-1.01104701e+00,-1.01253748e+00,-1.01402152e+00,-1.01549935e+00,
+-1.01697075e+00,-1.01843584e+00,-1.01989448e+00,-1.02134693e+00,-1.02279305e+00,
+-1.02423286e+00,-1.02566636e+00,-1.02709353e+00,-1.02851450e+00,-1.02992916e+00,
+-1.03133762e+00,-1.03273988e+00,-1.03413582e+00,-1.03552544e+00,-1.03690898e+00,
+-1.03828621e+00,-1.03965735e+00,-1.04102218e+00,-1.04238093e+00,-1.04373348e+00,
+-1.04507983e+00,-1.04641998e+00,-1.04775405e+00,-1.04908204e+00,-1.05040383e+00,
+-1.05171943e+00,-1.05302906e+00,-1.05433249e+00,-1.05562985e+00,-1.05692112e+00,
+-1.05820632e+00,-1.05948544e+00,-1.06075859e+00,-1.06202555e+00,-1.06328666e+00,
+-1.06454158e+00,-1.06579053e+00,-1.06703353e+00,-1.06827044e+00,-1.06950140e+00,
+-1.07072639e+00,-1.07194531e+00,-1.07315826e+00,-1.07436538e+00,-1.07556653e+00,
+-1.07676172e+00,-1.07795095e+00,-1.07913423e+00,-1.08031166e+00,-1.08148313e+00,
+-1.08264875e+00,-1.08380854e+00,-1.08496237e+00,-1.08611035e+00,-1.08725250e+00,
+-1.08838868e+00,-1.08951914e+00,-1.09064376e+00,-1.09176254e+00,-1.09287548e+00,
+-1.09398270e+00,-1.09508407e+00,-1.09617960e+00,-1.09726942e+00,-1.09835339e+00,
+-1.09943175e+00,-1.10050416e+00,-1.10157096e+00,-1.10263205e+00,-1.10368729e+00,
+-1.10473692e+00,-1.10578084e+00,-1.10681891e+00,-1.10785151e+00,-1.10887825e+00,
+-1.10989940e+00,-1.11091495e+00,-1.11192465e+00,-1.11292887e+00,-1.11392736e+00,
+-1.11492038e+00,-1.11590755e+00,-1.11688924e+00,-1.11786532e+00,-1.11883581e+00,
+-1.11980069e+00,-1.12075996e+00,-1.12171376e+00,-1.12266195e+00,-1.12360454e+00,
+-1.12454176e+00,-1.12547326e+00,-1.12639928e+00,-1.12731981e+00,-1.12823486e+00,
+-1.12914443e+00,-1.13004839e+00,-1.13094699e+00,-1.13184011e+00,-1.13272762e+00,
+-1.13360989e+00,-1.13448656e+00,-1.13535786e+00,-1.13622367e+00,-1.13708413e+00,
+-1.13793921e+00,-1.13878882e+00,-1.13963294e+00,-1.14047182e+00,-1.14130533e+00,
+-1.14213347e+00,-1.14295614e+00,-1.14377356e+00,-1.14458561e+00,-1.14539230e+00,
+-1.14619374e+00,-1.14698982e+00,-1.14778054e+00,-1.14856601e+00,-1.14934611e+00,
+-1.15012097e+00,-1.15089059e+00,-1.15165496e+00,-1.15241408e+00,-1.15316796e+00,
+-1.15391660e+00,-1.15465999e+00,-1.15539813e+00,-1.15613103e+00,-1.15685880e+00,
+-1.15758133e+00,-1.15829873e+00,-1.15901089e+00,-1.15971780e+00,-1.16041970e+00,
+-1.16111636e+00,-1.16180789e+00,-1.16249430e+00,-1.16317558e+00,-1.16385174e+00,
+-1.16452277e+00,-1.16518867e+00,-1.16584957e+00,-1.16650534e+00,-1.16715598e+00,
+-1.16780162e+00,-1.16844213e+00,-1.16907763e+00,-1.16970801e+00,-1.17033339e+00,
+-1.17095387e+00,-1.17156923e+00,-1.17217958e+00,-1.17278492e+00,-1.17338526e+00,
+-1.17398059e+00,-1.17457104e+00,-1.17515647e+00,-1.17573690e+00,-1.17631245e+00,
+-1.17688298e+00,-1.17744863e+00,-1.17800927e+00,-1.17856503e+00,-1.17911601e+00,
+-1.17966199e+00,-1.18020296e+00,-1.18073916e+00,-1.18127048e+00,-1.18179703e+00,
+-1.18231857e+00,-1.18283522e+00,-1.18334711e+00,-1.18385422e+00,-1.18435645e+00,
+-1.18485379e+00,-1.18534636e+00,-1.18583417e+00,-1.18631721e+00,-1.18679535e+00,
+-1.18726885e+00,-1.18773746e+00,-1.18820143e+00,-1.18866050e+00,-1.18911493e+00,
+-1.18956459e+00,-1.19000947e+00,-1.19044971e+00,-1.19088519e+00,-1.19131601e+00,
+-1.19174206e+00,-1.19216347e+00,-1.19258022e+00,-1.19299233e+00,-1.19339967e+00,
+-1.19380236e+00,-1.19420052e+00,-1.19459391e+00,-1.19498277e+00,-1.19536698e+00,
+-1.19574654e+00,-1.19612157e+00,-1.19649196e+00,-1.19685769e+00,-1.19721889e+00,
+-1.19757557e+00,-1.19792759e+00,-1.19827509e+00,-1.19861805e+00,-1.19895649e+00,
+-1.19929028e+00,-1.19961965e+00,-1.19994450e+00,-1.20026481e+00,-1.20058072e+00,
+-1.20089197e+00,-1.20119882e+00,-1.20150125e+00,-1.20179915e+00,-1.20209253e+00,
+-1.20238161e+00,-1.20266604e+00,-1.20294619e+00,-1.20322180e+00,-1.20349312e+00,
+-1.20375991e+00,-1.20402241e+00,-1.20428038e+00,-1.20453405e+00,-1.20478332e+00,
+-1.20502818e+00,-1.20526874e+00,-1.20550489e+00,-1.20573664e+00,-1.20596421e+00,
+-1.20618725e+00,-1.20640612e+00,-1.20662057e+00,-1.20683074e+00,-1.20703673e+00,
+-1.20723820e+00,-1.20743561e+00,-1.20762861e+00,-1.20781732e+00,-1.20800185e+00,
+-1.20818210e+00,-1.20835805e+00,-1.20852983e+00,-1.20869732e+00,-1.20886064e+00,
+-1.20901966e+00,-1.20917463e+00,-1.20932531e+00,-1.20947170e+00,-1.20961404e+00,
+-1.20975208e+00,-1.20988607e+00,-1.21001589e+00,-1.21014154e+00,-1.21026301e+00,
+-1.21038032e+00,-1.21049356e+00,-1.21060276e+00,-1.21070766e+00,-1.21080852e+00,
+-1.21090531e+00,-1.21099806e+00,-1.21108675e+00,-1.21117115e+00,-1.21125174e+00,
+-1.21132803e+00,-1.21140051e+00,-1.21146882e+00,-1.21153307e+00,-1.21159339e+00,
+-1.21164954e+00,-1.21170175e+00,-1.21175003e+00,-1.21179414e+00,-1.21183443e+00,
+-1.21187067e+00,-1.21190286e+00,-1.21193123e+00,-1.21195555e+00,-1.21197593e+00,
+-1.21199238e+00,-1.21200490e+00,-1.21201348e+00,-1.21201813e+00,-1.21201885e+00,
+-1.21201563e+00,-1.21200871e+00,-1.21199775e+00,-1.21198285e+00,-1.21196413e+00,
+-1.21194148e+00,-1.21191514e+00,-1.21188486e+00,-1.21185064e+00,-1.21181273e+00,
+-1.21177101e+00,-1.21172523e+00,-1.21167588e+00,-1.21162260e+00,-1.21156549e+00,
+-1.21150470e+00,-1.21144009e+00,-1.21137166e+00,-1.21129954e+00,-1.21122360e+00,
+-1.21114397e+00,-1.21106052e+00,-1.21097326e+00,-1.21088243e+00,-1.21078777e+00,
+-1.21068943e+00,-1.21058738e+00,-1.21048164e+00,-1.21037221e+00,-1.21025896e+00,
+-1.21014225e+00,-1.21002173e+00,-1.20989752e+00,-1.20976973e+00,-1.20963836e+00,
+-1.20950317e+00,-1.20936441e+00,-1.20922208e+00,-1.20907617e+00,-1.20892656e+00,
+-1.20877337e+00,-1.20861650e+00,-1.20845616e+00,-1.20829225e+00,-1.20812464e+00,
+-1.20795345e+00,-1.20777893e+00,-1.20760059e+00,-1.20741892e+00,-1.20723355e+00,
+-1.20704472e+00,-1.20685232e+00,-1.20665646e+00,-1.20645714e+00,-1.20625424e+00,
+-1.20604777e+00,-1.20583797e+00,-1.20562458e+00,-1.20540774e+00,-1.20518744e+00,
+-1.20496368e+00,-1.20473647e+00,-1.20450580e+00,-1.20427179e+00,-1.20403433e+00,
+-1.20379329e+00,-1.20354891e+00,-1.20330119e+00,-1.20305014e+00,-1.20279551e+00,
+-1.20253754e+00,-1.20227623e+00,-1.20201159e+00,-1.20174360e+00,-1.20147216e+00,
+-1.20119739e+00,-1.20091939e+00,-1.20063794e+00,-1.20035315e+00,-1.20006514e+00,
+-1.19977379e+00,-1.19947910e+00,-1.19918108e+00,-1.19887972e+00,-1.19857526e+00,
+-1.19826746e+00,-1.19795632e+00,-1.19764185e+00,-1.19732428e+00,-1.19700336e+00,
+-1.19667935e+00,-1.19635201e+00,-1.19602132e+00,-1.19568753e+00,-1.19535065e+00,
+-1.19501042e+00,-1.19466698e+00,-1.19432044e+00,-1.19397056e+00,-1.19361758e+00,
+-1.19326150e+00,-1.19290221e+00,-1.19253969e+00,-1.19217420e+00,-1.19180536e+00,
+-1.19143343e+00,-1.19105852e+00,-1.19068038e+00,-1.19029915e+00,-1.18991482e+00,
+-1.18952727e+00,-1.18913674e+00,-1.18874311e+00,-1.18834651e+00,-1.18794680e+00,
+-1.18754387e+00,-1.18713808e+00,-1.18672907e+00,-1.18631709e+00,-1.18590212e+00,
+-1.18548393e+00,-1.18506289e+00,-1.18463874e+00,-1.18421173e+00,-1.18378162e+00,
+-1.18334854e+00,-1.18291247e+00,-1.18247342e+00,-1.18203139e+00,-1.18158627e+00,
+-1.18113840e+00,-1.18068743e+00,-1.18023360e+00,-1.17977679e+00,-1.17931700e+00,
+-1.17885447e+00,-1.17838883e+00,-1.17792034e+00,-1.17744899e+00,-1.17697465e+00,
+-1.17649746e+00,-1.17601740e+00,-1.17553449e+00,-1.17504859e+00,-1.17455995e+00,
+-1.17406845e+00,-1.17357397e+00,-1.17307687e+00,-1.17257667e+00,-1.17207384e+00,
+-1.17156816e+00,-1.17105961e+00,-1.17054820e+00,-1.17003417e+00,-1.16951728e+00,
+-1.16899753e+00,-1.16847491e+00,-1.16794968e+00,-1.16742158e+00,-1.16689086e+00,
+-1.16635728e+00,-1.16582096e+00,-1.16528189e+00,-1.16474009e+00,-1.16419554e+00,
+-1.16364837e+00,-1.16309834e+00,-1.16254568e+00,-1.16199040e+00,-1.16143227e+00,
+-1.16087151e+00,-1.16030812e+00,-1.15974212e+00,-1.15917325e+00,-1.15860176e+00,
+-1.15802777e+00,-1.15745103e+00,-1.15687168e+00,-1.15628970e+00,-1.15570498e+00,
+-1.15511775e+00,-1.15452790e+00,-1.15393543e+00,-1.15334034e+00,-1.15274274e+00,
+-1.15214252e+00,-1.15153956e+00,-1.15093422e+00,-1.15032625e+00,-1.14971566e+00,
+-1.14910269e+00,-1.14848697e+00,-1.14786887e+00,-1.14724803e+00,-1.14662480e+00,
+-1.14599919e+00,-1.14537084e+00,-1.14474010e+00,-1.14410675e+00,-1.14347100e+00,
+-1.14283276e+00,-1.14219189e+00,-1.14154863e+00,-1.14090300e+00,-1.14025486e+00,
+-1.13960421e+00,-1.13895118e+00,-1.13829565e+00,-1.13763773e+00,-1.13697731e+00,
+-1.13631451e+00,-1.13564932e+00,-1.13498163e+00,-1.13431168e+00,-1.13363922e+00,
+-1.13296437e+00,-1.13228726e+00,-1.13160753e+00,-1.13092566e+00,-1.13024139e+00,
+-1.12955475e+00,-1.12886572e+00,-1.12817430e+00,-1.12748051e+00,-1.12678456e+00,
+-1.12608612e+00,-1.12538540e+00,-1.12468243e+00,-1.12397707e+00,-1.12326944e+00,
+-1.12255955e+00,-1.12184739e+00,-1.12113285e+00,-1.12041605e+00,-1.11969709e+00,
+-1.11897576e+00,-1.11825228e+00,-1.11752641e+00,-1.11679840e+00,-1.11606812e+00,
+-1.11533546e+00,-1.11460078e+00,-1.11386383e+00,-1.11312461e+00,-1.11238337e+00,
+-1.11163974e+00,-1.11089396e+00,-1.11014605e+00,-1.10939574e+00,-1.10864353e+00,
+-1.10788906e+00,-1.10713243e+00,-1.10637355e+00,-1.10561264e+00,-1.10484958e+00,
+-1.10408425e+00,-1.10331690e+00,-1.10254741e+00,-1.10177588e+00,-1.10100210e+00,
+-1.10022628e+00,-1.09944844e+00,-1.09866834e+00,-1.09788632e+00,-1.09710205e+00,
+-1.09631586e+00,-1.09552741e+00,-1.09473705e+00,-1.09394455e+00,-1.09315014e+00,
+-1.09235358e+00,-1.09155500e+00,-1.09075427e+00,-1.08995175e+00,-1.08914709e+00,
+-1.08834040e+00,-1.08753169e+00,-1.08672094e+00,-1.08590841e+00,-1.08509374e+00,
+-1.08427703e+00,-1.08345842e+00,-1.08263779e+00,-1.08181524e+00,-1.08099067e+00,
+-1.08016419e+00,-1.07933581e+00,-1.07850552e+00,-1.07767320e+00,-1.07683897e+00,
+-1.07600284e+00,-1.07516479e+00,-1.07432473e+00,-1.07348287e+00,-1.07263911e+00,
+-1.07179344e+00,-1.07094586e+00,-1.07009649e+00,-1.06924510e+00,-1.06839204e+00,
+-1.06753695e+00,-1.06667995e+00,-1.06582129e+00,-1.06496072e+00,-1.06409836e+00,
+-1.06323409e+00,-1.06236792e+00,-1.06150007e+00,-1.06063032e+00,-1.05975878e+00,
+-1.05888546e+00,-1.05801034e+00,-1.05713344e+00,-1.05625474e+00,-1.05537426e+00,
+-1.05449200e+00,-1.05360794e+00,-1.05272222e+00,-1.05183470e+00,-1.05094540e+00,
+-1.05005431e+00,-1.04916167e+00,-1.04826713e+00,-1.04737091e+00,-1.04647303e+00,
+-1.04557323e+00,-1.04467201e+00,-1.04376888e+00,-1.04286408e+00,-1.04195762e+00,
+-1.04104948e+00,-1.04013968e+00,-1.03922820e+00,-1.03831506e+00,-1.03740025e+00,
+-1.03648376e+00,-1.03556561e+00,-1.03464592e+00,-1.03372455e+00,-1.03280151e+00,
+-1.03187680e+00,-1.03095055e+00,-1.03002262e+00,-1.02909315e+00,-1.02816200e+00,
+-1.02722931e+00,-1.02629507e+00,-1.02535915e+00,-1.02442169e+00,-1.02348268e+00,
+-1.02254200e+00,-1.02159989e+00,-1.02065611e+00,-1.01971090e+00,-1.01876402e+00,
+-1.01781571e+00,-1.01686573e+00,-1.01591444e+00,-1.01496148e+00,-1.01400685e+00,
+-1.01305091e+00,-1.01209342e+00,-1.01113439e+00,-1.01017404e+00,-1.00921202e+00,
+-1.00824857e+00,-1.00728357e+00,-1.00631714e+00,-1.00534928e+00,-1.00437999e+00,
+-1.00340915e+00,-1.00243688e+00,-1.00146317e+00,-1.00048804e+00,-9.99511540e-01,
+-9.98533547e-01,-9.97554123e-01,-9.96573329e-01,-9.95591044e-01,-9.94607449e-01,
+-9.93622422e-01,-9.92635965e-01,-9.91648078e-01,-9.90658879e-01,-9.89668310e-01,
+-9.88676310e-01,-9.87683058e-01,-9.86688375e-01,-9.85692263e-01,-9.84694898e-01,
+-9.83696163e-01,-9.82696056e-01,-9.81694698e-01,-9.80691910e-01,-9.79687870e-01,
+-9.78682518e-01,-9.77675796e-01,-9.76667762e-01,-9.75658536e-01,-9.74647880e-01,
+-9.73636031e-01,-9.72622871e-01,-9.71608400e-01,-9.70592678e-01,-9.69575703e-01,
+-9.68557477e-01,-9.67537940e-01,-9.66517210e-01,-9.65495169e-01,-9.64471936e-01,
+-9.63447452e-01,-9.62421775e-01,-9.61394787e-01,-9.60366607e-01,-9.59337234e-01,
+-9.58306670e-01,-9.57274914e-01,-9.56241965e-01,-9.55207765e-01,-9.54172373e-01,
+-9.53135848e-01,-9.52098131e-01,-9.51059222e-01,-9.50019181e-01,-9.48977947e-01,
+-9.47935581e-01,-9.46892083e-01,-9.45847392e-01,-9.44801569e-01,-9.43754673e-01,
+-9.42706585e-01,-9.41657424e-01,-9.40607071e-01,-9.39555645e-01,-9.38503146e-01,
+-9.37449515e-01,-9.36394811e-01,-9.35338974e-01,-9.34282064e-01,-9.33224082e-01,
+-9.32165027e-01,-9.31104839e-01,-9.30043638e-01,-9.28981423e-01,-9.27918077e-01,
+-9.26853657e-01,-9.25788283e-01,-9.24721837e-01,-9.23654318e-01,-9.22585845e-01,
+-9.21516299e-01,-9.20445681e-01,-9.19374108e-01,-9.18301582e-01,-9.17227983e-01,
+-9.16153371e-01,-9.15077806e-01,-9.14001226e-01,-9.12923694e-01,-9.11845148e-01,
+-9.10765648e-01,-9.09685194e-01,-9.08603787e-01,-9.07521367e-01,-9.06437993e-01,
+-9.05353785e-01,-9.04268503e-01,-9.03182387e-01,-9.02095258e-01,-9.01007235e-01,
+-8.99918318e-01,-8.98828387e-01,-8.97737622e-01,-8.96645963e-01,-8.95553350e-01,
+-8.94459903e-01,-8.93365502e-01,-8.92270267e-01,-8.91174138e-01,-8.90077114e-01,
+-8.88979197e-01,-8.87880445e-01,-8.86780858e-01,-8.85680377e-01,-8.84579062e-01,
+-8.83476853e-01,-8.82373929e-01,-8.81270051e-01,-8.80165339e-01,-8.79059851e-01,
+-8.77953529e-01,-8.76846433e-01,-8.75738442e-01,-8.74629676e-01,-8.73520136e-01,
+-8.72409761e-01,-8.71298611e-01,-8.70186687e-01,-8.69073987e-01,-8.67960453e-01,
+-8.66846204e-01,-8.65731120e-01,-8.64615321e-01,-8.63498807e-01,-8.62381458e-01,
+-8.61263394e-01,-8.60144615e-01,-8.59025121e-01,-8.57904792e-01,-8.56783807e-01,
+-8.55662107e-01,-8.54539633e-01,-8.53416502e-01,-8.52292657e-01,-8.51168036e-01,
+-8.50042820e-01,-8.48916829e-01,-8.47790182e-01,-8.46662879e-01,-8.45534801e-01,
+-8.44406128e-01,-8.43276739e-01,-8.42146754e-01,-8.41016054e-01,-8.39884758e-01,
+-8.38752747e-01,-8.37620080e-01,-8.36486816e-01,-8.35352898e-01,-8.34218323e-01,
+-8.33083153e-01,-8.31947327e-01,-8.30810905e-01,-8.29673886e-01,-8.28536272e-01,
+-8.27398002e-01,-8.26259136e-01,-8.25119734e-01,-8.23979676e-01,-8.22839022e-01,
+-8.21697831e-01,-8.20556045e-01,-8.19413781e-01,-8.18270802e-01,-8.17127347e-01,
+-8.15983295e-01,-8.14838767e-01,-8.13693643e-01,-8.12547922e-01,-8.11401725e-01,
+-8.10254991e-01,-8.09107721e-01,-8.07959914e-01,-8.06811571e-01,-8.05662751e-01,
+-8.04513454e-01,-8.03363562e-01,-8.02213192e-01,-8.01062346e-01,-7.99911022e-01,
+-7.98759222e-01,-7.97606885e-01,-7.96454072e-01,-7.95300841e-01,-7.94147134e-01,
+-7.92992890e-01,-7.91838229e-01,-7.90683150e-01,-7.89527535e-01,-7.88371563e-01,
+-7.87215114e-01,-7.86058187e-01,-7.84900844e-01,-7.83743083e-01,-7.82584906e-01,
+-7.81426311e-01,-7.80267298e-01,-7.79107869e-01,-7.77948022e-01,-7.76787758e-01,
+-7.75627136e-01,-7.74466157e-01,-7.73304701e-01,-7.72142887e-01,-7.70980716e-01,
+-7.69818187e-01,-7.68655300e-01,-7.67491937e-01,-7.66328335e-01,-7.65164316e-01,
+-7.63999939e-01,-7.62835264e-01,-7.61670172e-01,-7.60504782e-01,-7.59339094e-01,
+-7.58172989e-01,-7.57006586e-01,-7.55839884e-01,-7.54672885e-01,-7.53505528e-01,
+-7.52337873e-01,-7.51169920e-01,-7.50001669e-01,-7.48833060e-01,-7.47664213e-01,
+-7.46495128e-01,-7.45325685e-01,-7.44156003e-01,-7.42986083e-01,-7.41815805e-01,
+-7.40645289e-01,-7.39474535e-01,-7.38303542e-01,-7.37132192e-01,-7.35960722e-01,
+-7.34788895e-01,-7.33616948e-01,-7.32444644e-01,-7.31272221e-01,-7.30099499e-01,
+-7.28926539e-01,-7.27753401e-01,-7.26580024e-01,-7.25406528e-01,-7.24232674e-01,
+-7.23058701e-01,-7.21884549e-01,-7.20710158e-01,-7.19535589e-01,-7.18360901e-01,
+-7.17185974e-01,-7.16010809e-01,-7.14835584e-01,-7.13660121e-01,-7.12484479e-01,
+-7.11308718e-01,-7.10132837e-01,-7.08956718e-01,-7.07780540e-01,-7.06604123e-01,
+-7.05427647e-01,-7.04251051e-01,-7.03074217e-01,-7.01897383e-01,-7.00720310e-01,
+-6.99543178e-01,-6.98365927e-01,-6.97188556e-01,-6.96011066e-01,-6.94833517e-01,
+-6.93655849e-01,-6.92478061e-01,-6.91300213e-01,-6.90122247e-01,-6.88944221e-01,
+-6.87766194e-01,-6.86587989e-01,-6.85409725e-01,-6.84231400e-01,-6.83053017e-01,
+-6.81874633e-01,-6.80696130e-01,-6.79517627e-01,-6.78339005e-01,-6.77160382e-01,
+-6.75981760e-01,-6.74803019e-01,-6.73624337e-01,-6.72445595e-01,-6.71266794e-01,
+-6.70088053e-01,-6.68909252e-01,-6.67730451e-01,-6.66551590e-01,-6.65372849e-01,
+-6.64193988e-01,-6.63015187e-01,-6.61836386e-01,-6.60657644e-01,-6.59478843e-01,
+-6.58300102e-01,-6.57121420e-01,-6.55942678e-01,-6.54764056e-01,-6.53585434e-01,
+-6.52406871e-01,-6.51228309e-01,-6.50049865e-01,-6.48871422e-01,-6.47693038e-01,
+-6.46514773e-01,-6.45336509e-01,-6.44158363e-01,-6.42980218e-01,-6.41802192e-01,
+-6.40624285e-01,-6.39446378e-01,-6.38268590e-01,-6.37090921e-01,-6.35913372e-01,
+-6.34735823e-01,-6.33558512e-01,-6.32381201e-01,-6.31204009e-01,-6.30026937e-01,
+-6.28850043e-01,-6.27673268e-01,-6.26496553e-01,-6.25319958e-01,-6.24143600e-01,
+-6.22967243e-01,-6.21791124e-01,-6.20615125e-01,-6.19439244e-01,-6.18263602e-01,
+-6.17088079e-01,-6.15912676e-01,-6.14737391e-01,-6.13562346e-01,-6.12387478e-01,
+-6.11212790e-01,-6.10038280e-01,-6.08863890e-01,-6.07689738e-01,-6.06515765e-01,
+-6.05341971e-01,-6.04168415e-01,-6.02995038e-01,-6.01821840e-01,-6.00648880e-01,
+-5.99476099e-01,-5.98303556e-01,-5.97131252e-01,-5.95959067e-01,-5.94787240e-01,
+-5.93615532e-01,-5.92444181e-01,-5.91272950e-01,-5.90102017e-01,-5.88931322e-01,
+-5.87760866e-01,-5.86590648e-01,-5.85420728e-01,-5.84251046e-01,-5.83081603e-01,
+-5.81912458e-01,-5.80743551e-01,-5.79574943e-01,-5.78406572e-01,-5.77238560e-01,
+-5.76070786e-01,-5.74903250e-01,-5.73736072e-01,-5.72569132e-01,-5.71402550e-01,
+-5.70236206e-01,-5.69070220e-01,-5.67904472e-01,-5.66739082e-01,-5.65574050e-01,
+-5.64409256e-01,-5.63244820e-01,-5.62080741e-01,-5.60916960e-01,-5.59753537e-01,
+-5.58590412e-01,-5.57427645e-01,-5.56265175e-01,-5.55103123e-01,-5.53941369e-01,
+-5.52779973e-01,-5.51618934e-01,-5.50458312e-01,-5.49297988e-01,-5.48138022e-01,
+-5.46978474e-01,-5.45819283e-01,-5.44660449e-01,-5.43501973e-01,-5.42343974e-01,
+-5.41186273e-01,-5.40028989e-01,-5.38872123e-01,-5.37715614e-01,-5.36559522e-01,
+-5.35403848e-01,-5.34248590e-01,-5.33093691e-01,-5.31939268e-01,-5.30785203e-01,
+-5.29631615e-01,-5.28478384e-01,-5.27325630e-01,-5.26173294e-01,-5.25021374e-01,
+-5.23869932e-01,-5.22718906e-01,-5.21568298e-01,-5.20418167e-01,-5.19268513e-01,
+-5.18119216e-01,-5.16970456e-01,-5.15822172e-01,-5.14674306e-01,-5.13526917e-01,
+-5.12380004e-01,-5.11233568e-01,-5.10087609e-01,-5.08942068e-01,-5.07797062e-01,
+-5.06652534e-01,-5.05508542e-01,-5.04364967e-01,-5.03221929e-01,-5.02079368e-01,
+-5.00937343e-01,-4.99795794e-01,-4.98654753e-01,-4.97514218e-01,-4.96374220e-01,
+-4.95234728e-01,-4.94095743e-01,-4.92957294e-01,-4.91819382e-01,-4.90682006e-01,
+-4.89545107e-01,-4.88408804e-01,-4.87273037e-01,-4.86137778e-01,-4.85003084e-01,
+-4.83868957e-01,-4.82735336e-01,-4.81602311e-01,-4.80469823e-01,-4.79337901e-01,
+-4.78206545e-01,-4.77075756e-01,-4.75945532e-01,-4.74815905e-01,-4.73686814e-01,
+-4.72558320e-01,-4.71430421e-01,-4.70303118e-01,-4.69176352e-01,-4.68050241e-01,
+-4.66924667e-01,-4.65799749e-01,-4.64675367e-01,-4.63551641e-01,-4.62428510e-01,
+-4.61305976e-01,-4.60184038e-01,-4.59062755e-01,-4.57942069e-01,-4.56822008e-01,
+-4.55702573e-01,-4.54583764e-01,-4.53465581e-01,-4.52348053e-01,-4.51231122e-01,
+-4.50114846e-01,-4.48999226e-01,-4.47884262e-01,-4.46769923e-01,-4.45656240e-01,
+-4.44543213e-01,-4.43430841e-01,-4.42319125e-01,-4.41208065e-01,-4.40097690e-01,
+-4.38987970e-01,-4.37878937e-01,-4.36770558e-01,-4.35662866e-01,-4.34555858e-01,
+-4.33449537e-01,-4.32343900e-01,-4.31238949e-01,-4.30134654e-01,-4.29031074e-01,
+-4.27928209e-01,-4.26826060e-01,-4.25724566e-01,-4.24623817e-01,-4.23523754e-01,
+-4.22424406e-01,-4.21325773e-01,-4.20227855e-01,-4.19130653e-01,-4.18034196e-01,
+-4.16938424e-01,-4.15843427e-01,-4.14749146e-01,-4.13655579e-01,-4.12562728e-01,
+-4.11470652e-01,-4.10379320e-01,-4.09288704e-01,-4.08198893e-01,-4.07109767e-01,
+-4.06021416e-01,-4.04933810e-01,-4.03846979e-01,-4.02760923e-01,-4.01675612e-01,
+-4.00591075e-01,-3.99507284e-01,-3.98424268e-01,-3.97342056e-01,-3.96260619e-01,
+-3.95179927e-01,-3.94100040e-01,-3.93020928e-01,-3.91942620e-01,-3.90865088e-01,
+-3.89788330e-01,-3.88712406e-01,-3.87637258e-01,-3.86562914e-01,-3.85489374e-01,
+-3.84416640e-01,-3.83344710e-01,-3.82273614e-01,-3.81203294e-01,-3.80133808e-01,
+-3.79065156e-01,-3.77997279e-01,-3.76930267e-01,-3.75864089e-01,-3.74798715e-01,
+-3.73734176e-01,-3.72670472e-01,-3.71607602e-01,-3.70545566e-01,-3.69484425e-01,
+-3.68424058e-01,-3.67364585e-01,-3.66305947e-01,-3.65248144e-01,-3.64191204e-01,
+-3.63135129e-01,-3.62079918e-01,-3.61025572e-01,-3.59972060e-01,-3.58919442e-01,
+-3.57867658e-01,-3.56816798e-01,-3.55766773e-01,-3.54717672e-01,-3.53669405e-01,
+-3.52622032e-01,-3.51575553e-01,-3.50529939e-01,-3.49485219e-01,-3.48441392e-01,
+-3.47398460e-01,-3.46356452e-01,-3.45315307e-01,-3.44275057e-01,-3.43235731e-01,
+-3.42197329e-01,-3.41159821e-01,-3.40123206e-01,-3.39087516e-01,-3.38052750e-01,
+-3.37018877e-01,-3.35985959e-01,-3.34953934e-01,-3.33922833e-01,-3.32892686e-01,
+-3.31863463e-01,-3.30835134e-01,-3.29807758e-01,-3.28781337e-01,-3.27755868e-01,
+-3.26731294e-01,-3.25707704e-01,-3.24685037e-01,-3.23663324e-01,-3.22642565e-01,
+-3.21622759e-01,-3.20603907e-01,-3.19585979e-01,-3.18569064e-01,-3.17553073e-01,
+-3.16538066e-01,-3.15524012e-01,-3.14510942e-01,-3.13498825e-01,-3.12487692e-01,
+-3.11477542e-01,-3.10468346e-01,-3.09460163e-01,-3.08452934e-01,-3.07446688e-01,
+-3.06441456e-01,-3.05437177e-01,-3.04433912e-01,-3.03431630e-01,-3.02430362e-01,
+-3.01430076e-01,-3.00430775e-01,-2.99432486e-01,-2.98435211e-01,-2.97438949e-01,
+-2.96443671e-01,-2.95449406e-01,-2.94456184e-01,-2.93463945e-01,-2.92472720e-01,
+-2.91482538e-01,-2.90493369e-01,-2.89505213e-01,-2.88518071e-01,-2.87531972e-01,
+-2.86546916e-01,-2.85562873e-01,-2.84579873e-01,-2.83597887e-01,-2.82616973e-01,
+-2.81637073e-01,-2.80658215e-01,-2.79680431e-01,-2.78703660e-01,-2.77727932e-01,
+-2.76753277e-01,-2.75779665e-01,-2.74807096e-01,-2.73835599e-01,-2.72865176e-01,
+-2.71895766e-01,-2.70927459e-01,-2.69960195e-01,-2.68994004e-01,-2.68028885e-01,
+-2.67064840e-01,-2.66101837e-01,-2.65139937e-01,-2.64179111e-01,-2.63219357e-01,
+-2.62260675e-01,-2.61303097e-01,-2.60346591e-01,-2.59391159e-01,-2.58436829e-01,
+-2.57483572e-01,-2.56531417e-01,-2.55580366e-01,-2.54630387e-01,-2.53681540e-01,
+-2.52733767e-01,-2.51787096e-01,-2.50841528e-01,-2.49897063e-01,-2.48953700e-01,
+-2.48011470e-01,-2.47070327e-01,-2.46130303e-01,-2.45191395e-01,-2.44253606e-01,
+-2.43316934e-01,-2.42381379e-01,-2.41446942e-01,-2.40513623e-01,-2.39581451e-01,
+-2.38650382e-01,-2.37720460e-01,-2.36791670e-01,-2.35863999e-01,-2.34937459e-01,
+-2.34012067e-01,-2.33087808e-01,-2.32164696e-01,-2.31242716e-01,-2.30321884e-01,
+-2.29402199e-01,-2.28483662e-01,-2.27566272e-01,-2.26650029e-01,-2.25734934e-01,
+-2.24821001e-01,-2.23908216e-01,-2.22996593e-01,-2.22086132e-01,-2.21176818e-01,
+-2.20268682e-01,-2.19361693e-01,-2.18455881e-01,-2.17551246e-01,-2.16647774e-01,
+-2.15745464e-01,-2.14844331e-01,-2.13944376e-01,-2.13045597e-01,-2.12147981e-01,
+-2.11251557e-01,-2.10356325e-01,-2.09462255e-01,-2.08569378e-01,-2.07677677e-01,
+-2.06787169e-01,-2.05897868e-01,-2.05009729e-01,-2.04122797e-01,-2.03237057e-01,
+-2.02352524e-01,-2.01469168e-01,-2.00587019e-01,-1.99706078e-01,-1.98826328e-01,
+-1.97947785e-01,-1.97070450e-01,-1.96194321e-01,-1.95319399e-01,-1.94445685e-01,
+-1.93573177e-01,-1.92701891e-01,-1.91831812e-01,-1.90962955e-01,-1.90095305e-01,
+-1.89228892e-01,-1.88363686e-01,-1.87499702e-01,-1.86636955e-01,-1.85775414e-01,
+-1.84915110e-01,-1.84056044e-01,-1.83198184e-01,-1.82341576e-01,-1.81486189e-01,
+-1.80632025e-01,-1.79779112e-01,-1.78927436e-01,-1.78076997e-01,-1.77227795e-01,
+-1.76379830e-01,-1.75533116e-01,-1.74687639e-01,-1.73843414e-01,-1.73000425e-01,
+-1.72158688e-01,-1.71318203e-01,-1.70478970e-01,-1.69640988e-01,-1.68804273e-01,
+-1.67968795e-01,-1.67134583e-01,-1.66301623e-01,-1.65469930e-01,-1.64639488e-01,
+-1.63810313e-01,-1.62982404e-01,-1.62155747e-01,-1.61330372e-01,-1.60506263e-01,
+-1.59683406e-01,-1.58861846e-01,-1.58041537e-01,-1.57222509e-01,-1.56404749e-01,
+-1.55588269e-01,-1.54773057e-01,-1.53959125e-01,-1.53146476e-01,-1.52335107e-01,
+-1.51525036e-01,-1.50716230e-01,-1.49908707e-01,-1.49102479e-01,-1.48297533e-01,
+-1.47493869e-01,-1.46691501e-01,-1.45890415e-01,-1.45090640e-01,-1.44292146e-01,
+-1.43494949e-01,-1.42699033e-01,-1.41904429e-01,-1.41111121e-01,-1.40319109e-01,
+-1.39528409e-01,-1.38738990e-01,-1.37950897e-01,-1.37164086e-01,-1.36378586e-01,
+-1.35594398e-01,-1.34811521e-01,-1.34029940e-01,-1.33249670e-01,-1.32470712e-01,
+-1.31693080e-01,-1.30916744e-01,-1.30141735e-01,-1.29368022e-01,-1.28595650e-01,
+-1.27824575e-01,-1.27054825e-01,-1.26286402e-01,-1.25519291e-01,-1.24753505e-01,
+-1.23989046e-01,-1.23225905e-01,-1.22464091e-01,-1.21703610e-01,-1.20944448e-01,
+-1.20186612e-01,-1.19430110e-01,-1.18674941e-01,-1.17921099e-01,-1.17168590e-01,
+-1.16417423e-01,-1.15667582e-01,-1.14919074e-01,-1.14171907e-01,-1.13426074e-01,
+-1.12681590e-01,-1.11938432e-01,-1.11196622e-01,-1.10456154e-01,-1.09717026e-01,
+-1.08979248e-01,-1.08242810e-01,-1.07507713e-01,-1.06773973e-01,-1.06041573e-01,
+-1.05310522e-01,-1.04580820e-01,-1.03852466e-01,-1.03125468e-01,-1.02399819e-01,
+-1.01675525e-01,-1.00952581e-01,-1.00230999e-01,-9.95107666e-02,-9.87918973e-02,
+-9.80743766e-02,-9.73582268e-02,-9.66434255e-02,-9.59299877e-02,-9.52179134e-02,
+-9.45071951e-02,-9.37978476e-02,-9.30898562e-02,-9.23832357e-02,-9.16779712e-02,
+-9.09740776e-02,-9.02715549e-02,-8.95704031e-02,-8.88706148e-02,-8.81721899e-02,
+-8.74751434e-02,-8.67794678e-02,-8.60851631e-02,-8.53922293e-02,-8.47006664e-02,
+-8.40104818e-02,-8.33216757e-02,-8.26342404e-02,-8.19481835e-02,-8.12635049e-02,
+-8.05802047e-02,-7.98982829e-02,-7.92177320e-02,-7.85385743e-02,-7.78607950e-02,
+-7.71843940e-02,-7.65093789e-02,-7.58357421e-02,-7.51634911e-02,-7.44926259e-02,
+-7.38231465e-02,-7.31550530e-02,-7.24883527e-02,-7.18230307e-02,-7.11591020e-02,
+-7.04965591e-02,-6.98354095e-02,-6.91756457e-02,-6.85172752e-02,-6.78602904e-02,
+-6.72047064e-02,-6.65505081e-02,-6.58977106e-02,-6.52463064e-02,-6.45962954e-02,
+-6.39476776e-02,-6.33004531e-02,-6.26546293e-02,-6.20102026e-02,-6.13671765e-02,
+-6.07255436e-02,-6.00853115e-02,-5.94464801e-02,-5.88090494e-02,-5.81730157e-02,
+-5.75383864e-02,-5.69051579e-02,-5.62733337e-02,-5.56429103e-02,-5.50138876e-02,
+-5.43862730e-02,-5.37600629e-02,-5.31352572e-02,-5.25118560e-02,-5.18898629e-02,
+-5.12692779e-02,-5.06500974e-02,-5.00323251e-02,-4.94159609e-02,-4.88010049e-02,
+-4.81874570e-02,-4.75753210e-02,-4.69645932e-02,-4.63552773e-02,-4.57473733e-02,
+-4.51408774e-02,-4.45357971e-02,-4.39321287e-02,-4.33298722e-02,-4.27290276e-02,
+-4.21295986e-02,-4.15315852e-02,-4.09349836e-02,-4.03397977e-02,-3.97460274e-02,
+-3.91536728e-02,-3.85627337e-02,-3.79732102e-02,-3.73851061e-02,-3.67984176e-02,
+-3.62131484e-02,-3.56292948e-02,-3.50468643e-02,-3.44658494e-02,-3.38862538e-02,
+-3.33080776e-02,-3.27313207e-02,-3.21559832e-02,-3.15820687e-02,-3.10095735e-02,
+-3.04385014e-02,-2.98688486e-02,-2.93006189e-02,-2.87338104e-02,-2.81684250e-02,
+-2.76044626e-02,-2.70419214e-02,-2.64808051e-02,-2.59211119e-02,-2.53628436e-02,
+-2.48059984e-02,-2.42505763e-02,-2.36965809e-02,-2.31440086e-02,-2.25928631e-02,
+-2.20431425e-02,-2.14948468e-02,-2.09479779e-02,-2.04025339e-02,-1.98585168e-02,
+-1.93159264e-02,-1.87747609e-02,-1.82350241e-02,-1.76967140e-02,-1.71598308e-02,
+-1.66243762e-02,-1.60903484e-02,-1.55577483e-02,-1.50265759e-02,-1.44968322e-02,
+-1.39685161e-02,-1.34416297e-02,-1.29161710e-02,-1.23921409e-02,-1.18695404e-02,
+-1.13483677e-02,-1.08286254e-02,-1.03103118e-02,-9.79342777e-03,-9.27797239e-03,
+-8.76394752e-03,-8.25135224e-03,-7.74018653e-03,-7.23045040e-03,-6.72214478e-03,
+-6.21526875e-03,-5.70982276e-03,-5.20580728e-03,-4.70322184e-03,-4.20206646e-03,
+-3.70234181e-03,-3.20404721e-03,-2.70718313e-03,-2.21174955e-03,-1.71774626e-03,
+-1.22517347e-03,-7.34031200e-04,-2.44319439e-04,2.43961811e-04,7.30812550e-04,
+1.21623278e-03,1.70022249e-03,2.18278170e-03,2.66391062e-03,3.14360904e-03,
+3.62187694e-03,4.09871479e-03,4.57412191e-03,5.04809897e-03,5.52064599e-03,
+5.99176250e-03,6.46144897e-03,6.92970585e-03,7.39653222e-03,7.86192901e-03,
+8.32589623e-03,8.78843386e-03,9.24954098e-03,9.70921945e-03,1.01674683e-02,
+1.06242886e-02,1.10796783e-02,1.15336403e-02,1.19861728e-02,1.24372765e-02,
+1.28869526e-02,1.33351991e-02,1.37820179e-02,1.42274080e-02,1.46713704e-02,
+1.51139051e-02,1.55550130e-02,1.59946922e-02,1.64329447e-02,1.68697704e-02,
+1.73051674e-02,1.77391395e-02,1.81716848e-02,1.86028033e-02,1.90324970e-02,
+1.94607638e-02,1.98876057e-02,2.03130227e-02,2.07370128e-02,2.11595800e-02,
+2.15807203e-02,2.20004376e-02,2.24187318e-02,2.28356011e-02,2.32510474e-02,
+2.36650687e-02,2.40776688e-02,2.44888458e-02,2.48985998e-02,2.53069326e-02,
+2.57138424e-02,2.61193328e-02,2.65234001e-02,2.69260462e-02,2.73272730e-02,
+2.77270805e-02,2.81254668e-02,2.85224337e-02,2.89179813e-02,2.93121096e-02,
+2.97048204e-02,3.00961137e-02,3.04859877e-02,3.08744460e-02,3.12614851e-02,
+3.16471085e-02,3.20313163e-02,3.24141085e-02,3.27954851e-02,3.31754461e-02,
+3.35539952e-02,3.39311287e-02,3.43068466e-02,3.46811526e-02,3.50540467e-02,
+3.54255289e-02,3.57955955e-02,3.61642540e-02,3.65315005e-02,3.68973352e-02,
+3.72617617e-02,3.76247764e-02,3.79863828e-02,3.83465812e-02,3.87053713e-02,
+3.90627533e-02,3.94187309e-02,3.97733003e-02,4.01264615e-02,4.04782183e-02,
+4.08285707e-02,4.11775187e-02,4.15250584e-02,4.18711975e-02,4.22159359e-02,
+4.25592698e-02,4.29012030e-02,4.32417318e-02,4.35808636e-02,4.39185947e-02,
+4.42549251e-02,4.45898548e-02,4.49233912e-02,4.52555269e-02,4.55862656e-02,
+4.59156074e-02,4.62435521e-02,4.65701036e-02,4.68952581e-02,4.72190194e-02,
+4.75413874e-02,4.78623621e-02,4.81819473e-02,4.85001355e-02,4.88169380e-02,
+4.91323471e-02,4.94463705e-02,4.97590005e-02,5.00702448e-02,5.03801033e-02,
+5.06885722e-02,5.09956554e-02,5.13013527e-02,5.16056642e-02,5.19085936e-02,
+5.22101372e-02,5.25103025e-02,5.28090820e-02,5.31064831e-02,5.34025021e-02,
+5.36971428e-02,5.39904013e-02,5.42822853e-02,5.45727909e-02,5.48619181e-02,
+5.51496744e-02,5.54360524e-02,5.57210520e-02,5.60046844e-02,5.62869385e-02,
+5.65678254e-02,5.68473414e-02,5.71254827e-02,5.74022569e-02,5.76776639e-02,
+5.79516999e-02,5.82243726e-02,5.84956743e-02,5.87656125e-02,5.90341873e-02,
+5.93013987e-02,5.95672466e-02,5.98317310e-02,6.00948557e-02,6.03566207e-02,
+6.06170259e-02,6.08760715e-02,6.11337647e-02,6.13900945e-02,6.16450720e-02,
+6.18986934e-02,6.21509627e-02,6.24018759e-02,6.26514405e-02,6.28996491e-02,
+6.31465092e-02,6.33920208e-02,6.36361837e-02,6.38790056e-02,6.41204715e-02,
+6.43605962e-02,6.45993799e-02,6.48368150e-02,6.50729090e-02,6.53076619e-02,
+6.55410662e-02,6.57731444e-02,6.60038739e-02,6.62332699e-02,6.64613247e-02,
+6.66880459e-02,6.69134408e-02,6.71374947e-02,6.73602149e-02,6.75816089e-02,
+6.78016692e-02,6.80203959e-02,6.82377964e-02,6.84538782e-02,6.86686262e-02,
+6.88820481e-02,6.90941513e-02,6.93049282e-02,6.95143789e-02,6.97225183e-02,
+6.99293315e-02,7.01348260e-02,7.03390017e-02,7.05418661e-02,7.07434118e-02,
+7.09436461e-02,7.11425617e-02,7.13401735e-02,7.15364665e-02,7.17314556e-02,
+7.19251335e-02,7.21175075e-02,7.23085701e-02,7.24983290e-02,7.26867914e-02,
+7.28739351e-02,7.30597973e-02,7.32443482e-02,7.34276026e-02,7.36095533e-02,
+7.37902075e-02,7.39695728e-02,7.41476417e-02,7.43244216e-02,7.44999051e-02,
+7.46740997e-02,7.48469979e-02,7.50186145e-02,7.51889497e-02,7.53579885e-02,
+7.55257457e-02,7.56922290e-02,7.58574232e-02,7.60213360e-02,7.61839747e-02,
+7.63453245e-02,7.65054077e-02,7.66642168e-02,7.68217444e-02,7.69780055e-02,
+7.71329924e-02,7.72867054e-02,7.74391592e-02,7.75903389e-02,7.77402520e-02,
+7.78889060e-02,7.80362934e-02,7.81824142e-02,7.83272833e-02,7.84708858e-02,
+7.86132365e-02,7.87543207e-02,7.88941607e-02,7.90327415e-02,7.91700706e-02,
+7.93061480e-02,7.94409811e-02,7.95745552e-02,7.97068924e-02,7.98379779e-02,
+7.99678266e-02,8.00964236e-02,8.02237839e-02,8.03499073e-02,8.04747939e-02,
+8.05984363e-02,8.07208493e-02,8.08420256e-02,8.09619725e-02,8.10806826e-02,
+8.11981708e-02,8.13144296e-02,8.14294517e-02,8.15432593e-02,8.16558450e-02,
+8.17672014e-02,8.18773434e-02,8.19862634e-02,8.20939690e-02,8.22004527e-02,
+8.23057294e-02,8.24097842e-02,8.25126320e-02,8.26142728e-02,8.27147067e-02,
+8.28139335e-02,8.29119533e-02,8.30087662e-02,8.31043869e-02,8.31988007e-02,
+8.32920149e-02,8.33840370e-02,8.34748596e-02,8.35644826e-02,8.36529210e-02,
+8.37401673e-02,8.38262290e-02,8.39110911e-02,8.39947760e-02,8.40772763e-02,
+8.41585994e-02,8.42387304e-02,8.43176916e-02,8.43954682e-02,8.44720751e-02,
+8.45475048e-02,8.46217647e-02,8.46948475e-02,8.47667679e-02,8.48375186e-02,
+8.49070996e-02,8.49755257e-02,8.50427821e-02,8.51088762e-02,8.51738155e-02,
+8.52375999e-02,8.53002220e-02,8.53616968e-02,8.54220167e-02,8.54811817e-02,
+8.55392069e-02,8.55960771e-02,8.56518075e-02,8.57063979e-02,8.57598409e-02,
+8.58121440e-02,8.58633146e-02,8.59133452e-02,8.59622434e-02,8.60100091e-02,
+8.60566422e-02,8.61021429e-02,8.61465260e-02,8.61897767e-02,8.62319022e-02,
+8.62729102e-02,8.63128006e-02,8.63515735e-02,8.63892287e-02,8.64257663e-02,
+8.64611939e-02,8.64955112e-02,8.65287185e-02,8.65608230e-02,8.65918174e-02,
+8.66217166e-02,8.66505057e-02,8.66781995e-02,8.67047980e-02,8.67303014e-02,
+8.67547095e-02,8.67780223e-02,8.68002474e-02,8.68213922e-02,8.68414417e-02,
+8.68604109e-02,8.68782997e-02,8.68951082e-02,8.69108438e-02,8.69254991e-02,
+8.69390741e-02,8.69515836e-02,8.69630277e-02,8.69733989e-02,8.69826972e-02,
+8.69909376e-02,8.69981200e-02,8.70042369e-02,8.70092958e-02,8.70133042e-02,
+8.70162547e-02,8.70181546e-02,8.70190039e-02,8.70188028e-02,8.70175585e-02,
+8.70152712e-02,8.70119408e-02,8.70075673e-02,8.70021656e-02,8.69957209e-02,
+8.69882479e-02,8.69797394e-02,8.69702026e-02,8.69596377e-02,8.69480446e-02,
+8.69354382e-02,8.69218037e-02,8.69071558e-02,8.68914872e-02,8.68748054e-02,
+8.68571103e-02,8.68384019e-02,8.68186876e-02,8.67979750e-02,8.67762491e-02,
+8.67535248e-02,8.67298022e-02,8.67050812e-02,8.66793692e-02,8.66526589e-02,
+8.66249576e-02,8.65962729e-02,8.65665972e-02,8.65359381e-02,8.65043029e-02,
+8.64716768e-02,8.64380822e-02,8.64035115e-02,8.63679647e-02,8.63314494e-02,
+8.62939656e-02,8.62555131e-02,8.62160996e-02,8.61757249e-02,8.61343890e-02,
+8.60920921e-02,8.60488489e-02,8.60046446e-02,8.59594941e-02,8.59133974e-02,
+8.58663544e-02,8.58183652e-02,8.57694373e-02,8.57195705e-02,8.56687650e-02,
+8.56170207e-02,8.55643526e-02,8.55107531e-02,8.54562223e-02,8.54007751e-02,
+8.53444040e-02,8.52871090e-02,8.52288902e-02,8.51697624e-02,8.51097256e-02,
+8.50487649e-02,8.49869102e-02,8.49241465e-02,8.48604739e-02,8.47959071e-02,
+8.47304314e-02,8.46640766e-02,8.45968127e-02,8.45286548e-02,8.44596177e-02,
+8.43897015e-02,8.43188912e-02,8.42471868e-02,8.41746181e-02,8.41011703e-02,
+8.40268582e-02,8.39516521e-02,8.38755965e-02,8.37986618e-02,8.37208629e-02,
+8.36422145e-02,8.35627019e-02,8.34823251e-02,8.34010988e-02,8.33190233e-02,
+8.32360834e-02,8.31523091e-02,8.30677003e-02,8.29822272e-02,8.28959346e-02,
+8.28087926e-02,8.27208161e-02,8.26320201e-02,8.25423896e-02,8.24519247e-02,
+8.23606402e-02,8.22685361e-02,8.21756124e-02,8.20818692e-02,8.19873214e-02,
+8.18919539e-02,8.17957819e-02,8.16988051e-02,8.16010237e-02,8.15024525e-02,
+8.14030617e-02,8.13028961e-02,8.12019259e-02,8.11001658e-02,8.09976161e-02,
+8.08942914e-02,8.07901770e-02,8.06852877e-02,8.05796236e-02,8.04731697e-02,
+8.03659558e-02,8.02579820e-02,8.01492333e-02,8.00397247e-02,7.99294561e-02,
+7.98184127e-02,7.97066391e-02,7.95940906e-02,7.94808120e-02,7.93667734e-02,
+7.92519897e-02,7.91364759e-02,7.90202171e-02,7.89032131e-02,7.87854940e-02,
+7.86670297e-02,7.85478503e-02,7.84279406e-02,7.83073008e-02,7.81859457e-02,
+7.80638754e-02,7.79410899e-02,7.78175890e-02,7.76933879e-02,7.75684863e-02,
+7.74428695e-02,7.73165673e-02,7.71895498e-02,7.70618469e-02,7.69334584e-02,
+7.68043697e-02,7.66746104e-02,7.65441507e-02,7.64130205e-02,7.62812197e-02,
+7.61487335e-02,7.60155916e-02,7.58817643e-02,7.57472813e-02,7.56121278e-02,
+7.54763186e-02,7.53398538e-02,7.52027333e-02,7.50649571e-02,7.49265403e-02,
+7.47874826e-02,7.46477693e-02,7.45074302e-02,7.43664354e-02,7.42248297e-02,
+7.40825832e-02,7.39397109e-02,7.37962127e-02,7.36520886e-02,7.35073537e-02,
+7.33619928e-02,7.32160360e-02,7.30694532e-02,7.29222745e-02,7.27744848e-02,
+7.26260990e-02,7.24771172e-02,7.23275393e-02,7.21773654e-02,7.20266104e-02,
+7.18752593e-02,7.17233270e-02,7.15708286e-02,7.14177489e-02,7.12640882e-02,
+7.11098611e-02,7.09550679e-02,7.07997084e-02,7.06437826e-02,7.04873055e-02,
+7.03302771e-02,7.01726973e-02,7.00145662e-02,6.98558837e-02,6.96966648e-02,
+6.95369095e-02,6.93766028e-02,6.92157745e-02,6.90544248e-02,6.88925385e-02,
+6.87301159e-02,6.85671866e-02,6.84037507e-02,6.82397783e-02,6.80753142e-02,
+6.79103285e-02,6.77448362e-02,6.75788522e-02,6.74123764e-02,6.72453940e-02,
+6.70779198e-02,6.69099540e-02,6.67415112e-02,6.65725768e-02,6.64031655e-02,
+6.62332922e-02,6.60629272e-02,6.58921003e-02,6.57208115e-02,6.55490607e-02,
+6.53768480e-02,6.52041733e-02,6.50310516e-02,6.48574680e-02,6.46834522e-02,
+6.45089895e-02,6.43340796e-02,6.41587377e-02,6.39829636e-02,6.38067573e-02,
+6.36301190e-02,6.34530634e-02,6.32755905e-02,6.30977005e-02,6.29193932e-02,
+6.27406836e-02,6.25615567e-02,6.23820275e-02,6.22020960e-02,6.20217770e-02,
+6.18410558e-02,6.16599470e-02,6.14784658e-02,6.12965822e-02,6.11143261e-02,
+6.09316826e-02,6.07486814e-02,6.05653077e-02,6.03815615e-02,6.01974577e-02,
+6.00129813e-02,5.98281622e-02,5.96429855e-02,5.94574660e-02,5.92715889e-02,
+5.90853840e-02,5.88988364e-02,5.87119460e-02,5.85247278e-02,5.83371818e-02,
+5.81493080e-02,5.79611063e-02,5.77726066e-02,5.75837791e-02,5.73946238e-02,
+5.72051704e-02,5.70154488e-02,5.68253696e-02,5.66350222e-02,5.64444065e-02,
+5.62534630e-02,5.60622513e-02,5.58707416e-02,5.56789637e-02,5.54869175e-02,
+5.52945733e-02,5.51019609e-02,5.49091101e-02,5.47159910e-02,5.45226038e-02,
+5.43289781e-02,5.41350842e-02,5.39409518e-02,5.37465513e-02,5.35519421e-02,
+5.33570945e-02,5.31619787e-02,5.29666841e-02,5.27711213e-02,5.25753498e-02,
+5.23793697e-02,5.21831810e-02,5.19867539e-02,5.17901480e-02,5.15933335e-02,
+5.13963103e-02,5.11990786e-02,5.10016680e-02,5.08040786e-02,5.06062806e-02,
+5.04083037e-02,5.02101779e-02,5.00118434e-02,4.98133600e-02,4.96146977e-02,
+4.94158566e-02,4.92168963e-02,4.90177572e-02,4.88184690e-02,4.86190319e-02,
+4.84194458e-02,4.82197106e-02,4.80198562e-02,4.78198528e-02,4.76197302e-02,
+4.74194884e-02,4.72191274e-02,4.70186174e-02,4.68180180e-02,4.66172993e-02,
+4.64164913e-02,4.62155640e-02,4.60145175e-02,4.58134115e-02,4.56121862e-02,
+4.54109013e-02,4.52095270e-02,4.50080633e-02,4.48065102e-02,4.46048975e-02,
+4.44032252e-02,4.42014635e-02,4.39996719e-02,4.37977910e-02,4.35958803e-02,
+4.33939099e-02,4.31919098e-02,4.29898500e-02,4.27877605e-02,4.25856411e-02,
+4.23834920e-02,4.21813130e-02,4.19791043e-02,4.17768955e-02,4.15746570e-02,
+4.13724184e-02,4.11701500e-02,4.09679115e-02,4.07656431e-02,4.05634046e-02,
+4.03611660e-02,4.01589572e-02,3.99567485e-02,3.97545695e-02,3.95524204e-02,
+3.93502712e-02,3.91481817e-02,3.89461219e-02,3.87441218e-02,3.85421515e-02,
+3.83402109e-02,3.81383598e-02,3.79365385e-02,3.77348065e-02,3.75331044e-02,
+3.73314917e-02,3.71299684e-02,3.69285047e-02,3.67271304e-02,3.65258157e-02,
+3.63246202e-02,3.61235142e-02,3.59224975e-02,3.57216001e-02,3.55207920e-02,
+3.53201032e-02,3.51195335e-02,3.49190533e-02,3.47187221e-02,3.45185101e-02,
+3.43184471e-02,3.41185033e-02,3.39186788e-02,3.37190330e-02,3.35195065e-02,
+3.33201587e-02,3.31209600e-02,3.29219103e-02,3.27230096e-02,3.25243175e-02,
+3.23257744e-02,3.21274102e-02,3.19292247e-02,3.17312181e-02,3.15334201e-02,
+3.13358009e-02,3.11383903e-02,3.09411585e-02,3.07441652e-02,3.05473506e-02,
+3.03507745e-02,3.01544070e-02,2.99582779e-02,2.97623575e-02,2.95666754e-02,
+2.93712318e-02,2.91759968e-02,2.89810598e-02,2.87863314e-02,2.85918713e-02,
+2.83976793e-02,2.82037258e-02,2.80100405e-02,2.78166533e-02,2.76235044e-02,
+2.74306536e-02,2.72381008e-02,2.70458162e-02,2.68538296e-02,2.66621113e-02,
+2.64707208e-02,2.62796283e-02,2.60888636e-02,2.58983970e-02,2.57082582e-02,
+2.55184174e-02,2.53289044e-02,2.51397491e-02,2.49509215e-02,2.47624218e-02,
+2.45742798e-02,2.43864655e-02,2.41990387e-02,2.40119398e-02,2.38251984e-02,
+2.36388445e-02,2.34528482e-02,2.32672393e-02,2.30819881e-02,2.28971541e-02,
+2.27126777e-02,2.25286186e-02,2.23449469e-02,2.21616626e-02,2.19787955e-02,
+2.17963457e-02,2.16143131e-02,2.14326978e-02,2.12514997e-02,2.10707188e-02,
+2.08903849e-02,2.07104981e-02,2.05310583e-02,2.03520358e-02,2.01734900e-02,
+1.99953914e-02,1.98177397e-02,1.96405649e-02,1.94638669e-02,1.92876458e-02,
+1.91119015e-02,1.89366341e-02,1.87618434e-02,1.85875595e-02,1.84137821e-02,
+1.82404816e-02,1.80676877e-02,1.78954303e-02,1.77236795e-02,1.75524354e-02,
+1.73817277e-02,1.72115564e-02,1.70418918e-02,1.68727934e-02,1.67042315e-02,
+1.65362060e-02,1.63687468e-02,1.62018239e-02,1.60354674e-02,1.58697069e-02,
+1.57044828e-02,1.55398548e-02,1.53757930e-02,1.52123272e-02,1.50494576e-02,
+1.48871541e-02,1.47254765e-02,1.45643950e-02,1.44039094e-02,1.42440498e-02,
+1.40848160e-02,1.39262080e-02,1.37682259e-02,1.36108696e-02,1.34541392e-02,
+1.32980645e-02,1.31426156e-02,1.29878521e-02,1.28337145e-02,1.26802623e-02,
+1.25274360e-02,1.23753250e-02,1.22238696e-02,1.20730996e-02,1.19230151e-02,
+1.17736161e-02,1.16249025e-02,1.14769042e-02,1.13295913e-02,1.11829937e-02,
+1.10371113e-02,1.08919740e-02,1.07475221e-02,1.06038153e-02,1.04608536e-02,
+1.03186071e-02,1.01771057e-02,1.00363791e-02,9.89636779e-03,9.75713134e-03,
+9.61866975e-03,9.48095322e-03,9.34401155e-03,9.20787454e-03,9.07248259e-03,
+8.93789530e-03,8.80411267e-03,8.67110491e-03,8.53890181e-03,8.40750337e-03,
+8.27693939e-03,8.14718008e-03,8.01822543e-03,7.89010525e-03,7.76281953e-03,
+7.63639808e-03,7.51078129e-03,7.38602877e-03,7.26211071e-03,7.13905692e-03,
+7.01686740e-03,6.89554214e-03,6.77508116e-03,6.65551424e-03,6.53681159e-03,
+6.41900301e-03,6.30208850e-03,6.18606806e-03,6.07094169e-03,5.95673919e-03,
+5.84343076e-03,5.73104620e-03,5.61958551e-03,5.50904870e-03,5.39946556e-03,
+5.29077649e-03,5.18307090e-03,5.07628918e-03,4.97046113e-03,4.86558676e-03,
+4.76169586e-03,4.65875864e-03,4.55677509e-03,4.45580482e-03,4.35578823e-03,
+4.25678492e-03,4.15876508e-03,4.06172872e-03,3.96570563e-03,3.87069583e-03,
+3.77669930e-03,3.68371606e-03,3.59174609e-03,3.50081921e-03,3.41093540e-03,
+3.32209468e-03,3.23426723e-03,3.14751267e-03,3.06183100e-03,2.97719240e-03,
+2.89359689e-03,2.81110406e-03,2.72968411e-03,2.64933705e-03,2.57006288e-03,
+2.49189138e-03,2.41482258e-03,2.33885646e-03,2.26399302e-03,2.19023228e-03,
+2.11760402e-03,2.04610825e-03,1.97574496e-03,1.90648437e-03,1.83838606e-03,
+1.77142024e-03,1.70561671e-03,1.64097548e-03,1.57746673e-03,1.51515007e-03,
+1.45399570e-03,1.39400363e-03,1.33520365e-03,1.27759576e-03,1.22117996e-03,
+1.16595626e-03,1.11195445e-03,1.05914474e-03,1.00752711e-03,9.57161188e-04,
+9.08017159e-04,8.60095024e-04,8.13424587e-04,7.67976046e-04,7.23779202e-04,
+6.80834055e-04,6.39140606e-04,5.98728657e-04,5.59568405e-04,5.21659851e-04,
+4.85062599e-04,4.49746847e-04,4.15712595e-04,3.82989645e-04,3.51548195e-04,
+3.21418047e-04,2.92599201e-04,2.65091658e-04,2.38925219e-04,2.14070082e-04,
+1.90556049e-04,1.68383121e-04,1.47551298e-04,1.28060579e-04,1.09940767e-04,
+9.31918621e-05,7.77840614e-05,6.37471676e-05,5.11109829e-05,3.98457050e-05,
+2.99513340e-05,2.14874744e-05,1.43945217e-05,8.73208046e-06,4.47034836e-06,
+1.60932541e-06,1.78813934e-07,1.78813934e-07,1.60932541e-06,4.47034836e-06,
+8.82148743e-06,1.45435333e-05,2.18153000e-05,3.04579735e-05,4.06503677e-05,
+5.22732735e-05,6.53266907e-05,7.99298286e-05,9.60230827e-05,1.13606453e-04,
+1.32679939e-04,1.53243542e-04,1.75297260e-04,1.98900700e-04,2.24053860e-04,
+2.50697136e-04,2.78890133e-04,3.08632851e-04,3.39925289e-04,3.72767448e-04,
+4.07159328e-04,4.43100929e-04,4.80651855e-04,5.19752502e-04,5.60402870e-04,
+6.02662563e-04,6.46531582e-04,6.92009926e-04,7.39037991e-04,7.87734985e-04,
+8.37981701e-04,8.89897346e-04,9.43422318e-04,9.98616219e-04,1.05541945e-03,
+1.11383200e-03,1.17391348e-03,1.23566389e-03,1.29908323e-03,1.36417150e-03,
+1.43092871e-03,1.49935484e-03,1.56944990e-03,1.64127350e-03,1.71476603e-03,
+1.78998709e-03,1.86687708e-03,1.94549561e-03,2.02584267e-03,2.10791826e-03,
+2.19172239e-03,2.27725506e-03,2.36451626e-03,2.45356560e-03,2.54434347e-03,
+2.63690948e-03,2.73120403e-03,2.82728672e-03,2.92515755e-03,3.02481651e-03,
+3.12626362e-03,3.22949886e-03,3.33452225e-03,3.44139338e-03,3.55005264e-03,
+3.66050005e-03,3.77279520e-03,3.88693810e-03,4.00292873e-03,4.12076712e-03,
+4.24039364e-03,4.36192751e-03,4.48530912e-03,4.61059809e-03,4.73773479e-03,
+4.86671925e-03,4.99761105e-03,5.13041019e-03,5.26511669e-03,5.40167093e-03,
+5.54019213e-03,5.68062067e-03,5.82295656e-03,5.96719980e-03,6.11341000e-03,
+6.26158714e-03,6.41167164e-03,6.56366348e-03,6.71768188e-03,6.87366724e-03,
+7.03155994e-03,7.19147921e-03,7.35336542e-03,7.51727819e-03,7.68315792e-03,
+7.85100460e-03,8.02093744e-03,8.19283724e-03,8.36676359e-03,8.54265690e-03,
+8.72063637e-03,8.90070200e-03,9.08273458e-03,9.26685333e-03,9.45299864e-03,
+9.64123011e-03,9.83154774e-03,1.00238919e-02,1.02183819e-02,1.04148984e-02,
+1.06135607e-02,1.08143091e-02,1.10171437e-02,1.12220645e-02,1.14291906e-02,
+1.16383433e-02,1.18497014e-02,1.20631456e-02,1.22787952e-02,1.24965310e-02,
+1.27164125e-02,1.29384995e-02,1.31627917e-02,1.33891702e-02,1.36178136e-02,
+1.38486028e-02,1.40815377e-02,1.43167377e-02,1.45541430e-02,1.47937536e-02,
+1.50355697e-02,1.52795911e-02,1.55258775e-02,1.57743692e-02,1.60251260e-02,
+1.62781477e-02,1.65334344e-02,1.67909861e-02,1.70507431e-02,1.73128247e-02,
+1.75771713e-02,1.78438425e-02,1.81127787e-02,1.83840394e-02,1.86575651e-02,
+1.89334154e-02,1.92115903e-02,1.94921494e-02,1.97749734e-02,2.00601220e-02,
+2.03476548e-02,2.06375718e-02,2.09298134e-02,2.12244391e-02,2.15213895e-02,
+2.18207240e-02,2.21225023e-02,2.24266052e-02,2.27331519e-02,2.30420828e-02,
+2.33534575e-02,2.36672163e-02,2.39833593e-02,2.43020058e-02,2.46230364e-02,
+2.49465704e-02,2.52724886e-02,2.56009102e-02,2.59317756e-02,2.62650847e-02,
+2.66008973e-02,2.69392133e-02,2.72799730e-02,2.76232362e-02,2.79690027e-02,
+2.83172727e-02,2.86681056e-02,2.90214419e-02,2.93772817e-02,2.97356844e-02,
+3.00965905e-02,3.04600596e-02,3.08260918e-02,3.11946869e-02,3.15658450e-02,
+3.19395661e-02,3.23158503e-02,3.26947570e-02,3.30762267e-02,3.34603190e-02,
+3.38470340e-02,3.42363715e-02,3.46282721e-02,3.50228548e-02,3.54200602e-02,
+3.58198881e-02,3.62223983e-02,3.66275311e-02,3.70352864e-02,3.74457836e-02,
+3.78589034e-02,3.82747054e-02,3.86932492e-02,3.91144156e-02,3.95383239e-02,
+3.99649739e-02,4.03942466e-02,4.08263206e-02,4.12610769e-02,4.16985750e-02,
+4.21388149e-02,4.25818563e-02,4.30275798e-02,4.34761047e-02,4.39273715e-02,
+4.43814397e-02,4.48382497e-02,4.52979207e-02,4.57603335e-02,4.62255478e-02,
+4.66935635e-02,4.71644402e-02,4.76381183e-02,4.81145978e-02,4.85939384e-02,
+4.90760803e-02,4.95611429e-02,5.00490069e-02,5.05397916e-02,5.10333776e-02,
+5.15298843e-02,5.20292521e-02,5.25315404e-02,5.30366898e-02,5.35447598e-02,
+5.40557504e-02,5.45696616e-02,5.50864935e-02,5.56062460e-02,5.61289191e-02,
+5.66545725e-02,5.71832061e-02,5.77147603e-02,5.82492948e-02,5.87867498e-02,
+5.93272448e-02,5.98707199e-02,6.04171753e-02,6.09666705e-02,6.15191460e-02,
+6.20746017e-02,6.26330972e-02,6.31946325e-02,6.37592077e-02,6.43268228e-02,
+6.48975372e-02,6.54712319e-02,6.60480261e-02,6.66279197e-02,6.72108531e-02,
+6.77968860e-02,6.83859587e-02,6.89781904e-02,6.95735216e-02,7.01719522e-02,
+7.07735419e-02,7.13782310e-02,7.19860196e-02,7.25969672e-02,7.32110739e-02,
+7.38283396e-02,7.44487643e-02,7.50724077e-02,7.56991506e-02,7.63291121e-02,
+7.69622922e-02,7.75986314e-02,7.82381892e-02,7.88809657e-02,7.95269608e-02,
+8.01761746e-02,8.08286071e-02,8.14843178e-02,8.21432471e-02,8.28054547e-02,
+8.34708810e-02,8.41395855e-02,8.48116279e-02,8.54868889e-02,8.61654878e-02,
+8.68473649e-02,8.75325203e-02,8.82210135e-02,8.89128447e-02,8.96080136e-02,
+9.03064609e-02,9.10083055e-02,9.17134285e-02,9.24219489e-02,9.31338668e-02,
+9.38491225e-02,9.45677757e-02,9.52897668e-02,9.60152149e-02,9.67440009e-02,
+9.74762440e-02,9.82118249e-02,9.89509225e-02,9.96934175e-02,1.00439310e-01,
+1.01188660e-01,1.01941466e-01,1.02697730e-01,1.03457510e-01,1.04220688e-01,
+1.04987383e-01,1.05757535e-01,1.06531203e-01,1.07308388e-01,1.08089089e-01,
+1.08873248e-01,1.09660983e-01,1.10452235e-01,1.11247003e-01,1.12045348e-01,
+1.12847269e-01,1.13652706e-01,1.14461720e-01,1.15274310e-01,1.16090477e-01,
+1.16910219e-01,1.17733598e-01,1.18560553e-01,1.19391143e-01,1.20225370e-01,
+1.21063173e-01,1.21904671e-01,1.22749746e-01,1.23598516e-01,1.24450922e-01,
+1.25306964e-01,1.26166761e-01,1.27030134e-01,1.27897263e-01,1.28768086e-01,
+1.29642606e-01,1.30520821e-01,1.31402731e-01,1.32288396e-01,1.33177817e-01,
+1.34070933e-01,1.34967804e-01,1.35868430e-01,1.36772811e-01,1.37681007e-01,
+1.38592899e-01,1.39508665e-01,1.40428185e-01,1.41351461e-01,1.42278612e-01,
+1.43209517e-01,1.44144297e-01,1.45082891e-01,1.46025300e-01,1.46971583e-01,
+1.47921741e-01,1.48875713e-01,1.49833560e-01,1.50795281e-01,1.51760876e-01,
+1.52730405e-01,1.53703809e-01,1.54681087e-01,1.55662298e-01,1.56647444e-01,
+1.57636523e-01,1.58629537e-01,1.59626484e-01,1.60627365e-01,1.61632240e-01,
+1.62641048e-01,1.63653851e-01,1.64670646e-01,1.65691435e-01,1.66716218e-01,
+1.67744994e-01,1.68777764e-01,1.69814587e-01,1.70855403e-01,1.71900332e-01,
+1.72949255e-01,1.74002230e-01,1.75059259e-01,1.76120341e-01,1.77185535e-01,
+1.78254783e-01,1.79328144e-01,1.80405557e-01,1.81487143e-01,1.82572782e-01,
+1.83662593e-01,1.84756517e-01,1.85854554e-01,1.86956763e-01,1.88063085e-01,
+1.89173639e-01,1.90288305e-01,1.91407144e-01,1.92530215e-01,1.93657458e-01,
+1.94788873e-01,1.95924520e-01,1.97064400e-01,1.98208451e-01,1.99356794e-01,
+2.00509310e-01,2.01666117e-01,2.02827156e-01,2.03992486e-01,2.05162108e-01,
+2.06335962e-01,2.07514107e-01,2.08696544e-01,2.09883302e-01,2.11074352e-01,
+2.12269723e-01,2.13469416e-01,2.14673460e-01,2.15881854e-01,2.17094570e-01,
+2.18311667e-01,2.19533116e-01,2.20758915e-01,2.21989125e-01,2.23223746e-01,
+2.24462718e-01,2.25706130e-01,2.26953924e-01,2.28206158e-01,2.29462832e-01,
+2.30723917e-01,2.31989473e-01,2.33259469e-01,2.34533936e-01,2.35812873e-01,
+2.37096280e-01,2.38384157e-01,2.39676565e-01,2.40973443e-01,2.42274851e-01,
+2.43580759e-01,2.44891196e-01,2.46206164e-01,2.47525692e-01,2.48849750e-01,
+2.50178397e-01,2.51511574e-01,2.52849340e-01,2.54191697e-01,2.55538613e-01,
+2.56890178e-01,2.58246303e-01,2.59607077e-01,2.60972440e-01,2.62342453e-01,
+2.63717115e-01,2.65096426e-01,2.66480356e-01,2.67868996e-01,2.69262284e-01,
+2.70660251e-01,2.72062898e-01,2.73470253e-01,2.74882317e-01,2.76299089e-01,
+2.77720571e-01,2.79146791e-01,2.80577749e-01,2.82013476e-01,2.83453912e-01,
+2.84899145e-01,2.86349148e-01,2.87803888e-01,2.89263457e-01,2.90727794e-01,
+2.92196959e-01,2.93670923e-01,2.95149714e-01,2.96633333e-01,2.98121780e-01,
+2.99615055e-01,3.01113188e-01,3.02616209e-01,3.04124087e-01,3.05636823e-01,
+3.07154477e-01,3.08677018e-01,3.10204446e-01,3.11736792e-01,3.13274056e-01,
+3.14816236e-01,3.16363364e-01,3.17915440e-01,3.19472462e-01,3.21034461e-01,
+3.22601408e-01,3.24173331e-01,3.25750262e-01,3.27332169e-01,3.28919083e-01,
+3.30511004e-01,3.32107961e-01,3.33709925e-01,3.35316926e-01,3.36928993e-01,
+3.38546097e-01,3.40168267e-01,3.41795504e-01,3.43427807e-01,3.45065206e-01,
+3.46707702e-01,3.48355323e-01,3.50008041e-01,3.51665854e-01,3.53328824e-01,
+3.54996920e-01,3.56670171e-01,3.58348578e-01,3.60032141e-01,3.61720860e-01,
+3.63414764e-01,3.65113884e-01,3.66818190e-01,3.68527681e-01,3.70242387e-01,
+3.71962339e-01,3.73687506e-01,3.75417918e-01,3.77153575e-01,3.78894508e-01,
+3.80640686e-01,3.82392138e-01,3.84148866e-01,3.85910898e-01,3.87678206e-01,
+3.89450848e-01,3.91228795e-01,3.93012077e-01,3.94800663e-01,3.96594614e-01,
+3.98393929e-01,4.00198579e-01,4.02008623e-01,4.03824031e-01,4.05644804e-01,
+4.07471001e-01,4.09302592e-01,4.11139578e-01,4.12981987e-01,4.14829850e-01,
+4.16683108e-01,4.18541849e-01,4.20406014e-01,4.22275662e-01,4.24150795e-01,
+4.26031381e-01,4.27917480e-01,4.29809064e-01,4.31706160e-01,4.33608741e-01,
+4.35516894e-01,4.37430561e-01,4.39349741e-01,4.41274494e-01,4.43204820e-01,
+4.45140690e-01,4.47082162e-01,4.49029177e-01,4.50981826e-01,4.52940077e-01,
+4.54903901e-01,4.56873387e-01,4.58848476e-01,4.60829228e-01,4.62815583e-01,
+4.64807630e-01,4.66805339e-01,4.68808711e-01,4.70817775e-01,4.72832501e-01,
+4.74852949e-01,4.76879090e-01,4.78910983e-01,4.80948567e-01,4.82991904e-01,
+4.85040963e-01,4.87095803e-01,4.89156395e-01,4.91222739e-01,4.93294865e-01,
+4.95372802e-01,4.97456521e-01,4.99546051e-01,5.01641393e-01,5.03742576e-01,
+5.05849540e-01,5.07962346e-01,5.10081053e-01,5.12205601e-01,5.14335990e-01,
+5.16472340e-01,5.18614471e-01,5.20762563e-01,5.22916555e-01,5.25076389e-01,
+5.27242184e-01,5.29413939e-01,5.31591654e-01,5.33775270e-01,5.35964847e-01,
+5.38160384e-01,5.40361881e-01,5.42569399e-01,5.44782877e-01,5.47002435e-01,
+5.49227953e-01,5.51459432e-01,5.53697050e-01,5.55940628e-01,5.58190286e-01,
+5.60446024e-01,5.62707782e-01,5.64975619e-01,5.67249537e-01,5.69529593e-01,
+5.71815729e-01,5.74107945e-01,5.76406300e-01,5.78710794e-01,5.81021428e-01,
+5.83338141e-01,5.85661113e-01,5.87990165e-01,5.90325475e-01,5.92666864e-01,
+5.95014572e-01,5.97368360e-01,5.99728465e-01,6.02094710e-01,6.04467213e-01,
+6.06845975e-01,6.09230936e-01,6.11622214e-01,6.14019692e-01,6.16423488e-01,
+6.18833542e-01,6.21249914e-01,6.23672605e-01,6.26101553e-01,6.28536880e-01,
+6.30978465e-01,6.33426428e-01,6.35880768e-01,6.38341427e-01,6.40808463e-01,
+6.43281937e-01,6.45761728e-01,6.48247898e-01,6.50740504e-01,6.53239548e-01,
+6.55744970e-01,6.58256829e-01,6.60775125e-01,6.63299918e-01,6.65831089e-01,
+6.68368816e-01,6.70912981e-01,6.73463643e-01,6.76020801e-01,6.78584456e-01,
+6.81154609e-01,6.83731318e-01,6.86314523e-01,6.88904285e-01,6.91500664e-01,
+6.94103479e-01,6.96712971e-01,6.99329019e-01,7.01951623e-01,7.04580903e-01,
+7.07216740e-01,7.09859133e-01,7.12508261e-01,7.15163946e-01,7.17826307e-01,
+7.20495343e-01,7.23170996e-01,7.25853384e-01,7.28542447e-01,7.31238186e-01,
+7.33940601e-01,7.36649752e-01,7.39365637e-01,7.42088199e-01,7.44817555e-01,
+7.47553647e-01,7.50296533e-01,7.53046155e-01,7.55802512e-01,7.58565724e-01,
+7.61335731e-01,7.64112473e-01,7.66896129e-01,7.69686520e-01,7.72483826e-01,
+7.75287926e-01,7.78098881e-01,7.80916691e-01,7.83741415e-01,7.86572993e-01,
+7.89411485e-01,7.92256832e-01,7.95109153e-01,7.97968328e-01,8.00834477e-01,
+8.03707600e-01,8.06587577e-01,8.09474587e-01,8.12368512e-01,8.15269470e-01,
+8.18177402e-01,8.21092308e-01,8.24014246e-01,8.26943159e-01,8.29879165e-01,
+8.32822144e-01,8.35772216e-01,8.38729322e-01,8.41693461e-01,8.44664752e-01,
+8.47643077e-01,8.50628495e-01,8.53621006e-01,8.56620610e-01,8.59627366e-01,
+8.62641275e-01,8.65662336e-01,8.68690491e-01,8.71725857e-01,8.74768376e-01,
+8.77818048e-01,8.80874932e-01,8.83939028e-01,8.87010336e-01,8.90088856e-01,
+8.93174589e-01,8.96267593e-01,8.99367809e-01,9.02475297e-01,9.05590057e-01,
+9.08712089e-01,9.11841393e-01,9.14978027e-01,9.18121934e-01,9.21273172e-01,
+9.24431741e-01,9.27597642e-01,9.30770934e-01,9.33951557e-01,9.37139511e-01,
+9.40334857e-01,9.43537593e-01,9.46747720e-01,9.49965239e-01,9.53190207e-01,
+9.56422567e-01,9.59662378e-01,9.62909639e-01,9.66164351e-01,9.69426513e-01,
+9.72696126e-01,9.75973248e-01,9.79257882e-01,9.82550025e-01,9.85849679e-01,
+9.89156842e-01,9.92471516e-01,9.95793760e-01,9.99123514e-01,1.00246084e+00,
+1.00580585e+00,1.00915837e+00,1.01251841e+00,1.01588607e+00,1.01926148e+00,
+1.02264440e+00,1.02603495e+00,1.02943313e+00,1.03283906e+00,1.03625250e+00,
+1.03967369e+00,1.04310262e+00,1.04653919e+00,1.04998350e+00,1.05343544e+00,
+1.05689514e+00,1.06036258e+00,1.06383777e+00,1.06732070e+00,1.07081139e+00,
+1.07430983e+00,1.07781613e+00,1.08133018e+00,1.08485198e+00,1.08838165e+00,
+1.09191906e+00,1.09546447e+00,1.09901762e+00,1.10257852e+00,1.10614741e+00,
+1.10972416e+00,1.11330879e+00,1.11690128e+00,1.12050176e+00,1.12410998e+00,
+1.12772632e+00,1.13135052e+00,1.13498259e+00,1.13862264e+00,1.14227068e+00,
+1.14592671e+00,1.14959073e+00,1.15326273e+00,1.15694273e+00,1.16063070e+00,
+1.16432679e+00,1.16803086e+00,1.17174292e+00,1.17546320e+00,1.17919135e+00,
+1.18292761e+00,1.18667209e+00,1.19042456e+00,1.19418514e+00,1.19795394e+00,
+1.20173073e+00,1.20551562e+00,1.20930886e+00,1.21311009e+00,1.21691954e+00,
+1.22073722e+00,1.22456288e+00,1.22839689e+00,1.23223925e+00,1.23608959e+00,
+1.23994827e+00,1.24381518e+00,1.24769032e+00,1.25157368e+00,1.25546539e+00,
+1.25936532e+00,1.26327360e+00,1.26719022e+00,1.27111506e+00,1.27504826e+00,
+1.27898967e+00,1.28293955e+00,1.28689778e+00,1.29086435e+00,1.29483926e+00,
+1.29882264e+00,1.30281425e+00,1.30681443e+00,1.31082296e+00,1.31483996e+00,
+1.31886530e+00,1.32289910e+00,1.32694149e+00,1.33099222e+00,1.33505142e+00,
+1.33911920e+00,1.34319544e+00,1.34728014e+00,1.35137343e+00,1.35547519e+00,
+1.35958540e+00,1.36370432e+00,1.36783171e+00,1.37196779e+00,1.37611234e+00,
+1.38026547e+00,1.38442719e+00,1.38859761e+00,1.39277661e+00,1.39696431e+00,
+1.40116048e+00,1.40536547e+00,1.40957904e+00,1.41380131e+00,1.41803229e+00,
+1.42227197e+00,1.42652035e+00,1.43077731e+00,1.43504322e+00,1.43931770e+00,
+1.44360101e+00,1.44789314e+00,1.45219386e+00,1.45650339e+00,1.46082187e+00,
+1.46514904e+00,1.46948504e+00,1.47382987e+00,1.47818351e+00,1.48254609e+00,
+1.48691750e+00,1.49129760e+00,1.49568677e+00,1.50008464e+00,1.50449157e+00,
+1.50890732e+00,1.51333213e+00,1.51776576e+00,1.52220821e+00,1.52665985e+00,
+1.53112030e+00,1.53558969e+00,1.54006815e+00,1.54455566e+00,1.54905200e+00,
+1.55355752e+00,1.55807197e+00,1.56259549e+00,1.56712806e+00,1.57166958e+00,
+1.57622027e+00,1.58078003e+00,1.58534884e+00,1.58992684e+00,1.59451389e+00,
+1.59911013e+00,1.60371542e+00,1.60832977e+00,1.61295342e+00,1.61758614e+00,
+1.62222815e+00,1.62687922e+00,1.63153958e+00,1.63620913e+00,1.64088786e+00,
+1.64557576e+00,1.65027308e+00,1.65497947e+00,1.65969515e+00,1.66442025e+00,
+1.66915452e+00,1.67389810e+00,1.67865098e+00,1.68341315e+00,1.68818474e+00,
+1.69296551e+00,1.69775569e+00,1.70255518e+00,1.70736420e+00,1.71218252e+00,
+1.71701026e+00,1.72184730e+00,1.72669387e+00,1.73154974e+00,1.73641515e+00,
+1.74128985e+00,1.74617422e+00,1.75106788e+00,1.75597119e+00,1.76088381e+00,
+1.76580608e+00,1.77073777e+00,1.77567899e+00,1.78062987e+00,1.78559017e+00,
+1.79056001e+00,1.79553938e+00,1.80052841e+00,1.80552697e+00,1.81053519e+00,
+1.81555295e+00,1.82058048e+00,1.82561755e+00,1.83066416e+00,1.83572054e+00,
+1.84078658e+00,1.84586227e+00,1.85094762e+00,1.85604262e+00,1.86114740e+00,
+1.86626196e+00,1.87138629e+00,1.87652016e+00,1.88166392e+00,1.88681746e+00,
+1.89198065e+00,1.89715374e+00,1.90233660e+00,1.90752923e+00,1.91273165e+00,
+1.91794395e+00,1.92316616e+00,1.92839813e+00,1.93364000e+00,1.93889177e+00,
+1.94415331e+00,1.94942486e+00,1.95470631e+00,1.95999765e+00,1.96529889e+00,
+1.97061014e+00,1.97593129e+00,1.98126245e+00,1.98660350e+00,1.99195457e+00,
+1.99731565e+00,
+},{
+1.83761995e-02,5.11546284e-02,7.89537504e-02,1.02145880e-01,1.21090941e-01,
+1.36136428e-01,1.47617444e-01,1.55856639e-01,1.61164328e-01,1.63838327e-01,
+1.64164111e-01,1.62414715e-01,1.58850744e-01,1.53720438e-01,1.47259593e-01,
+1.39691606e-01,1.31227449e-01,1.22065708e-01,1.12392537e-01,1.02381684e-01,
+9.21945050e-02,8.19799080e-02,7.18744323e-02,6.20021708e-02,5.24748266e-02,
+4.33916859e-02,3.48396190e-02,2.68930998e-02,1.96141750e-02,1.30524915e-02,
+7.24527938e-03,2.21736077e-03,-2.01885309e-03,-5.46336221e-03,-8.12857784e-03,
+-1.00393211e-02,-1.12328250e-02,-1.17587317e-02,-1.16790961e-02,-1.10683823e-02,
+-1.00134658e-02,-8.61363299e-03,-6.98058074e-03,-5.23841707e-03,-3.52366036e-03,
+-1.98524049e-03,-7.84497242e-04,-9.51816546e-05,-1.03455510e-04,-1.00789126e-03,
+-3.01947235e-03,-6.36159256e-03,-1.12700574e-02,-1.79930814e-02,-2.67912932e-02,
+-3.79377268e-02,-5.17178327e-02,-6.84294701e-02,-8.83829072e-02,-1.11900821e-01,
+-1.39318302e-01,-1.70982867e-01,-2.07254410e-01,-2.48505279e-01,5.11546284e-02,
+1.42401367e-01,2.19786987e-01,2.84347951e-01,3.37086141e-01,3.78968924e-01,
+4.10929084e-01,4.33864951e-01,4.48640138e-01,4.56083894e-01,4.56990808e-01,
+4.52120900e-01,4.42199737e-01,4.27918285e-01,4.09932941e-01,3.88865590e-01,
+3.65303576e-01,3.39799613e-01,3.12871993e-01,2.85004348e-01,2.56645858e-01,
+2.28211045e-01,2.00079978e-01,1.72598138e-01,1.46076456e-01,1.20791323e-01,
+9.69845727e-02,7.48634934e-02,5.46008348e-02,3.63347903e-02,2.01689992e-02,
+6.17256388e-03,-5.61996922e-03,-1.52086001e-02,-2.26278771e-02,-2.79468969e-02,
+-3.12693045e-02,-3.27332951e-02,-3.25116068e-02,-3.08115371e-02,-2.78749205e-02,
+-2.39781439e-02,-1.94321461e-02,-1.45824095e-02,-9.80896689e-03,-5.52640017e-03,
+-2.18383898e-03,-2.64961331e-04,-2.87993607e-04,-2.80571100e-03,-8.40543676e-03,
+-1.77090429e-02,-3.13729495e-02,-5.00881262e-02,-7.45800883e-02,-1.05608903e-01,
+-1.43969178e-01,-1.90490097e-01,-2.46035337e-01,-3.11503202e-01,-3.87826443e-01,
+-4.75972474e-01,-5.76943159e-01,-6.91774964e-01,7.89537504e-02,2.19786987e-01,
+3.39226514e-01,4.38872039e-01,5.20269871e-01,5.84913194e-01,6.34241581e-01,
+6.69641495e-01,6.92446053e-01,7.03934968e-01,7.05334723e-01,6.97818398e-01,
+6.82505727e-01,6.60463274e-01,6.32704079e-01,6.00188017e-01,5.63821614e-01,
+5.24457991e-01,4.82896984e-01,4.39885169e-01,3.96115720e-01,3.52228492e-01,
+3.08810085e-01,2.66393691e-01,2.25459248e-01,1.86433330e-01,1.49689198e-01,
+1.15546793e-01,8.42727348e-02,5.60803153e-02,3.11295018e-02,9.52694006e-03,
+-8.67404602e-03,-2.34734565e-02,-3.49246152e-02,-4.31341641e-02,-4.82620783e-02,
+-5.05216494e-02,-5.01794927e-02,-4.75555472e-02,-4.30230759e-02,-3.70086618e-02,
+-2.99922172e-02,-2.25069728e-02,-1.51394848e-02,-8.52962956e-03,-3.37060960e-03,
+-4.08950087e-04,-4.44498874e-04,-4.33042739e-03,-1.29732294e-02,-2.73327231e-02,
+-4.84220497e-02,-7.73076713e-02,-1.15109377e-01,-1.63000286e-01,-2.22206801e-01,
+-2.94008732e-01,-3.79739106e-01,-4.80784327e-01,-5.98584175e-01,-7.34631658e-01,
+-8.90473187e-01,-1.06770837e+00,1.02145880e-01,2.84347951e-01,4.38872039e-01,
+5.67787766e-01,6.73095703e-01,7.56727457e-01,8.20545793e-01,8.66344213e-01,
+8.95847440e-01,9.10711169e-01,9.12522078e-01,9.02797818e-01,8.82987201e-01,
+8.54469895e-01,8.18556666e-01,7.76489258e-01,7.29440451e-01,6.78514004e-01,
+6.24744773e-01,5.69098473e-01,5.12472034e-01,4.55693245e-01,3.99520963e-01,
+3.44645053e-01,2.91686386e-01,2.41196856e-01,1.93659395e-01,1.49487883e-01,
+1.09027289e-01,7.25535303e-02,4.02735844e-02,1.23254145e-02,-1.12219891e-02,
+-3.03686261e-02,-4.51834835e-02,-5.58045357e-02,-6.24387413e-02,-6.53620437e-02,
+-6.49193823e-02,-6.15246706e-02,-5.56608140e-02,-4.78797071e-02,-3.88022289e-02,
+-2.91182455e-02,-1.95866060e-02,-1.10351508e-02,-4.36070329e-03,-5.29076438e-04,
+-5.75067417e-04,-5.60246129e-03,-1.67840291e-02,-3.53615284e-02,-6.26457036e-02,
+-1.00016281e-01,-1.48921981e-01,-2.10880518e-01,-2.87478566e-01,-3.80371809e-01,
+-4.91284907e-01,-6.22011483e-01,-7.74414241e-01,-9.50424790e-01,-1.15204370e+00,
+-1.38134050e+00,1.21090941e-01,3.37086141e-01,5.20269871e-01,6.73095703e-01,
+7.97935128e-01,8.97078216e-01,9.72732902e-01,1.02702558e+00,1.06200087e+00,
+1.07962132e+00,1.08176816e+00,1.07024026e+00,1.04675543e+00,1.01294899e+00,
+9.70374882e-01,9.20505166e-01,8.64730179e-01,8.04358423e-01,7.40616560e-01,
+6.74649537e-01,6.07520521e-01,5.40210962e-01,4.73620355e-01,4.08566564e-01,
+3.45785648e-01,2.85931796e-01,2.29577526e-01,1.77213505e-01,1.29248649e-01,
+8.60100836e-02,4.77431491e-02,1.46114165e-02,-1.33033386e-02,-3.60011160e-02,
+-5.35636954e-02,-6.61546364e-02,-7.40192905e-02,-7.74847865e-02,-7.69600198e-02,
+-7.29356855e-02,-6.59842640e-02,-5.67599870e-02,-4.59989049e-02,-3.45188230e-02,
+-2.32193470e-02,-1.30818468e-02,-5.16948570e-03,-6.27204543e-04,-6.81725563e-04,
+-6.64155278e-03,-1.98969729e-02,-4.19200510e-02,-7.42646381e-02,-1.18566364e-01,
+-1.76542640e-01,-2.49992654e-01,-3.40797395e-01,-4.50919598e-01,-5.82403839e-01,
+-7.37376392e-01,-9.18045342e-01,-1.12670064e+00,-1.36571395e+00,-1.63753867e+00,
+1.36136428e-01,3.78968924e-01,5.84913194e-01,7.56727457e-01,8.97078216e-01,
+1.00853968e+00,1.09359443e+00,1.15463305e+00,1.19395387e+00,1.21376371e+00,
+1.21617723e+00,1.20321715e+00,1.17681420e+00,1.13880742e+00,1.09094346e+00,
+1.03487754e+00,9.72172499e-01,9.04299557e-01,8.32637787e-01,7.58474410e-01,
+6.83004677e-01,6.07331872e-01,5.32467425e-01,4.59330767e-01,3.88749331e-01,
+3.21458668e-01,2.58102417e-01,1.99232191e-01,1.45307720e-01,9.66967940e-02,
+5.36752120e-02,1.64268780e-02,-1.49562713e-02,-4.04742360e-02,-6.02189563e-02,
+-7.43743181e-02,-8.32161531e-02,-8.71122330e-02,-8.65222663e-02,-8.19979087e-02,
+-7.41827711e-02,-6.38123900e-02,-5.17142452e-02,-3.88077721e-02,-2.61043385e-02,
+-1.47072598e-02,-5.81179187e-03,-7.05134415e-04,-7.66429584e-04,-7.46676279e-03,
+-2.23691612e-02,-4.71285954e-02,-8.34919810e-02,-1.33298174e-01,-1.98477969e-01,
+-2.81054109e-01,-3.83141309e-01,-5.06946146e-01,-6.54767215e-01,-8.28994989e-01,
+-1.03211200e+00,-1.26669264e+00,-1.53540325e+00,-1.84100199e+00,1.47617444e-01,
+4.10929084e-01,6.34241581e-01,8.20545793e-01,9.72732902e-01,1.09359443e+00,
+1.18582237e+00,1.25200856e+00,1.29464555e+00,1.31612599e+00,1.31874299e+00,
+1.30469000e+00,1.27606034e+00,1.23484826e+00,1.18294775e+00,1.12215340e+00,
+1.05416024e+00,9.80563283e-01,9.02857900e-01,8.22440028e-01,7.40605593e-01,
+6.58550978e-01,5.77372849e-01,4.98068243e-01,4.21534330e-01,3.48568767e-01,
+2.79869378e-01,2.16034353e-01,1.57562196e-01,1.04851671e-01,5.82018904e-02,
+1.78122316e-02,-1.62176024e-02,-4.38876115e-02,-6.52974993e-02,-8.06466490e-02,
+-9.02341530e-02,-9.44588035e-02,-9.38190818e-02,-8.89131725e-02,-8.04389417e-02,
+-6.91939816e-02,-5.60755432e-02,-4.20806073e-02,-2.83058360e-02,-1.59475897e-02,
+-6.30192691e-03,-7.64601573e-04,-8.31066107e-04,-8.09646863e-03,-2.42556557e-02,
+-5.11031672e-02,-9.05332416e-02,-1.44539818e-01,-2.15216532e-01,-3.04756701e-01,
+-4.15453345e-01,-5.49699247e-01,-7.09986746e-01,-8.98907959e-01,-1.11915481e+00,
+-1.37351859e+00,-1.66489077e+00,-1.99626207e+00,1.55856639e-01,4.33864951e-01,
+6.69641495e-01,8.66344213e-01,1.02702558e+00,1.15463305e+00,1.25200856e+00,
+1.32188892e+00,1.36690557e+00,1.38958502e+00,1.39234817e+00,1.37751067e+00,
+1.34728312e+00,1.30377078e+00,1.24897349e+00,1.18478596e+00,1.11299777e+00,
+1.03529298e+00,9.53250587e-01,8.68344188e-01,7.81942189e-01,6.95307732e-01,
+6.09598696e-01,5.25867701e-01,4.45062101e-01,3.68023992e-01,2.95490175e-01,
+2.28092223e-01,1.66356459e-01,1.10703930e-01,6.14504032e-02,1.88064147e-02,
+-1.71227809e-02,-4.63371836e-02,-6.89420477e-02,-8.51479098e-02,-9.52705368e-02,
+-9.97309834e-02,-9.90555584e-02,-9.38758254e-02,-8.49286094e-02,-7.30560124e-02,
+-5.92053793e-02,-4.44293208e-02,-2.98857167e-02,-1.68376993e-02,-6.65366650e-03,
+-8.07277509e-04,-8.77451734e-04,-8.54836963e-03,-2.56094746e-02,-5.39554693e-02,
+-9.55863222e-02,-1.52607247e-01,-2.27228746e-01,-3.21766585e-01,-4.38641727e-01,
+-5.80380440e-01,-7.49614358e-01,-9.49080169e-01,-1.18161988e+00,-1.45018101e+00,
+-1.75781596e+00,-2.10768270e+00,1.61164328e-01,4.48640138e-01,6.92446053e-01,
+8.95847440e-01,1.06200087e+00,1.19395387e+00,1.29464555e+00,1.36690557e+00,
+1.41345537e+00,1.43690717e+00,1.43976438e+00,1.42442167e+00,1.39316475e+00,
+1.34817052e+00,1.29150712e+00,1.22513378e+00,1.15090084e+00,1.07054973e+00,
+9.85713422e-01,8.97915542e-01,8.08571100e-01,7.18986332e-01,6.30358517e-01,
+5.43776095e-01,4.60218638e-01,3.80557001e-01,3.05553049e-01,2.35859871e-01,
+1.72021717e-01,1.14473939e-01,6.35430887e-02,1.94468647e-02,-1.77058950e-02,
+-4.79151905e-02,-7.12898597e-02,-8.80476087e-02,-9.85149592e-02,-1.03127308e-01,
+-1.02428883e-01,-9.70727503e-02,-8.78208429e-02,-7.55439252e-02,-6.12216108e-02,
+-4.59423549e-02,-3.09034698e-02,-1.74111035e-02,-6.88025635e-03,-8.34769278e-04,
+-9.07333277e-04,-8.83948337e-03,-2.64816023e-02,-5.57929166e-02,-9.88415033e-02,
+-1.57804266e-01,-2.34966993e-01,-3.32724303e-01,-4.53579605e-01,-6.00145221e-01,
+-7.75142372e-01,-9.81400967e-01,-1.22185981e+00,-1.49956679e+00,-1.81767821e+00,
+-2.17945957e+00,1.63838327e-01,4.56083894e-01,7.03934968e-01,9.10711169e-01,
+1.07962132e+00,1.21376371e+00,1.31612599e+00,1.38958502e+00,1.43690717e+00,
+1.46074808e+00,1.46365273e+00,1.44805539e+00,1.41627979e+00,1.37053907e+00,
+1.31293559e+00,1.24546087e+00,1.16999626e+00,1.08831215e+00,1.00206816e+00,
+9.12813544e-01,8.21986794e-01,7.30915606e-01,6.40817285e-01,5.52798271e-01,
+4.67854500e-01,3.86871129e-01,3.10622722e-01,2.39773214e-01,1.74875855e-01,
+1.16373263e-01,6.45973831e-02,1.97695233e-02,-1.79996677e-02,-4.87101898e-02,
+-7.24726915e-02,-8.95084739e-02,-1.00149505e-01,-1.04838379e-01,-1.04128361e-01,
+-9.86833647e-02,-8.92779529e-02,-7.67973363e-02,-6.22373857e-02,-4.67046238e-02,
+-3.14162150e-02,-1.76999867e-02,-6.99441181e-03,-8.48619617e-04,-9.22387524e-04,
+-8.98614712e-03,-2.69209798e-02,-5.67186214e-02,-1.00481458e-01,-1.60422534e-01,
+-2.38865525e-01,-3.38244796e-01,-4.61105317e-01,-6.10102713e-01,-7.88003385e-01,
+-9.97684181e-01,-1.24213266e+00,-1.52444732e+00,-1.84783673e+00,-2.21562076e+00,
+1.64164111e-01,4.56990808e-01,7.05334723e-01,9.12522078e-01,1.08176816e+00,
+1.21617723e+00,1.31874299e+00,1.39234817e+00,1.43976438e+00,1.46365273e+00,
+1.46656311e+00,1.45093477e+00,1.41909599e+00,1.37326431e+00,1.31554627e+00,
+1.24793744e+00,1.17232275e+00,1.09047616e+00,1.00406075e+00,9.14628625e-01,
+8.23621213e-01,7.32369006e-01,6.42091513e-01,5.53897500e-01,4.68784809e-01,
+3.87640387e-01,3.11240375e-01,2.40249991e-01,1.75223589e-01,1.16604663e-01,
+6.47258312e-02,1.98088326e-02,-1.80354603e-02,-4.88070473e-02,-7.26168007e-02,
+-8.96864608e-02,-1.00348644e-01,-1.05046846e-01,-1.04335412e-01,-9.88795906e-02,
+-8.94554779e-02,-7.69500434e-02,-6.23611435e-02,-4.67974916e-02,-3.14786844e-02,
+-1.77351814e-02,-7.00832019e-03,-8.50306998e-04,-9.24221647e-04,-9.00401548e-03,
+-2.69745104e-02,-5.68314046e-02,-1.00681260e-01,-1.60741523e-01,-2.39340499e-01,
+-3.38917375e-01,-4.62022185e-01,-6.11315906e-01,-7.89570272e-01,-9.99668002e-01,
+-1.24460268e+00,-1.52747858e+00,-1.85151112e+00,-2.22002625e+00,1.62414715e-01,
+4.52120900e-01,6.97818398e-01,9.02797818e-01,1.07024026e+00,1.20321715e+00,
+1.30469000e+00,1.37751067e+00,1.42442167e+00,1.44805539e+00,1.45093477e+00,
+1.43547297e+00,1.40397358e+00,1.35863018e+00,1.30152726e+00,1.23463893e+00,
+1.15982997e+00,1.07885563e+00,9.93360996e-01,9.04881954e-01,8.14844370e-01,
+7.24564552e-01,6.35249138e-01,5.47994912e-01,4.63789225e-01,3.83509517e-01,
+3.07923675e-01,2.37689778e-01,1.73356339e-01,1.15362078e-01,6.40360862e-02,
+1.95977427e-02,-1.78432651e-02,-4.82869372e-02,-7.18429610e-02,-8.87307227e-02,
+-9.92792845e-02,-1.03927419e-01,-1.03223570e-01,-9.78258848e-02,-8.85021985e-02,
+-7.61300325e-02,-6.16965964e-02,-4.62987982e-02,-3.11432332e-02,-1.75461881e-02,
+-6.93363650e-03,-8.41245812e-04,-9.14372737e-04,-8.90806410e-03,-2.66870596e-02,
+-5.62257841e-02,-9.96083543e-02,-1.59028590e-01,-2.36789986e-01,-3.35305721e-01,
+-4.57098693e-01,-6.04801476e-01,-7.81156301e-01,-9.89015102e-01,-1.23133957e+00,
+-1.51120102e+00,-1.83178055e+00,-2.19636869e+00,1.58850744e-01,4.42199737e-01,
+6.82505727e-01,8.82987201e-01,1.04675543e+00,1.17681420e+00,1.27606034e+00,
+1.34728312e+00,1.39316475e+00,1.41627979e+00,1.41909599e+00,1.40397358e+00,
+1.37316525e+00,1.32881701e+00,1.27296698e+00,1.20754647e+00,1.13437915e+00,
+1.05518162e+00,9.71563101e-01,8.85025620e-01,7.96963751e-01,7.08665013e-01,
+6.21309459e-01,5.35969973e-01,4.53612030e-01,3.75093937e-01,3.01166713e-01,
+2.32474014e-01,1.69552267e-01,1.12830617e-01,6.26309067e-02,1.91676971e-02,
+-1.74517203e-02,-4.72273491e-02,-7.02664703e-02,-8.67836475e-02,-9.71007422e-02,
+-1.01646878e-01,-1.00958474e-01,-9.56792384e-02,-8.65601450e-02,-7.44594634e-02,
+-6.03427477e-02,-4.52828370e-02,-3.04598380e-02,-1.71611607e-02,-6.78148726e-03,
+-8.22785834e-04,-8.94308148e-04,-8.71258974e-03,-2.61014495e-02,-5.49919866e-02,
+-9.74225923e-02,-1.55538931e-01,-2.31593952e-01,-3.27947915e-01,-4.47068304e-01,
+-5.91529906e-01,-7.64014900e-01,-9.67312574e-01,-1.20431960e+00,-1.47803986e+00,
+-1.79158473e+00,-2.14817262e+00,1.53720438e-01,4.27918285e-01,6.60463274e-01,
+8.54469895e-01,1.01294899e+00,1.13880742e+00,1.23484826e+00,1.30377078e+00,
+1.34817052e+00,1.37053907e+00,1.37326431e+00,1.35863018e+00,1.32881701e+00,
+1.28590095e+00,1.23185480e+00,1.16854703e+00,1.09774280e+00,1.02110302e+00,
+9.40185130e-01,8.56442451e-01,7.71224678e-01,6.85777664e-01,6.01243436e-01,
+5.18660069e-01,4.38961983e-01,3.62979770e-01,2.91440099e-01,2.24965945e-01,
+1.64076343e-01,1.09186597e-01,6.06081523e-02,1.85486488e-02,-1.68880932e-02,
+-4.57020737e-02,-6.79971129e-02,-8.39808509e-02,-9.39647332e-02,-9.83640477e-02,
+-9.76978764e-02,-9.25891399e-02,-8.37645605e-02,-7.20546916e-02,-5.83938956e-02,
+-4.38203625e-02,-2.94760950e-02,-1.66069176e-02,-6.56246999e-03,-7.96212815e-04,
+-8.65425216e-04,-8.43120459e-03,-2.52584666e-02,-5.32159433e-02,-9.42761898e-02,
+-1.50515586e-01,-2.24114299e-01,-3.17356378e-01,-4.32629585e-01,-5.72425663e-01,
+-7.39339948e-01,-9.36071873e-01,-1.16542435e+00,-1.43030453e+00,-1.73372293e+00,
+-2.07879424e+00,1.47259593e-01,4.09932941e-01,6.32704079e-01,8.18556666e-01,
+9.70374882e-01,1.09094346e+00,1.18294775e+00,1.24897349e+00,1.29150712e+00,
+1.31293559e+00,1.31554627e+00,1.30152726e+00,1.27296698e+00,1.23185480e+00,
+1.18008006e+00,1.11943316e+00,1.05160487e+00,9.78186250e-01,9.00669277e-01,
+8.20446312e-01,7.38810241e-01,6.56954527e-01,5.75973213e-01,4.96860862e-01,
+4.20512497e-01,3.47723782e-01,2.79190928e-01,2.15510651e-01,1.57180235e-01,
+1.04597501e-01,5.80607988e-02,1.77690517e-02,-1.61782894e-02,-4.37812246e-02,
+-6.51392043e-02,-8.04511458e-02,-9.00154114e-02,-9.42298248e-02,-9.35916528e-02,
+-8.86976346e-02,-8.02439526e-02,-6.90262467e-02,-5.59396110e-02,-4.19786014e-02,
+-2.82372199e-02,-1.59089305e-02,-6.28664996e-03,-7.62748125e-04,-8.29051482e-04,
+-8.07684194e-03,-2.41968557e-02,-5.09792864e-02,-9.03137773e-02,-1.44189432e-01,
+-2.14694813e-01,-3.04017931e-01,-4.14446235e-01,-5.48366666e-01,-7.08265603e-01,
+-8.96728873e-01,-1.11644173e+00,-1.37018907e+00,-1.66085482e+00,-1.99142289e+00,
+1.39691606e-01,3.88865590e-01,6.00188017e-01,7.76489258e-01,9.20505166e-01,
+1.03487754e+00,1.12215340e+00,1.18478596e+00,1.22513378e+00,1.24546087e+00,
+1.24793744e+00,1.23463893e+00,1.20754647e+00,1.16854703e+00,1.11943316e+00,
+1.06190312e+00,9.97560561e-01,9.27915096e-01,8.54381919e-01,7.78281808e-01,
+7.00841188e-01,6.23192251e-01,5.46372712e-01,4.71326083e-01,3.98901433e-01,
+3.29853505e-01,2.64842689e-01,2.04435095e-01,1.49102405e-01,9.92220044e-02,
+5.50769307e-02,1.68558620e-02,-1.53468512e-02,-4.15312089e-02,-6.17915615e-02,
+-7.63165876e-02,-8.53893235e-02,-8.93871486e-02,-8.87817740e-02,-8.41392651e-02,
+-7.61200413e-02,-6.54788315e-02,-5.30647524e-02,-3.98212261e-02,-2.67860480e-02,
+-1.50913363e-02,-5.96356532e-03,-7.23548816e-04,-7.86444754e-04,-7.66175566e-03,
+-2.29533277e-02,-4.83593494e-02,-8.56723562e-02,-1.36779219e-01,-2.03661174e-01,
+-2.88393795e-01,-3.93146932e-01,-5.20184934e-01,-6.71866298e-01,-8.50644052e-01,
+-1.05906546e+00,-1.29977202e+00,-1.57549989e+00,-1.88907933e+00,1.31227449e-01,
+3.65303576e-01,5.63821614e-01,7.29440451e-01,8.64730179e-01,9.72172499e-01,
+1.05416024e+00,1.11299777e+00,1.15090084e+00,1.16999626e+00,1.17232275e+00,
+1.15982997e+00,1.13437915e+00,1.09774280e+00,1.05160487e+00,9.97560561e-01,
+9.37116683e-01,8.71691167e-01,8.02613437e-01,7.31124341e-01,6.58375978e-01,
+5.85431933e-01,5.13267040e-01,4.42767620e-01,3.74731302e-01,3.09867114e-01,
+2.48795420e-01,1.92048028e-01,1.40068039e-01,9.32099745e-02,5.17397225e-02,
+1.58345364e-02,-1.44169591e-02,-3.90147641e-02,-5.80475032e-02,-7.16924369e-02,
+-8.02154392e-02,-8.39710236e-02,-8.34023356e-02,-7.90411234e-02,-7.15077966e-02,
+-6.15113601e-02,-4.98494655e-02,-3.74083929e-02,-2.51630340e-02,-1.41769266e-02,
+-5.60222287e-03,-6.79707737e-04,-7.38792703e-04,-7.19751650e-03,-2.15625446e-02,
+-4.54291739e-02,-8.04813206e-02,-1.28491536e-01,-1.91321000e-01,-2.70919502e-01,
+-3.69325489e-01,-4.88666028e-01,-6.31156743e-01,-7.99102068e-01,-9.94894803e-01,
+-1.22101665e+00,-1.48003769e+00,-1.77461672e+00,1.22065708e-01,3.39799613e-01,
+5.24457991e-01,6.78514004e-01,8.04358423e-01,9.04299557e-01,9.80563283e-01,
+1.03529298e+00,1.07054973e+00,1.08831215e+00,1.09047616e+00,1.07885563e+00,
+1.05518162e+00,1.02110302e+00,9.78186250e-01,9.27915096e-01,8.71691167e-01,
+8.10833395e-01,7.46578395e-01,6.80080354e-01,6.12410963e-01,5.44559538e-01,
+4.77432936e-01,4.11855459e-01,3.48569155e-01,2.88233489e-01,2.31425583e-01,
+1.78640038e-01,1.30289078e-01,8.67024511e-02,4.81274761e-02,1.47290360e-02,
+-1.34104285e-02,-3.62909175e-02,-5.39948717e-02,-6.66871741e-02,-7.46151358e-02,
+-7.81085268e-02,-7.75795355e-02,-7.35228062e-02,-6.65154234e-02,-5.72168976e-02,
+-4.63691875e-02,-3.47966962e-02,-2.34062579e-02,-1.31871533e-02,-5.21109952e-03,
+-6.32253417e-04,-6.87213324e-04,-6.69501629e-03,-2.00571399e-02,-4.22575027e-02,
+-7.48624578e-02,-1.19520806e-01,-1.77963778e-01,-2.52005070e-01,-3.43540758e-01,
+-4.54549432e-01,-5.87092102e-01,-7.43312120e-01,-9.25435483e-01,-1.13577044e+00,
+-1.37670767e+00,-1.65072060e+00,1.12392537e-01,3.12871993e-01,4.82896984e-01,
+6.24744773e-01,7.40616560e-01,8.32637787e-01,9.02857900e-01,9.53250587e-01,
+9.85713422e-01,1.00206816e+00,1.00406075e+00,9.93360996e-01,9.71563101e-01,
+9.40185130e-01,9.00669277e-01,8.54381919e-01,8.02613437e-01,7.46578395e-01,
+6.87415302e-01,6.26186967e-01,5.63880086e-01,5.01405597e-01,4.39598471e-01,
+3.79217744e-01,3.20946574e-01,2.65392274e-01,2.13086128e-01,1.64483607e-01,
+1.19964242e-01,7.98316598e-02,4.43135835e-02,1.35618253e-02,-1.23477103e-02,
+-3.34150232e-02,-4.97160181e-02,-6.14025071e-02,-6.87022135e-02,-7.19187707e-02,
+-7.14316964e-02,-6.76964521e-02,-6.12443686e-02,-5.26827089e-02,-4.26946320e-02,
+-3.20392102e-02,-2.15514153e-02,-1.21421292e-02,-4.79814271e-03,-5.82150125e-04,
+-6.32754702e-04,-6.16446603e-03,-1.84677001e-02,-3.89087796e-02,-6.89299330e-02,
+-1.10049307e-01,-1.63860932e-01,-2.32034758e-01,-3.16316664e-01,-4.18528378e-01,
+-5.40567636e-01,-6.84407890e-01,-8.52098763e-01,-1.04576564e+00,-1.26760972e+00,
+-1.51990819e+00,1.02381684e-01,2.85004348e-01,4.39885169e-01,5.69098473e-01,
+6.74649537e-01,7.58474410e-01,8.22440028e-01,8.68344188e-01,8.97915542e-01,
+9.12813544e-01,9.14628625e-01,9.04881954e-01,8.85025620e-01,8.56442451e-01,
+8.20446312e-01,7.78281808e-01,7.31124341e-01,6.80080354e-01,6.26186967e-01,
+5.70412278e-01,5.13655066e-01,4.56745207e-01,4.00443256e-01,3.45440656e-01,
+2.92359740e-01,2.41753668e-01,1.94106460e-01,1.49832979e-01,1.09278977e-01,
+7.27210268e-02,4.03665565e-02,1.23538673e-02,-1.12478957e-02,-3.04387324e-02,
+-4.52877916e-02,-5.59333637e-02,-6.25828803e-02,-6.55129328e-02,-6.50692508e-02,
+-6.16667010e-02,-5.57893068e-02,-4.79902402e-02,-3.88918072e-02,-2.91854665e-02,
+-1.96318217e-02,-1.10606253e-02,-4.37077042e-03,-5.30297810e-04,-5.76394959e-04,
+-5.61539456e-03,-1.68227740e-02,-3.54431607e-02,-6.27903193e-02,-1.00247167e-01,
+-1.49265766e-01,-2.11367339e-01,-2.88142204e-01,-3.81249905e-01,-4.92419034e-01,
+-6.23447418e-01,-7.76202023e-01,-9.52618837e-01,-1.15470314e+00,-1.38452935e+00,
+9.21945050e-02,2.56645858e-01,3.96115720e-01,5.12472034e-01,6.07520521e-01,
+6.83004677e-01,7.40605593e-01,7.81942189e-01,8.08571100e-01,8.21986794e-01,
+8.23621213e-01,8.14844370e-01,7.96963751e-01,7.71224678e-01,7.38810241e-01,
+7.00841188e-01,6.58375978e-01,6.12410963e-01,5.63880086e-01,5.13655066e-01,
+4.62545365e-01,4.11298156e-01,3.60598356e-01,3.11068624e-01,2.63269365e-01,
+2.17698693e-01,1.74792469e-01,1.34924307e-01,9.84055027e-02,6.54851347e-02,
+3.63500006e-02,1.11246333e-02,-1.01287067e-02,-2.74100173e-02,-4.07815650e-02,
+-5.03678806e-02,-5.63557595e-02,-5.89942671e-02,-5.85947298e-02,-5.55307381e-02,
+-5.02381586e-02,-4.32151146e-02,-3.50219943e-02,-2.62814537e-02,-1.76784173e-02,
+-9.96007118e-03,-3.93586978e-03,-4.77532099e-04,-5.19042544e-04,-5.05665131e-03,
+-1.51488744e-02,-3.19164954e-02,-5.65425567e-02,-9.02723745e-02,-1.34413525e-01,
+-1.90335855e-01,-2.59471476e-01,-3.43314767e-01,-4.43422347e-01,-5.61413169e-01,
+-6.98968351e-01,-8.57831359e-01,-1.03980792e+00,-1.24676597e+00,8.19799080e-02,
+2.28211045e-01,3.52228492e-01,4.55693245e-01,5.40210962e-01,6.07331872e-01,
+6.58550978e-01,6.95307732e-01,7.18986332e-01,7.30915606e-01,7.32369006e-01,
+7.24564552e-01,7.08665013e-01,6.85777664e-01,6.56954527e-01,6.23192251e-01,
+5.85431933e-01,5.44559538e-01,5.01405597e-01,4.56745207e-01,4.11298156e-01,
+3.65728796e-01,3.20646226e-01,2.76604116e-01,2.34100714e-01,1.93579003e-01,
+1.55426532e-01,1.19975507e-01,8.75027701e-02,5.82297780e-02,3.23226415e-02,
+9.89209116e-03,-9.00650769e-03,-2.43731532e-02,-3.62632163e-02,-4.47874255e-02,
+-5.01118824e-02,-5.24580590e-02,-5.21027893e-02,-4.93782721e-02,-4.46720757e-02,
+-3.84271406e-02,-3.11417691e-02,-2.33696271e-02,-1.57197546e-02,-8.85655545e-03,
+-3.49979918e-03,-4.24624421e-04,-4.61535761e-04,-4.49640490e-03,-1.34704709e-02,
+-2.83803400e-02,-5.02779856e-02,-8.02707449e-02,-1.19521327e-01,-1.69247806e-01,
+-2.30723619e-01,-3.05277586e-01,-3.94293845e-01,-4.99211997e-01,-6.21526897e-01,
+-7.62788832e-01,-9.24603462e-01,-1.10863185e+00,7.18744323e-02,2.00079978e-01,
+3.08810085e-01,3.99520963e-01,4.73620355e-01,5.32467425e-01,5.77372849e-01,
+6.09598696e-01,6.30358517e-01,6.40817285e-01,6.42091513e-01,6.35249138e-01,
+6.21309459e-01,6.01243436e-01,5.75973213e-01,5.46372712e-01,5.13267040e-01,
+4.77432936e-01,4.39598471e-01,4.00443256e-01,3.60598356e-01,3.20646226e-01,
+2.81120896e-01,2.42507741e-01,2.05243647e-01,1.69716954e-01,1.36267453e-01,
+1.05186395e-01,7.67164975e-02,5.10519259e-02,2.83383019e-02,8.67271516e-03,
+-7.89629575e-03,-2.13687308e-02,-3.17931287e-02,-3.92665789e-02,-4.39347029e-02,
+-4.59916703e-02,-4.56801951e-02,-4.32915203e-02,-3.91654484e-02,-3.36903147e-02,
+-2.73029916e-02,-2.04889067e-02,-1.37820160e-02,-7.76482746e-03,-3.06838681e-03,
+-3.72281938e-04,-4.04643273e-04,-3.94214317e-03,-1.18099963e-02,-2.48819590e-02,
+-4.40803282e-02,-7.03759491e-02,-1.04788199e-01,-1.48385003e-01,-2.02282831e-01,
+-2.67646700e-01,-3.45690131e-01,-4.37675238e-01,-5.44912636e-01,-6.68761551e-01,
+-8.10629666e-01,-9.71973240e-01,6.20021708e-02,1.72598138e-01,2.66393691e-01,
+3.44645053e-01,4.08566564e-01,4.59330767e-01,4.98068243e-01,5.25867701e-01,
+5.43776095e-01,5.52798271e-01,5.53897500e-01,5.47994912e-01,5.35969973e-01,
+5.18660069e-01,4.96860862e-01,4.71326083e-01,4.42767620e-01,4.11855459e-01,
+3.79217744e-01,3.45440656e-01,3.11068624e-01,2.76604116e-01,2.42507741e-01,
+2.09198266e-01,1.77052543e-01,1.46405593e-01,1.17550530e-01,9.07385945e-02,
+6.61791563e-02,4.40397263e-02,2.44459156e-02,7.48148048e-03,-6.81170588e-03,
+-1.84336435e-02,-2.74262074e-02,-3.38731445e-02,-3.79000828e-02,-3.96745205e-02,
+-3.94058228e-02,-3.73452455e-02,-3.37859057e-02,-2.90628057e-02,-2.35528089e-02,
+-1.76746678e-02,-1.18889976e-02,-6.69829547e-03,-2.64693075e-03,-3.21147410e-04,
+-3.49063805e-04,-3.40067293e-03,-1.01878429e-02,-2.14643162e-02,-3.80257070e-02,
+-6.07095100e-02,-9.03950930e-02,-1.28003687e-01,-1.74498424e-01,-2.30884269e-01,
+-2.98208117e-01,-3.77558678e-01,-4.70066577e-01,-5.76904297e-01,-6.99286222e-01,
+-8.38468552e-01,5.24748266e-02,1.46076456e-01,2.25459248e-01,2.91686386e-01,
+3.45785648e-01,3.88749331e-01,4.21534330e-01,4.45062101e-01,4.60218638e-01,
+4.67854500e-01,4.68784809e-01,4.63789225e-01,4.53612030e-01,4.38961983e-01,
+4.20512497e-01,3.98901433e-01,3.74731302e-01,3.48569155e-01,3.20946574e-01,
+2.92359740e-01,2.63269365e-01,2.34100714e-01,2.05243647e-01,1.77052543e-01,
+1.49846390e-01,1.23908699e-01,9.94875431e-02,7.67955706e-02,5.60099706e-02,
+3.72725166e-02,2.06895210e-02,6.33186521e-03,-5.76500921e-03,-1.56011032e-02,
+-2.32118554e-02,-2.86681484e-02,-3.20763029e-02,-3.35780755e-02,-3.33506688e-02,
+-3.16067189e-02,-2.85943151e-02,-2.45969724e-02,-1.99336503e-02,-1.49587514e-02,
+-1.00621162e-02,-5.66902570e-03,-2.24019960e-03,-2.71799421e-04,-2.95426144e-04,
+-2.87812063e-03,-8.62236414e-03,-1.81660764e-02,-3.21826227e-02,-5.13807982e-02,
+-7.65048489e-02,-1.08334452e-01,-1.47684738e-01,-1.95406258e-01,-2.52385020e-01,
+-3.19542468e-01,-3.97835463e-01,-4.88256335e-01,-5.91832876e-01,-7.09628284e-01,
+4.33916859e-02,1.20791323e-01,1.86433330e-01,2.41196856e-01,2.85931796e-01,
+3.21458668e-01,3.48568767e-01,3.68023992e-01,3.80557001e-01,3.86871129e-01,
+3.87640387e-01,3.83509517e-01,3.75093937e-01,3.62979770e-01,3.47723782e-01,
+3.29853505e-01,3.09867114e-01,2.88233489e-01,2.65392274e-01,2.41753668e-01,
+2.17698693e-01,1.93579003e-01,1.69716954e-01,1.46405593e-01,1.23908699e-01,
+1.02460697e-01,8.22667256e-02,6.35026246e-02,4.63149138e-02,3.08208223e-02,
+1.71082634e-02,5.23584988e-03,-4.76711337e-03,-1.29006263e-02,-1.91939939e-02,
+-2.37058289e-02,-2.65240464e-02,-2.77658701e-02,-2.75778268e-02,-2.61357483e-02,
+-2.36447752e-02,-2.03393530e-02,-1.64832305e-02,-1.23694632e-02,-8.32041260e-03,
+-4.68774419e-03,-1.85243168e-03,-2.24752250e-04,-2.44289287e-04,-2.37993174e-03,
+-7.12987408e-03,-1.50216157e-02,-2.66119633e-02,-4.24870290e-02,-6.32622242e-02,
+-8.95822793e-02,-1.22121215e-01,-1.61582366e-01,-2.08698377e-01,-2.64231175e-01,
+-3.28972042e-01,-4.03741509e-01,-4.89389449e-01,-5.86794972e-01,3.48396190e-02,
+9.69845727e-02,1.49689198e-01,1.93659395e-01,2.29577526e-01,2.58102417e-01,
+2.79869378e-01,2.95490175e-01,3.05553049e-01,3.10622722e-01,3.11240375e-01,
+3.07923675e-01,3.01166713e-01,2.91440099e-01,2.79190928e-01,2.64842689e-01,
+2.48795420e-01,2.31425583e-01,2.13086128e-01,1.94106460e-01,1.74792469e-01,
+1.55426532e-01,1.36267453e-01,1.17550530e-01,9.94875431e-02,8.22667256e-02,
+6.60527870e-02,5.09868972e-02,3.71867120e-02,2.47463491e-02,1.37363970e-02,
+4.20391653e-03,-3.82756349e-03,-1.03580430e-02,-1.54110519e-02,-1.90336499e-02,
+-2.12964248e-02,-2.22934969e-02,-2.21425146e-02,-2.09846552e-02,-1.89846288e-02,
+-1.63306724e-02,-1.32345520e-02,-9.93156713e-03,-6.68054260e-03,-3.76383704e-03,
+-1.48733612e-03,-1.80455841e-04,-1.96142326e-04,-1.91087113e-03,-5.72464755e-03,
+-1.20610073e-02,-2.13670135e-02,-3.41132618e-02,-5.07938787e-02,-7.19265118e-02,
+-9.80523527e-02,-1.29736111e-01,-1.67566031e-01,-2.12153882e-01,-2.64134973e-01,
+-3.24168116e-01,-3.92935723e-01,-4.71143633e-01,2.68930998e-02,7.48634934e-02,
+1.15546793e-01,1.49487883e-01,1.77213505e-01,1.99232191e-01,2.16034353e-01,
+2.28092223e-01,2.35859871e-01,2.39773214e-01,2.40249991e-01,2.37689778e-01,
+2.32474014e-01,2.24965945e-01,2.15510651e-01,2.04435095e-01,1.92048028e-01,
+1.78640038e-01,1.64483607e-01,1.49832979e-01,1.34924307e-01,1.19975507e-01,
+1.05186395e-01,9.07385945e-02,7.67955706e-02,6.35026246e-02,5.09868972e-02,
+3.93573642e-02,2.87048463e-02,1.91019885e-02,1.06032817e-02,3.24505102e-03,
+-2.95453984e-03,-7.99549092e-03,-1.18959667e-02,-1.46922907e-02,-1.64389536e-02,
+-1.72086041e-02,-1.70920584e-02,-1.61982942e-02,-1.46544510e-02,-1.26058320e-02,
+-1.02159018e-02,-7.66628934e-03,-5.15678711e-03,-2.90534878e-03,-1.14809163e-03,
+-1.39295924e-04,-1.51404500e-04,-1.47502322e-03,-4.41892073e-03,-9.31002852e-03,
+-1.64934415e-02,-2.63324156e-02,-3.92083712e-02,-5.55208959e-02,-7.56877288e-02,
+-1.00144781e-01,-1.29346132e-01,-1.63764000e-01,-2.03888789e-01,-2.50229061e-01,
+-3.03311557e-01,-3.63681138e-01,1.96141750e-02,5.46008348e-02,8.42727348e-02,
+1.09027289e-01,1.29248649e-01,1.45307720e-01,1.57562196e-01,1.66356459e-01,
+1.72021717e-01,1.74875855e-01,1.75223589e-01,1.73356339e-01,1.69552267e-01,
+1.64076343e-01,1.57180235e-01,1.49102405e-01,1.40068039e-01,1.30289078e-01,
+1.19964242e-01,1.09278977e-01,9.84055027e-02,8.75027701e-02,7.67164975e-02,
+6.61791563e-02,5.60099706e-02,4.63149138e-02,3.71867120e-02,2.87048463e-02,
+2.09355522e-02,1.39318174e-02,7.73338228e-03,2.36674096e-03,-2.15485995e-03,
+-5.83142042e-03,-8.67618714e-03,-1.07156551e-02,-1.19895628e-02,-1.25508988e-02,
+-1.24658979e-02,-1.18140420e-02,-1.06880572e-02,-9.19391960e-03,-7.45085115e-03,
+-5.59132081e-03,-3.76104377e-03,-2.11898307e-03,-8.37347528e-04,-1.01593891e-04,
+-1.10425142e-04,-1.07579131e-03,-3.22288950e-03,-6.79016300e-03,-1.20293032e-02,
+-1.92052480e-02,-2.85961796e-02,-4.04935330e-02,-5.52019812e-02,-7.30394572e-02,
+-9.43371207e-02,-1.19439401e-01,-1.48703963e-01,-1.82501718e-01,-2.21216813e-01,
+-2.65246689e-01,1.30524915e-02,3.63347903e-02,5.60803153e-02,7.25535303e-02,
+8.60100836e-02,9.66967940e-02,1.04851671e-01,1.10703930e-01,1.14473939e-01,
+1.16373263e-01,1.16604663e-01,1.15362078e-01,1.12830617e-01,1.09186597e-01,
+1.04597501e-01,9.92220044e-02,9.32099745e-02,8.67024511e-02,7.98316598e-02,
+7.27210268e-02,6.54851347e-02,5.82297780e-02,5.10519259e-02,4.40397263e-02,
+3.72725166e-02,3.08208223e-02,2.47463491e-02,1.91019885e-02,1.39318174e-02,
+9.27109644e-03,5.14627295e-03,1.57497649e-03,-1.43397774e-03,-3.88058950e-03,
+-5.77367423e-03,-7.13086268e-03,-7.97860045e-03,-8.35214835e-03,-8.29558354e-03,
+-7.86179770e-03,-7.11249746e-03,-6.11820538e-03,-4.95825941e-03,-3.72081227e-03,
+-2.50283233e-03,-1.41010294e-03,-5.57223102e-04,-6.76068885e-05,-7.34837522e-05,
+-7.15898408e-04,-2.14471086e-03,-4.51859646e-03,-8.00504629e-03,-1.27803646e-02,
+-1.90296751e-02,-2.69469116e-02,-3.67348306e-02,-4.86049913e-02,-6.27777800e-02,
+-7.94823989e-02,-9.89568606e-02,-1.21447980e-01,-1.47211418e-01,-1.76511630e-01,
+7.24527938e-03,2.01689992e-02,3.11295018e-02,4.02735844e-02,4.77431491e-02,
+5.36752120e-02,5.82018904e-02,6.14504032e-02,6.35430887e-02,6.45973831e-02,
+6.47258312e-02,6.40360862e-02,6.26309067e-02,6.06081523e-02,5.80607988e-02,
+5.50769307e-02,5.17397225e-02,4.81274761e-02,4.43135835e-02,4.03665565e-02,
+3.63500006e-02,3.23226415e-02,2.83383019e-02,2.44459156e-02,2.06895210e-02,
+1.71082634e-02,1.37363970e-02,1.06032817e-02,7.73338228e-03,5.14627295e-03,
+2.85663363e-03,8.74250312e-04,-7.95983593e-04,-2.15406809e-03,-3.20489635e-03,
+-3.95825505e-03,-4.42882394e-03,-4.63617593e-03,-4.60477732e-03,-4.36398806e-03,
+-3.94806080e-03,-3.39614134e-03,-2.75226962e-03,-2.06537778e-03,-1.38929172e-03,
+-7.82730989e-04,-3.09307768e-04,-3.75277632e-05,-4.07899388e-05,-3.97386495e-04,
+-1.19050290e-03,-2.50821793e-03,-4.44350345e-03,-7.09422538e-03,-1.05631417e-02,
+-1.49579030e-02,-2.03910563e-02,-2.69800406e-02,-3.48471850e-02,-4.41197157e-02,
+-5.49297482e-02,-6.74142987e-02,-8.17152709e-02,-9.79794562e-02,2.21736077e-03,
+6.17256388e-03,9.52694006e-03,1.23254145e-02,1.46114165e-02,1.64268780e-02,
+1.78122316e-02,1.88064147e-02,1.94468647e-02,1.97695233e-02,1.98088326e-02,
+1.95977427e-02,1.91676971e-02,1.85486488e-02,1.77690517e-02,1.68558620e-02,
+1.58345364e-02,1.47290360e-02,1.35618253e-02,1.23538673e-02,1.11246333e-02,
+9.89209116e-03,8.67271516e-03,7.48148048e-03,6.33186521e-03,5.23584988e-03,
+4.20391653e-03,3.24505102e-03,2.36674096e-03,1.57497649e-03,8.74250312e-04,
+2.67557451e-04,-2.43604532e-04,-6.59235637e-04,-9.80833429e-04,-1.21139293e-03,
+-1.35540683e-03,-1.41886529e-03,-1.40925602e-03,-1.33556430e-03,-1.20827300e-03,
+-1.03936240e-03,-8.42310488e-04,-6.32092648e-04,-4.25181846e-04,-2.39548681e-04,
+-9.46612126e-05,-1.14850773e-05,-1.24834405e-05,-1.21617020e-04,-3.64344101e-04,
+-7.67620455e-04,-1.35989941e-03,-2.17113202e-03,-3.23276641e-03,-4.57774894e-03,
+-6.24052295e-03,-8.25702958e-03,-1.06647070e-02,-1.35024926e-02,-1.68108195e-02,
+-2.06316169e-02,-2.50083171e-02,-2.99858432e-02,-2.01885309e-03,-5.61996922e-03,
+-8.67404602e-03,-1.12219891e-02,-1.33033386e-02,-1.49562713e-02,-1.62176024e-02,
+-1.71227809e-02,-1.77058950e-02,-1.79996677e-02,-1.80354603e-02,-1.78432651e-02,
+-1.74517203e-02,-1.68880932e-02,-1.61782894e-02,-1.53468512e-02,-1.44169591e-02,
+-1.34104285e-02,-1.23477103e-02,-1.12478957e-02,-1.01287067e-02,-9.00650769e-03,
+-7.89629575e-03,-6.81170588e-03,-5.76500921e-03,-4.76711337e-03,-3.82756349e-03,
+-2.95453984e-03,-2.15485995e-03,-1.43397774e-03,-7.95983593e-04,-2.43604532e-04,
+2.21795985e-04,6.00217958e-04,8.93024902e-04,1.10294367e-03,1.23406481e-03,
+1.29184220e-03,1.28309324e-03,1.21599878e-03,1.10010314e-03,9.46314132e-04,
+7.66903162e-04,5.75504906e-04,3.87117703e-04,2.18103232e-04,8.61867302e-05,
+1.04568826e-05,1.13658680e-05,1.10729336e-04,3.31726391e-04,6.98899676e-04,
+1.23815530e-03,1.97676267e-03,2.94335512e-03,4.16792883e-03,5.68184396e-03,
+7.51782395e-03,9.70995612e-03,1.22936899e-02,1.53058404e-02,1.87845845e-02,
+2.27694623e-02,2.73013804e-02,-5.46336221e-03,-1.52086001e-02,-2.34734565e-02,
+-3.03686261e-02,-3.60011160e-02,-4.04742360e-02,-4.38876115e-02,-4.63371836e-02,
+-4.79151905e-02,-4.87101898e-02,-4.88070473e-02,-4.82869372e-02,-4.72273491e-02,
+-4.57020737e-02,-4.37812246e-02,-4.15312089e-02,-3.90147641e-02,-3.62909175e-02,
+-3.34150232e-02,-3.04387324e-02,-2.74100173e-02,-2.43731532e-02,-2.13687308e-02,
+-1.84336435e-02,-1.56011032e-02,-1.29006263e-02,-1.03580430e-02,-7.99549092e-03,
+-5.83142042e-03,-3.88058950e-03,-2.15406809e-03,-6.59235637e-04,6.00217958e-04,
+1.62429269e-03,2.41667847e-03,2.98475474e-03,3.33959097e-03,3.49594653e-03,
+3.47227021e-03,3.29070119e-03,2.97706760e-03,2.56088842e-03,2.07537133e-03,
+1.55741500e-03,1.04760693e-03,5.90224750e-04,2.33236060e-04,2.82981182e-05,
+3.07579867e-05,2.99652573e-04,8.97708524e-04,1.89134234e-03,3.35066044e-03,
+5.34945866e-03,7.96522293e-03,1.12791304e-02,1.53760435e-02,2.03445200e-02,
+2.62768045e-02,3.32688317e-02,4.14202288e-02,5.08343056e-02,6.16180710e-02,
+7.38822147e-02,-8.12857784e-03,-2.26278771e-02,-3.49246152e-02,-4.51834835e-02,
+-5.35636954e-02,-6.02189563e-02,-6.52974993e-02,-6.89420477e-02,-7.12898597e-02,
+-7.24726915e-02,-7.26168007e-02,-7.18429610e-02,-7.02664703e-02,-6.79971129e-02,
+-6.51392043e-02,-6.17915615e-02,-5.80475032e-02,-5.39948717e-02,-4.97160181e-02,
+-4.52877916e-02,-4.07815650e-02,-3.62632163e-02,-3.17931287e-02,-2.74262074e-02,
+-2.32118554e-02,-1.91939939e-02,-1.54110519e-02,-1.18959667e-02,-8.67618714e-03,
+-5.77367423e-03,-3.20489635e-03,-9.80833429e-04,8.93024902e-04,2.41667847e-03,
+3.59561713e-03,4.44082031e-03,4.96875821e-03,5.20138908e-03,5.16616274e-03,
+4.89601819e-03,4.42938320e-03,3.81017756e-03,3.08780884e-03,2.31717550e-03,
+1.55866542e-03,8.78156628e-04,3.47016612e-04,4.21029108e-05,4.57627903e-05,
+4.45833371e-04,1.33564160e-03,2.81400420e-03,4.98522772e-03,7.95910880e-03,
+1.18509326e-02,1.67814773e-02,2.28770059e-02,3.02692764e-02,3.90955321e-02,
+4.94985096e-02,6.16264381e-02,7.56330267e-02,9.16774794e-02,1.09924495e-01,
+-1.00393211e-02,-2.79468969e-02,-4.31341641e-02,-5.58045357e-02,-6.61546364e-02,
+-7.43743181e-02,-8.06466490e-02,-8.51479098e-02,-8.80476087e-02,-8.95084739e-02,
+-8.96864608e-02,-8.87307227e-02,-8.67836475e-02,-8.39808509e-02,-8.04511458e-02,
+-7.63165876e-02,-7.16924369e-02,-6.66871741e-02,-6.14025071e-02,-5.59333637e-02,
+-5.03678806e-02,-4.47874255e-02,-3.92665789e-02,-3.38731445e-02,-2.86681484e-02,
+-2.37058289e-02,-1.90336499e-02,-1.46922907e-02,-1.07156551e-02,-7.13086268e-03,
+-3.95825505e-03,-1.21139293e-03,1.10294367e-03,2.98475474e-03,4.44082031e-03,
+5.48470160e-03,6.13673870e-03,6.42405311e-03,6.38054637e-03,6.04690006e-03,
+5.47057576e-03,4.70581651e-03,3.81364441e-03,2.86186207e-03,1.92505296e-03,
+1.08458044e-03,4.28588042e-04,5.19998284e-05,5.65200171e-05,5.50633122e-04,
+1.64960406e-03,3.47547769e-03,6.15707971e-03,9.83001571e-03,1.46366712e-02,
+2.07262132e-02,2.82545872e-02,3.73845212e-02,4.82855216e-02,6.11338727e-02,
+7.61126503e-02,9.34116915e-02,1.13227636e-01,1.35763884e-01,-1.12328250e-02,
+-3.12693045e-02,-4.82620783e-02,-6.24387413e-02,-7.40192905e-02,-8.32161531e-02,
+-9.02341530e-02,-9.52705368e-02,-9.85149592e-02,-1.00149505e-01,-1.00348644e-01,
+-9.92792845e-02,-9.71007422e-02,-9.39647332e-02,-9.00154114e-02,-8.53893235e-02,
+-8.02154392e-02,-7.46151358e-02,-6.87022135e-02,-6.25828803e-02,-5.63557595e-02,
+-5.01118824e-02,-4.39347029e-02,-3.79000828e-02,-3.20763029e-02,-2.65240464e-02,
+-2.12964248e-02,-1.64389536e-02,-1.19895628e-02,-7.97860045e-03,-4.42882394e-03,
+-1.35540683e-03,1.23406481e-03,3.33959097e-03,4.96875821e-03,6.13673870e-03,
+6.86629210e-03,7.18776323e-03,7.13908440e-03,6.76577305e-03,6.12093369e-03,
+5.26525779e-03,4.26702155e-03,3.20208864e-03,2.15390883e-03,1.21351844e-03,
+4.79539827e-04,5.81817185e-05,6.32392766e-05,6.16093981e-04,1.84571370e-03,
+3.88865266e-03,6.88905129e-03,1.09986365e-02,1.63767207e-02,2.31902041e-02,
+3.16135734e-02,4.18289006e-02,5.40258437e-02,6.84016496e-02,8.51611421e-02,
+1.04516745e-01,1.26688465e-01,1.51903883e-01,-1.17587317e-02,-3.27332951e-02,
+-5.05216494e-02,-6.53620437e-02,-7.74847865e-02,-8.71122330e-02,-9.44588035e-02,
+-9.97309834e-02,-1.03127308e-01,-1.04838379e-01,-1.05046846e-01,-1.03927419e-01,
+-1.01646878e-01,-9.83640477e-02,-9.42298248e-02,-8.93871486e-02,-8.39710236e-02,
+-7.81085268e-02,-7.19187707e-02,-6.55129328e-02,-5.89942671e-02,-5.24580590e-02,
+-4.59916703e-02,-3.96745205e-02,-3.35780755e-02,-2.77658701e-02,-2.22934969e-02,
+-1.72086041e-02,-1.25508988e-02,-8.35214835e-03,-4.63617593e-03,-1.41886529e-03,
+1.29184220e-03,3.49594653e-03,5.20138908e-03,6.42405311e-03,7.18776323e-03,
+7.52428547e-03,7.47332722e-03,7.08253821e-03,6.40750863e-03,5.51177049e-03,
+4.46679816e-03,3.35200643e-03,2.25475221e-03,1.27033389e-03,5.01991308e-04,
+6.09057133e-05,6.62000602e-05,6.44938787e-04,1.93212775e-03,4.07071458e-03,
+7.21158786e-03,1.15135787e-02,1.71434581e-02,2.42759418e-02,3.30936834e-02,
+4.37872782e-02,5.65552674e-02,7.16041252e-02,8.91482830e-02,1.09410092e-01,
+1.32619858e-01,1.59015834e-01,-1.16790961e-02,-3.25116068e-02,-5.01794927e-02,
+-6.49193823e-02,-7.69600198e-02,-8.65222663e-02,-9.38190818e-02,-9.90555584e-02,
+-1.02428883e-01,-1.04128361e-01,-1.04335412e-01,-1.03223570e-01,-1.00958474e-01,
+-9.76978764e-02,-9.35916528e-02,-8.87817740e-02,-8.34023356e-02,-7.75795355e-02,
+-7.14316964e-02,-6.50692508e-02,-5.85947298e-02,-5.21027893e-02,-4.56801951e-02,
+-3.94058228e-02,-3.33506688e-02,-2.75778268e-02,-2.21425146e-02,-1.70920584e-02,
+-1.24658979e-02,-8.29558354e-03,-4.60477732e-03,-1.40925602e-03,1.28309324e-03,
+3.47227021e-03,5.16616274e-03,6.38054637e-03,7.13908440e-03,7.47332722e-03,
+7.42271449e-03,7.03457184e-03,6.36411365e-03,5.47444215e-03,4.43654694e-03,
+3.32930498e-03,2.23948201e-03,1.26173056e-03,4.98591573e-04,6.04932284e-05,
+6.57517230e-05,6.40570943e-04,1.91904244e-03,4.04314557e-03,7.16274744e-03,
+1.14356028e-02,1.70273557e-02,2.41115335e-02,3.28695551e-02,4.34907302e-02,
+5.61722480e-02,7.11191893e-02,8.85445252e-02,1.08669110e-01,1.31721690e-01,
+1.57938913e-01,-1.10683823e-02,-3.08115371e-02,-4.75555472e-02,-6.15246706e-02,
+-7.29356855e-02,-8.19979087e-02,-8.89131725e-02,-9.38758254e-02,-9.70727503e-02,
+-9.86833647e-02,-9.88795906e-02,-9.78258848e-02,-9.56792384e-02,-9.25891399e-02,
+-8.86976346e-02,-8.41392651e-02,-7.90411234e-02,-7.35228062e-02,-6.76964521e-02,
+-6.16667010e-02,-5.55307381e-02,-4.93782721e-02,-4.32915203e-02,-3.73452455e-02,
+-3.16067189e-02,-2.61357483e-02,-2.09846552e-02,-1.61982942e-02,-1.18140420e-02,
+-7.86179770e-03,-4.36398806e-03,-1.33556430e-03,1.21599878e-03,3.29070119e-03,
+4.89601819e-03,6.04690006e-03,6.76577305e-03,7.08253821e-03,7.03457184e-03,
+6.66672550e-03,6.03132648e-03,5.18817687e-03,4.20455448e-03,3.15521169e-03,
+2.12237681e-03,1.19575323e-03,4.72519605e-04,5.73299658e-05,6.23134911e-05,
+6.07074704e-04,1.81869336e-03,3.83172464e-03,6.78819884e-03,1.08376220e-02,
+1.61369741e-02,2.28507128e-02,3.11507676e-02,4.12165485e-02,5.32349311e-02,
+6.74002841e-02,8.39144289e-02,1.02986671e-01,1.24833807e-01,1.49680093e-01,
+-1.00134658e-02,-2.78749205e-02,-4.30230759e-02,-5.56608140e-02,-6.59842640e-02,
+-7.41827711e-02,-8.04389417e-02,-8.49286094e-02,-8.78208429e-02,-8.92779529e-02,
+-8.94554779e-02,-8.85021985e-02,-8.65601450e-02,-8.37645605e-02,-8.02439526e-02,
+-7.61200413e-02,-7.15077966e-02,-6.65154234e-02,-6.12443686e-02,-5.57893068e-02,
+-5.02381586e-02,-4.46720757e-02,-3.91654484e-02,-3.37859057e-02,-2.85943151e-02,
+-2.36447752e-02,-1.89846288e-02,-1.46544510e-02,-1.06880572e-02,-7.11249746e-03,
+-3.94806080e-03,-1.20827300e-03,1.10010314e-03,2.97706760e-03,4.42938320e-03,
+5.47057576e-03,6.12093369e-03,6.40750863e-03,6.36411365e-03,6.03132648e-03,
+5.45648672e-03,4.69369674e-03,3.80382244e-03,2.85449158e-03,1.92009518e-03,
+1.08178717e-03,4.27484250e-04,5.18659035e-05,5.63744507e-05,5.49215009e-04,
+1.64535549e-03,3.46652674e-03,6.14122255e-03,9.80469864e-03,1.45989750e-02,
+2.06728335e-02,2.81818192e-02,3.72882374e-02,4.81611639e-02,6.09764270e-02,
+7.59166256e-02,9.31711197e-02,1.12936027e-01,1.35414228e-01,-8.61363299e-03,
+-2.39781439e-02,-3.70086618e-02,-4.78797071e-02,-5.67599870e-02,-6.38123900e-02,
+-6.91939816e-02,-7.30560124e-02,-7.55439252e-02,-7.67973363e-02,-7.69500434e-02,
+-7.61300325e-02,-7.44594634e-02,-7.20546916e-02,-6.90262467e-02,-6.54788315e-02,
+-6.15113601e-02,-5.72168976e-02,-5.26827089e-02,-4.79902402e-02,-4.32151146e-02,
+-3.84271406e-02,-3.36903147e-02,-2.90628057e-02,-2.45969724e-02,-2.03393530e-02,
+-1.63306724e-02,-1.26058320e-02,-9.19391960e-03,-6.11820538e-03,-3.39614134e-03,
+-1.03936240e-03,9.46314132e-04,2.56088842e-03,3.81017756e-03,4.70581651e-03,
+5.26525779e-03,5.51177049e-03,5.47444215e-03,5.18817687e-03,4.69369674e-03,
+4.03754134e-03,3.27206682e-03,2.45544780e-03,1.65167532e-03,9.30558657e-04,
+3.67724046e-04,4.46153063e-05,4.84935808e-05,4.72437474e-04,1.41534302e-03,
+2.98192352e-03,5.28270984e-03,8.43405072e-03,1.25581110e-02,1.77828744e-02,
+2.42421404e-02,3.20755281e-02,4.14284728e-02,5.24522252e-02,6.53038546e-02,
+8.01462531e-02,9.71481279e-02,1.16483994e-01,-6.98058074e-03,-1.94321461e-02,
+-2.99922172e-02,-3.88022289e-02,-4.59989049e-02,-5.17142452e-02,-5.60755432e-02,
+-5.92053793e-02,-6.12216108e-02,-6.22373857e-02,-6.23611435e-02,-6.16965964e-02,
+-6.03427477e-02,-5.83938956e-02,-5.59396110e-02,-5.30647524e-02,-4.98494655e-02,
+-4.63691875e-02,-4.26946320e-02,-3.88918072e-02,-3.50219943e-02,-3.11417691e-02,
+-2.73029916e-02,-2.35528089e-02,-1.99336503e-02,-1.64832305e-02,-1.32345520e-02,
+-1.02159018e-02,-7.45085115e-03,-4.95825941e-03,-2.75226962e-03,-8.42310488e-04,
+7.66903162e-04,2.07537133e-03,3.08780884e-03,3.81364441e-03,4.26702155e-03,
+4.46679816e-03,4.43654694e-03,4.20455448e-03,3.80382244e-03,3.27206682e-03,
+2.65171821e-03,1.98992132e-03,1.33853545e-03,7.54134730e-04,2.98007537e-04,
+3.61567254e-05,3.92997208e-05,3.82868398e-04,1.14700920e-03,2.41658278e-03,
+4.28116508e-03,6.83504529e-03,1.01772277e-02,1.44114317e-02,1.96460914e-02,
+2.59943530e-02,3.35740782e-02,4.25078459e-02,5.29229492e-02,6.49513900e-02,
+7.87298828e-02,9.43998769e-02,-5.23841707e-03,-1.45824095e-02,-2.25069728e-02,
+-2.91182455e-02,-3.45188230e-02,-3.88077721e-02,-4.20806073e-02,-4.44293208e-02,
+-4.59423549e-02,-4.67046238e-02,-4.67974916e-02,-4.62987982e-02,-4.52828370e-02,
+-4.38203625e-02,-4.19786014e-02,-3.98212261e-02,-3.74083929e-02,-3.47966962e-02,
+-3.20392102e-02,-2.91854665e-02,-2.62814537e-02,-2.33696271e-02,-2.04889067e-02,
+-1.76746678e-02,-1.49587514e-02,-1.23694632e-02,-9.93156713e-03,-7.66628934e-03,
+-5.59132081e-03,-3.72081227e-03,-2.06537778e-03,-6.32092648e-04,5.75504906e-04,
+1.55741500e-03,2.31717550e-03,2.86186207e-03,3.20208864e-03,3.35200643e-03,
+3.32930498e-03,3.15521169e-03,2.85449158e-03,2.45544780e-03,1.98992132e-03,
+1.49329088e-03,1.00447331e-03,5.65923168e-04,2.23632931e-04,2.71329864e-05,
+2.94915753e-05,2.87314819e-04,8.60746775e-04,1.81346934e-03,3.21270223e-03,
+5.12920320e-03,7.63726793e-03,1.08147291e-02,1.47429593e-02,1.95068661e-02,
+2.51948982e-02,3.18990424e-02,3.97148132e-02,4.87412810e-02,5.90810403e-02,
+7.08402321e-02,-3.52366036e-03,-9.80896689e-03,-1.51394848e-02,-1.95866060e-02,
+-2.32193470e-02,-2.61043385e-02,-2.83058360e-02,-2.98857167e-02,-3.09034698e-02,
+-3.14162150e-02,-3.14786844e-02,-3.11432332e-02,-3.04598380e-02,-2.94760950e-02,
+-2.82372199e-02,-2.67860480e-02,-2.51630340e-02,-2.34062579e-02,-2.15514153e-02,
+-1.96318217e-02,-1.76784173e-02,-1.57197546e-02,-1.37820160e-02,-1.18889976e-02,
+-1.00621162e-02,-8.32041260e-03,-6.68054260e-03,-5.15678711e-03,-3.76104377e-03,
+-2.50283233e-03,-1.38929172e-03,-4.25181846e-04,3.87117703e-04,1.04760693e-03,
+1.55866542e-03,1.92505296e-03,2.15390883e-03,2.25475221e-03,2.23948201e-03,
+2.12237681e-03,1.92009518e-03,1.65167532e-03,1.33853545e-03,1.00447331e-03,
+6.75666495e-04,3.80672456e-04,1.50428372e-04,1.82512067e-05,1.98377293e-05,
+1.93264481e-04,5.78987761e-04,1.21984375e-03,2.16104835e-03,3.45019693e-03,
+5.13726519e-03,7.27460859e-03,9.91696212e-03,1.31214401e-02,1.69475377e-02,
+2.14571282e-02,2.67144684e-02,3.27861905e-02,3.97413038e-02,4.76512127e-02,
+-1.98524049e-03,-5.52640017e-03,-8.52962956e-03,-1.10351508e-02,-1.30818468e-02,
+-1.47072598e-02,-1.59475897e-02,-1.68376993e-02,-1.74111035e-02,-1.76999867e-02,
+-1.77351814e-02,-1.75461881e-02,-1.71611607e-02,-1.66069176e-02,-1.59089305e-02,
+-1.50913363e-02,-1.41769266e-02,-1.31871533e-02,-1.21421292e-02,-1.10606253e-02,
+-9.96007118e-03,-8.85655545e-03,-7.76482746e-03,-6.69829547e-03,-5.66902570e-03,
+-4.68774419e-03,-3.76383704e-03,-2.90534878e-03,-2.11898307e-03,-1.41010294e-03,
+-7.82730989e-04,-2.39548681e-04,2.18103232e-04,5.90224750e-04,8.78156628e-04,
+1.08458044e-03,1.21351844e-03,1.27033389e-03,1.26173056e-03,1.19575323e-03,
+1.08178717e-03,9.30558657e-04,7.54134730e-04,5.65923168e-04,3.80672456e-04,
+2.14471962e-04,8.47517804e-05,1.02827826e-05,1.11766340e-05,1.08885768e-04,
+3.26203386e-04,6.87263499e-04,1.21754082e-03,1.94385089e-03,2.89435009e-03,
+4.09853552e-03,5.58724487e-03,7.39265746e-03,9.54829156e-03,1.20890085e-02,
+1.50510082e-02,1.84718333e-02,2.23903656e-02,2.68468298e-02,-7.84497242e-04,
+-2.18383898e-03,-3.37060960e-03,-4.36070329e-03,-5.16948570e-03,-5.81179187e-03,
+-6.30192691e-03,-6.65366650e-03,-6.88025635e-03,-6.99441181e-03,-7.00832019e-03,
+-6.93363650e-03,-6.78148726e-03,-6.56246999e-03,-6.28664996e-03,-5.96356532e-03,
+-5.60222287e-03,-5.21109952e-03,-4.79814271e-03,-4.37077042e-03,-3.93586978e-03,
+-3.49979918e-03,-3.06838681e-03,-2.64693075e-03,-2.24019960e-03,-1.85243168e-03,
+-1.48733612e-03,-1.14809163e-03,-8.37347528e-04,-5.57223102e-04,-3.09307768e-04,
+-9.46612126e-05,8.61867302e-05,2.33236060e-04,3.47016612e-04,4.28588042e-04,
+4.79539827e-04,5.01991308e-04,4.98591573e-04,4.72519605e-04,4.27484250e-04,
+3.67724046e-04,2.98007537e-04,2.23632931e-04,1.50428372e-04,8.47517804e-05,
+3.34909237e-05,4.06339404e-06,4.41661268e-06,4.30278269e-05,1.28904110e-04,
+2.71582365e-04,4.81129304e-04,7.68141530e-04,1.14374538e-03,1.61959720e-03,
+2.20788270e-03,2.92131817e-03,3.77314910e-03,4.77715116e-03,5.94762946e-03,
+7.29941903e-03,8.84788577e-03,1.06089236e-02,-9.51816546e-05,-2.64961331e-04,
+-4.08950087e-04,-5.29076438e-04,-6.27204543e-04,-7.05134415e-04,-7.64601573e-04,
+-8.07277509e-04,-8.34769278e-04,-8.48619617e-04,-8.50306998e-04,-8.41245812e-04,
+-8.22785834e-04,-7.96212815e-04,-7.62748125e-04,-7.23548816e-04,-6.79707737e-04,
+-6.32253417e-04,-5.82150125e-04,-5.30297810e-04,-4.77532099e-04,-4.24624421e-04,
+-3.72281938e-04,-3.21147410e-04,-2.71799421e-04,-2.24752250e-04,-1.80455841e-04,
+-1.39295924e-04,-1.01593891e-04,-6.76068885e-05,-3.75277632e-05,-1.14850773e-05,
+1.04568826e-05,2.82981182e-05,4.21029108e-05,5.19998284e-05,5.81817185e-05,
+6.09057133e-05,6.04932284e-05,5.73299658e-05,5.18659035e-05,4.46153063e-05,
+3.61567254e-05,2.71329864e-05,1.82512067e-05,1.02827826e-05,4.06339404e-06,
+4.93004393e-07,5.35859783e-07,5.22048958e-06,1.56397073e-05,3.29506074e-05,
+5.83745677e-05,9.31972463e-05,1.38768606e-04,1.96502850e-04,2.67878495e-04,
+3.54438351e-04,4.57789487e-04,5.79603249e-04,7.21615274e-04,8.85625544e-04,
+1.07349828e-03,1.28716184e-03,-1.03455510e-04,-2.87993607e-04,-4.44498874e-04,
+-5.75067417e-04,-6.81725563e-04,-7.66429584e-04,-8.31066107e-04,-8.77451734e-04,
+-9.07333277e-04,-9.22387524e-04,-9.24221647e-04,-9.14372737e-04,-8.94308148e-04,
+-8.65425216e-04,-8.29051482e-04,-7.86444754e-04,-7.38792703e-04,-6.87213324e-04,
+-6.32754702e-04,-5.76394959e-04,-5.19042544e-04,-4.61535761e-04,-4.04643273e-04,
+-3.49063805e-04,-2.95426144e-04,-2.44289287e-04,-1.96142326e-04,-1.51404500e-04,
+-1.10425142e-04,-7.34837522e-05,-4.07899388e-05,-1.24834405e-05,1.13658680e-05,
+3.07579867e-05,4.57627903e-05,5.65200171e-05,6.32392766e-05,6.62000602e-05,
+6.57517230e-05,6.23134911e-05,5.63744507e-05,4.84935808e-05,3.92997208e-05,
+2.94915753e-05,1.98377293e-05,1.11766340e-05,4.41661268e-06,5.35859783e-07,
+5.82440464e-07,5.67429106e-06,1.69992200e-05,3.58149045e-05,6.34488897e-05,
+1.01298603e-04,1.50831343e-04,2.13584251e-04,2.91164382e-04,3.85248626e-04,
+4.97583766e-04,6.29986404e-04,7.84343167e-04,9.62610298e-04,1.16681424e-03,
+1.39905093e-03,-1.00789126e-03,-2.80571100e-03,-4.33042739e-03,-5.60246129e-03,
+-6.64155278e-03,-7.46676279e-03,-8.09646863e-03,-8.54836963e-03,-8.83948337e-03,
+-8.98614712e-03,-9.00401548e-03,-8.90806410e-03,-8.71258974e-03,-8.43120459e-03,
+-8.07684194e-03,-7.66175566e-03,-7.19751650e-03,-6.69501629e-03,-6.16446603e-03,
+-5.61539456e-03,-5.05665131e-03,-4.49640490e-03,-3.94214317e-03,-3.40067293e-03,
+-2.87812063e-03,-2.37993174e-03,-1.91087113e-03,-1.47502322e-03,-1.07579131e-03,
+-7.15898408e-04,-3.97386495e-04,-1.21617020e-04,1.10729336e-04,2.99652573e-04,
+4.45833371e-04,5.50633122e-04,6.16093981e-04,6.44938787e-04,6.40570943e-04,
+6.07074704e-04,5.49215009e-04,4.72437474e-04,3.82868398e-04,2.87314819e-04,
+1.93264481e-04,1.08885768e-04,4.30278269e-05,5.22048958e-06,5.67429106e-06,
+5.52804668e-05,1.65610953e-04,3.48918373e-04,6.18136080e-04,9.86878178e-04,
+1.46943936e-03,2.08079489e-03,2.83660134e-03,3.75319528e-03,4.84759407e-03,
+6.13749679e-03,7.64128100e-03,9.37800761e-03,1.13674169e-02,1.36299292e-02,
+-3.01947235e-03,-8.40543676e-03,-1.29732294e-02,-1.67840291e-02,-1.98969729e-02,
+-2.23691612e-02,-2.42556557e-02,-2.56094746e-02,-2.64816023e-02,-2.69209798e-02,
+-2.69745104e-02,-2.66870596e-02,-2.61014495e-02,-2.52584666e-02,-2.41968557e-02,
+-2.29533277e-02,-2.15625446e-02,-2.00571399e-02,-1.84677001e-02,-1.68227740e-02,
+-1.51488744e-02,-1.34704709e-02,-1.18099963e-02,-1.01878429e-02,-8.62236414e-03,
+-7.12987408e-03,-5.72464755e-03,-4.41892073e-03,-3.22288950e-03,-2.14471086e-03,
+-1.19050290e-03,-3.64344101e-04,3.31726391e-04,8.97708524e-04,1.33564160e-03,
+1.64960406e-03,1.84571370e-03,1.93212775e-03,1.91904244e-03,1.81869336e-03,
+1.64535549e-03,1.41534302e-03,1.14700920e-03,8.60746775e-04,5.78987761e-04,
+3.26203386e-04,1.28904110e-04,1.56397073e-05,1.69992200e-05,1.65610953e-04,
+4.96142486e-04,1.04530063e-03,1.85183156e-03,2.95652053e-03,4.40219231e-03,
+6.23371080e-03,8.49797949e-03,1.12439403e-02,1.45225748e-02,1.83869042e-02,
+2.28919890e-02,2.80949287e-02,3.40548642e-02,4.08329703e-02,-6.36159256e-03,
+-1.77090429e-02,-2.73327231e-02,-3.53615284e-02,-4.19200510e-02,-4.71285954e-02,
+-5.11031672e-02,-5.39554693e-02,-5.57929166e-02,-5.67186214e-02,-5.68314046e-02,
+-5.62257841e-02,-5.49919866e-02,-5.32159433e-02,-5.09792864e-02,-4.83593494e-02,
+-4.54291739e-02,-4.22575027e-02,-3.89087796e-02,-3.54431607e-02,-3.19164954e-02,
+-2.83803400e-02,-2.48819590e-02,-2.14643162e-02,-1.81660764e-02,-1.50216157e-02,
+-1.20610073e-02,-9.31002852e-03,-6.79016300e-03,-4.51859646e-03,-2.50821793e-03,
+-7.67620455e-04,6.98899676e-04,1.89134234e-03,2.81400420e-03,3.47547769e-03,
+3.88865266e-03,4.07071458e-03,4.04314557e-03,3.83172464e-03,3.46652674e-03,
+2.98192352e-03,2.41658278e-03,1.81346934e-03,1.21984375e-03,6.87263499e-04,
+2.71582365e-04,3.29506074e-05,3.58149045e-05,3.48918373e-04,1.04530063e-03,
+2.20229756e-03,3.90154193e-03,6.22896245e-03,9.27478448e-03,1.31335296e-02,
+1.79040171e-02,2.36893594e-02,3.05969696e-02,3.87385562e-02,4.82301190e-02,
+5.91919646e-02,7.17486888e-02,8.60291719e-02,-1.12700574e-02,-3.13729495e-02,
+-4.84220497e-02,-6.26457036e-02,-7.42646381e-02,-8.34919810e-02,-9.05332416e-02,
+-9.55863222e-02,-9.88415033e-02,-1.00481458e-01,-1.00681260e-01,-9.96083543e-02,
+-9.74225923e-02,-9.42761898e-02,-9.03137773e-02,-8.56723562e-02,-8.04813206e-02,
+-7.48624578e-02,-6.89299330e-02,-6.27903193e-02,-5.65425567e-02,-5.02779856e-02,
+-4.40803282e-02,-3.80257070e-02,-3.21826227e-02,-2.66119633e-02,-2.13670135e-02,
+-1.64934415e-02,-1.20293032e-02,-8.00504629e-03,-4.44350345e-03,-1.35989941e-03,
+1.23815530e-03,3.35066044e-03,4.98522772e-03,6.15707971e-03,6.88905129e-03,
+7.21158786e-03,7.16274744e-03,6.78819884e-03,6.14122255e-03,5.28270984e-03,
+4.28116508e-03,3.21270223e-03,2.16104835e-03,1.21754082e-03,4.81129304e-04,
+5.83745677e-05,6.34488897e-05,6.18136080e-04,1.85183156e-03,3.90154193e-03,
+6.91188546e-03,1.10350922e-02,1.64310038e-02,2.32670717e-02,3.17183621e-02,
+4.19675484e-02,5.42049184e-02,6.86283708e-02,8.54434147e-02,1.04863182e-01,
+1.27108380e-01,1.52407393e-01,-1.79930814e-02,-5.00881262e-02,-7.73076713e-02,
+-1.00016281e-01,-1.18566364e-01,-1.33298174e-01,-1.44539818e-01,-1.52607247e-01,
+-1.57804266e-01,-1.60422534e-01,-1.60741523e-01,-1.59028590e-01,-1.55538931e-01,
+-1.50515586e-01,-1.44189432e-01,-1.36779219e-01,-1.28491536e-01,-1.19520806e-01,
+-1.10049307e-01,-1.00247167e-01,-9.02723745e-02,-8.02707449e-02,-7.03759491e-02,
+-6.07095100e-02,-5.13807982e-02,-4.24870290e-02,-3.41132618e-02,-2.63324156e-02,
+-1.92052480e-02,-1.27803646e-02,-7.09422538e-03,-2.17113202e-03,1.97676267e-03,
+5.34945866e-03,7.95910880e-03,9.83001571e-03,1.09986365e-02,1.15135787e-02,
+1.14356028e-02,1.08376220e-02,9.80469864e-03,8.43405072e-03,6.83504529e-03,
+5.12920320e-03,3.45019693e-03,1.94385089e-03,7.68141530e-04,9.31972463e-05,
+1.01298603e-04,9.86878178e-04,2.95652053e-03,6.22896245e-03,1.10350922e-02,
+1.76179502e-02,2.62327306e-02,3.71467769e-02,5.06395884e-02,6.70028105e-02,
+8.65402445e-02,1.09567843e-01,1.36413708e-01,1.67418107e-01,2.02933446e-01,
+2.43324280e-01,-2.67912932e-02,-7.45800883e-02,-1.15109377e-01,-1.48921981e-01,
+-1.76542640e-01,-1.98477969e-01,-2.15216532e-01,-2.27228746e-01,-2.34966993e-01,
+-2.38865525e-01,-2.39340499e-01,-2.36789986e-01,-2.31593952e-01,-2.24114299e-01,
+-2.14694813e-01,-2.03661174e-01,-1.91321000e-01,-1.77963778e-01,-1.63860932e-01,
+-1.49265766e-01,-1.34413525e-01,-1.19521327e-01,-1.04788199e-01,-9.03950930e-02,
+-7.65048489e-02,-6.32622242e-02,-5.07938787e-02,-3.92083712e-02,-2.85961796e-02,
+-1.90296751e-02,-1.05631417e-02,-3.23276641e-03,2.94335512e-03,7.96522293e-03,
+1.18509326e-02,1.46366712e-02,1.63767207e-02,1.71434581e-02,1.70273557e-02,
+1.61369741e-02,1.45989750e-02,1.25581110e-02,1.01772277e-02,7.63726793e-03,
+5.13726519e-03,2.89435009e-03,1.14374538e-03,1.38768606e-04,1.50831343e-04,
+1.46943936e-03,4.40219231e-03,9.27478448e-03,1.64310038e-02,2.62327306e-02,
+3.90599445e-02,5.53107150e-02,7.54012018e-02,9.97656733e-02,1.28856465e-01,
+1.63144052e-01,2.03116938e-01,2.49281794e-01,3.02163333e-01,3.62304360e-01,
+-3.79377268e-02,-1.05608903e-01,-1.63000286e-01,-2.10880518e-01,-2.49992654e-01,
+-2.81054109e-01,-3.04756701e-01,-3.21766585e-01,-3.32724303e-01,-3.38244796e-01,
+-3.38917375e-01,-3.35305721e-01,-3.27947915e-01,-3.17356378e-01,-3.04017931e-01,
+-2.88393795e-01,-2.70919502e-01,-2.52005070e-01,-2.32034758e-01,-2.11367339e-01,
+-1.90335855e-01,-1.69247806e-01,-1.48385003e-01,-1.28003687e-01,-1.08334452e-01,
+-8.95822793e-02,-7.19265118e-02,-5.55208959e-02,-4.04935330e-02,-2.69469116e-02,
+-1.49579030e-02,-4.57774894e-03,4.16792883e-03,1.12791304e-02,1.67814773e-02,
+2.07262132e-02,2.31902041e-02,2.42759418e-02,2.41115335e-02,2.28507128e-02,
+2.06728335e-02,1.77828744e-02,1.44114317e-02,1.08147291e-02,7.27460859e-03,
+4.09853552e-03,1.61959720e-03,1.96502850e-04,2.13584251e-04,2.08079489e-03,
+6.23371080e-03,1.31335296e-02,2.32670717e-02,3.71467769e-02,5.53107150e-02,
+7.83225670e-02,1.06771640e-01,1.41272873e-01,1.82466805e-01,2.31019616e-01,
+2.87623107e-01,3.52994710e-01,4.27877426e-01,5.13039947e-01,-5.17178327e-02,
+-1.43969178e-01,-2.22206801e-01,-2.87478566e-01,-3.40797395e-01,-3.83141309e-01,
+-4.15453345e-01,-4.38641727e-01,-4.53579605e-01,-4.61105317e-01,-4.62022185e-01,
+-4.57098693e-01,-4.47068304e-01,-4.32629585e-01,-4.14446235e-01,-3.93146932e-01,
+-3.69325489e-01,-3.43540758e-01,-3.16316664e-01,-2.88142204e-01,-2.59471476e-01,
+-2.30723619e-01,-2.02282831e-01,-1.74498424e-01,-1.47684738e-01,-1.22121215e-01,
+-9.80523527e-02,-7.56877288e-02,-5.52019812e-02,-3.67348306e-02,-2.03910563e-02,
+-6.24052295e-03,5.68184396e-03,1.53760435e-02,2.28770059e-02,2.82545872e-02,
+3.16135734e-02,3.30936834e-02,3.28695551e-02,3.11507676e-02,2.81818192e-02,
+2.42421404e-02,1.96460914e-02,1.47429593e-02,9.91696212e-03,5.58724487e-03,
+2.20788270e-03,2.67878495e-04,2.91164382e-04,2.83660134e-03,8.49797949e-03,
+1.79040171e-02,3.17183621e-02,5.06395884e-02,7.54012018e-02,1.06771640e-01,
+1.45554259e-01,1.92587361e-01,2.48744145e-01,3.14932793e-01,3.92096341e-01,
+4.81212854e-01,5.83295226e-01,6.99391305e-01,-6.84294701e-02,-1.90490097e-01,
+-2.94008732e-01,-3.80371809e-01,-4.50919598e-01,-5.06946146e-01,-5.49699247e-01,
+-5.80380440e-01,-6.00145221e-01,-6.10102713e-01,-6.11315906e-01,-6.04801476e-01,
+-5.91529906e-01,-5.72425663e-01,-5.48366666e-01,-5.20184934e-01,-4.88666028e-01,
+-4.54549432e-01,-4.18528378e-01,-3.81249905e-01,-3.43314767e-01,-3.05277586e-01,
+-2.67646700e-01,-2.30884269e-01,-1.95406258e-01,-1.61582366e-01,-1.29736111e-01,
+-1.00144781e-01,-7.30394572e-02,-4.86049913e-02,-2.69800406e-02,-8.25702958e-03,
+7.51782395e-03,2.03445200e-02,3.02692764e-02,3.73845212e-02,4.18289006e-02,
+4.37872782e-02,4.34907302e-02,4.12165485e-02,3.72882374e-02,3.20755281e-02,
+2.59943530e-02,1.95068661e-02,1.31214401e-02,7.39265746e-03,2.92131817e-03,
+3.54438351e-04,3.85248626e-04,3.75319528e-03,1.12439403e-02,2.36893594e-02,
+4.19675484e-02,6.70028105e-02,9.97656733e-02,1.41272873e-01,1.92587361e-01,
+2.54818320e-01,3.29121113e-01,4.16697353e-01,5.18794835e-01,6.36707664e-01,
+7.71775961e-01,9.25386310e-01,-8.83829072e-02,-2.46035337e-01,-3.79739106e-01,
+-4.91284907e-01,-5.82403839e-01,-6.54767215e-01,-7.09986746e-01,-7.49614358e-01,
+-7.75142372e-01,-7.88003385e-01,-7.89570272e-01,-7.81156301e-01,-7.64014900e-01,
+-7.39339948e-01,-7.08265603e-01,-6.71866298e-01,-6.31156743e-01,-5.87092102e-01,
+-5.40567636e-01,-4.92419034e-01,-4.43422347e-01,-3.94293845e-01,-3.45690131e-01,
+-2.98208117e-01,-2.52385020e-01,-2.08698377e-01,-1.67566031e-01,-1.29346132e-01,
+-9.43371207e-02,-6.27777800e-02,-3.48471850e-02,-1.06647070e-02,9.70995612e-03,
+2.62768045e-02,3.90955321e-02,4.82855216e-02,5.40258437e-02,5.65552674e-02,
+5.61722480e-02,5.32349311e-02,4.81611639e-02,4.14284728e-02,3.35740782e-02,
+2.51948982e-02,1.69475377e-02,9.54829156e-03,3.77314910e-03,4.57789487e-04,
+4.97583766e-04,4.84759407e-03,1.45225748e-02,3.05969696e-02,5.42049184e-02,
+8.65402445e-02,1.28856465e-01,1.82466805e-01,2.48744145e-01,3.29121113e-01,
+4.25089955e-01,5.38202643e-01,6.70070887e-01,8.22366059e-01,9.96819139e-01,
+1.19522083e+00,-1.11900821e-01,-3.11503202e-01,-4.80784327e-01,-6.22011483e-01,
+-7.37376392e-01,-8.28994989e-01,-8.98907959e-01,-9.49080169e-01,-9.81400967e-01,
+-9.97684181e-01,-9.99668002e-01,-9.89015102e-01,-9.67312574e-01,-9.36071873e-01,
+-8.96728873e-01,-8.50644052e-01,-7.99102068e-01,-7.43312120e-01,-6.84407890e-01,
+-6.23447418e-01,-5.61413169e-01,-4.99211997e-01,-4.37675238e-01,-3.77558678e-01,
+-3.19542468e-01,-2.64231175e-01,-2.12153882e-01,-1.63764000e-01,-1.19439401e-01,
+-7.94823989e-02,-4.41197157e-02,-1.35024926e-02,1.22936899e-02,3.32688317e-02,
+4.94985096e-02,6.11338727e-02,6.84016496e-02,7.16041252e-02,7.11191893e-02,
+6.74002841e-02,6.09764270e-02,5.24522252e-02,4.25078459e-02,3.18990424e-02,
+2.14571282e-02,1.20890085e-02,4.77715116e-03,5.79603249e-04,6.29986404e-04,
+6.13749679e-03,1.83869042e-02,3.87385562e-02,6.86283708e-02,1.09567843e-01,
+1.63144052e-01,2.31019616e-01,3.14932793e-01,4.16697353e-01,5.38202643e-01,
+6.81413651e-01,8.48370910e-01,1.04119039e+00,1.26206398e+00,1.51325870e+00,
+-1.39318302e-01,-3.87826443e-01,-5.98584175e-01,-7.74414241e-01,-9.18045342e-01,
+-1.03211200e+00,-1.11915481e+00,-1.18161988e+00,-1.22185981e+00,-1.24213266e+00,
+-1.24460268e+00,-1.23133957e+00,-1.20431960e+00,-1.16542435e+00,-1.11644173e+00,
+-1.05906546e+00,-9.94894803e-01,-9.25435483e-01,-8.52098763e-01,-7.76202023e-01,
+-6.98968351e-01,-6.21526897e-01,-5.44912636e-01,-4.70066577e-01,-3.97835463e-01,
+-3.28972042e-01,-2.64134973e-01,-2.03888789e-01,-1.48703963e-01,-9.89568606e-02,
+-5.49297482e-02,-1.68108195e-02,1.53058404e-02,4.14202288e-02,6.16264381e-02,
+7.61126503e-02,8.51611421e-02,8.91482830e-02,8.85445252e-02,8.39144289e-02,
+7.59166256e-02,6.53038546e-02,5.29229492e-02,3.97148132e-02,2.67144684e-02,
+1.50510082e-02,5.94762946e-03,7.21615274e-04,7.84343167e-04,7.64128100e-03,
+2.28919890e-02,4.82301190e-02,8.54434147e-02,1.36413708e-01,2.03116938e-01,
+2.87623107e-01,3.92096341e-01,5.18794835e-01,6.70070887e-01,8.48370910e-01,
+1.05623531e+00,1.29629874e+00,1.57128978e+00,1.88403118e+00,-1.70982867e-01,
+-4.75972474e-01,-7.34631658e-01,-9.50424790e-01,-1.12670064e+00,-1.26669264e+00,
+-1.37351859e+00,-1.45018101e+00,-1.49956679e+00,-1.52444732e+00,-1.52747858e+00,
+-1.51120102e+00,-1.47803986e+00,-1.43030453e+00,-1.37018907e+00,-1.29977202e+00,
+-1.22101665e+00,-1.13577044e+00,-1.04576564e+00,-9.52618837e-01,-8.57831359e-01,
+-7.62788832e-01,-6.68761551e-01,-5.76904297e-01,-4.88256335e-01,-4.03741509e-01,
+-3.24168116e-01,-2.50229061e-01,-1.82501718e-01,-1.21447980e-01,-6.74142987e-02,
+-2.06316169e-02,1.87845845e-02,5.08343056e-02,7.56330267e-02,9.34116915e-02,
+1.04516745e-01,1.09410092e-01,1.08669110e-01,1.02986671e-01,9.31711197e-02,
+8.01462531e-02,6.49513900e-02,4.87412810e-02,3.27861905e-02,1.84718333e-02,
+7.29941903e-03,8.85625544e-04,9.62610298e-04,9.37800761e-03,2.80949287e-02,
+5.91919646e-02,1.04863182e-01,1.67418107e-01,2.49281794e-01,3.52994710e-01,
+4.81212854e-01,6.36707664e-01,8.22366059e-01,1.04119039e+00,1.29629874e+00,
+1.59092426e+00,1.92841578e+00,2.31223774e+00,-2.07254410e-01,-5.76943159e-01,
+-8.90473187e-01,-1.15204370e+00,-1.36571395e+00,-1.53540325e+00,-1.66489077e+00,
+-1.75781596e+00,-1.81767821e+00,-1.84783673e+00,-1.85151112e+00,-1.83178055e+00,
+-1.79158473e+00,-1.73372293e+00,-1.66085482e+00,-1.57549989e+00,-1.48003769e+00,
+-1.37670767e+00,-1.26760972e+00,-1.15470314e+00,-1.03980792e+00,-9.24603462e-01,
+-8.10629666e-01,-6.99286222e-01,-5.91832876e-01,-4.89389449e-01,-3.92935723e-01,
+-3.03311557e-01,-2.21216813e-01,-1.47211418e-01,-8.17152709e-02,-2.50083171e-02,
+2.27694623e-02,6.16180710e-02,9.16774794e-02,1.13227636e-01,1.26688465e-01,
+1.32619858e-01,1.31721690e-01,1.24833807e-01,1.12936027e-01,9.71481279e-02,
+7.87298828e-02,5.90810403e-02,3.97413038e-02,2.23903656e-02,8.84788577e-03,
+1.07349828e-03,1.16681424e-03,1.13674169e-02,3.40548642e-02,7.17486888e-02,
+1.27108380e-01,2.02933446e-01,3.02163333e-01,4.27877426e-01,5.83295226e-01,
+7.71775961e-01,9.96819139e-01,1.26206398e+00,1.57128978e+00,1.92841578e+00,
+2.33750129e+00,2.80274558e+00,-2.48505279e-01,-6.91774964e-01,-1.06770837e+00,
+-1.38134050e+00,-1.63753867e+00,-1.84100199e+00,-1.99626207e+00,-2.10768270e+00,
+-2.17945957e+00,-2.21562076e+00,-2.22002625e+00,-2.19636869e+00,-2.14817262e+00,
+-2.07879424e+00,-1.99142289e+00,-1.88907933e+00,-1.77461672e+00,-1.65072060e+00,
+-1.51990819e+00,-1.38452935e+00,-1.24676597e+00,-1.10863185e+00,-9.71973240e-01,
+-8.38468552e-01,-7.09628284e-01,-5.86794972e-01,-4.71143633e-01,-3.63681138e-01,
+-2.65246689e-01,-1.76511630e-01,-9.79794562e-02,-2.99858432e-02,2.73013804e-02,
+7.38822147e-02,1.09924495e-01,1.35763884e-01,1.51903883e-01,1.59015834e-01,
+1.57938913e-01,1.49680093e-01,1.35414228e-01,1.16483994e-01,9.43998769e-02,
+7.08402321e-02,4.76512127e-02,2.68468298e-02,1.06089236e-02,1.28716184e-03,
+1.39905093e-03,1.36299292e-02,4.08329703e-02,8.60291719e-02,1.52407393e-01,
+2.43324280e-01,3.62304360e-01,5.13039947e-01,6.99391305e-01,9.25386310e-01,
+1.19522083e+00,1.51325870e+00,1.88403118e+00,2.31223774e+00,2.80274558e+00,
+3.36058974e+00,
+},{
+-1.13600686e-01,-2.46227890e-01,-2.84252256e-01,-2.60658830e-01,-2.02935070e-01,
+-1.33071005e-01,-6.75591230e-02,-1.73944347e-02,1.19255669e-02,2.04008799e-02,
+1.35290045e-02,2.30494165e-03,3.22119170e-03,3.82677577e-02,1.34932145e-01,
+3.26199353e-01,-2.46227890e-01,-5.33695459e-01,-6.16112769e-01,-5.64974368e-01,
+-4.39858884e-01,-2.88429528e-01,-1.46433443e-01,-3.77021879e-02,2.58484986e-02,
+4.42186221e-02,2.93239262e-02,4.99592815e-03,6.98188739e-03,8.29448253e-02,
+2.92463511e-01,7.07032442e-01,-2.84252256e-01,-6.16112769e-01,-7.11257577e-01,
+-6.52221978e-01,-5.07785261e-01,-3.32970977e-01,-1.69046804e-01,-4.35244478e-02,
+2.98402198e-02,5.10471947e-02,3.38523500e-02,5.76743716e-03,8.06008279e-03,
+9.57537889e-02,3.37627918e-01,8.16217721e-01,-2.60658830e-01,-5.64974368e-01,
+-6.52221978e-01,-5.98086357e-01,-4.65638161e-01,-3.05333823e-01,-1.55015633e-01,
+-3.99118401e-02,2.73634288e-02,4.68101874e-02,3.10425460e-02,5.28872991e-03,
+7.39108212e-03,8.78060535e-02,3.09604228e-01,7.48470247e-01,-2.02935070e-01,
+-4.39858884e-01,-5.07785261e-01,-4.65638161e-01,-3.62521052e-01,-2.37716630e-01,
+-1.20686904e-01,-3.10732331e-02,2.13037077e-02,3.64439189e-02,2.41680704e-02,
+4.11752332e-03,5.75430272e-03,6.83611184e-02,2.41041347e-01,5.82719028e-01,
+-1.33071005e-01,-2.88429528e-01,-3.32970977e-01,-3.05333823e-01,-2.37716630e-01,
+-1.55878380e-01,-7.91382566e-02,-2.03757118e-02,1.39695210e-02,2.38974392e-02,
+1.58477761e-02,2.69999146e-03,3.77327995e-03,4.48265672e-02,1.58058509e-01,
+3.82107496e-01,-6.75591230e-02,-1.46433443e-01,-1.69046804e-01,-1.55015633e-01,
+-1.20686904e-01,-7.91382566e-02,-4.01778817e-02,-1.03445919e-02,7.09221838e-03,
+1.21325459e-02,8.04579351e-03,1.37076492e-03,1.91566523e-03,2.27581020e-02,
+8.02450851e-02,1.93993032e-01,-1.73944347e-02,-3.77021879e-02,-4.35244478e-02,
+-3.99118401e-02,-3.10732331e-02,-2.03757118e-02,-1.03445919e-02,-2.66342005e-03,
+1.82603206e-03,3.12376418e-03,2.07154895e-03,3.52930569e-04,4.93225933e-04,
+5.85952401e-03,2.06606872e-02,4.99473475e-02,1.19255669e-02,2.58484986e-02,
+2.98402198e-02,2.73634288e-02,2.13037077e-02,1.39695210e-02,7.09221838e-03,
+1.82603206e-03,-1.25192152e-03,-2.14164262e-03,-1.42024714e-03,-2.41968024e-04,
+-3.38154088e-04,-4.01727064e-03,-1.41648985e-02,-3.42437364e-02,2.04008799e-02,
+4.42186221e-02,5.10471947e-02,4.68101874e-02,3.64439189e-02,2.38974392e-02,
+1.21325459e-02,3.12376418e-03,-2.14164262e-03,-3.66367423e-03,-2.42959452e-03,
+-4.13930917e-04,-5.78474894e-04,-6.87228143e-03,-2.42316686e-02,-5.85802197e-02,
+1.35290045e-02,2.93239262e-02,3.38523500e-02,3.10425460e-02,2.41680704e-02,
+1.58477761e-02,8.04579351e-03,2.07154895e-03,-1.42024714e-03,-2.42959452e-03,
+-1.61120470e-03,-2.74501537e-04,-3.83620179e-04,-4.55740746e-03,-1.60694234e-02,
+-3.88479345e-02,2.30494165e-03,4.99592815e-03,5.76743716e-03,5.28872991e-03,
+4.11752332e-03,2.69999146e-03,1.37076492e-03,3.52930569e-04,-2.41968024e-04,
+-4.13930917e-04,-2.74501537e-04,-4.67669306e-05,-6.53575116e-05,-7.76447239e-04,
+-2.73775356e-03,-6.61853747e-03,3.22119170e-03,6.98188739e-03,8.06008279e-03,
+7.39108212e-03,5.75430272e-03,3.77327995e-03,1.91566523e-03,4.93225933e-04,
+-3.38154088e-04,-5.78474894e-04,-3.83620179e-04,-6.53575116e-05,-9.13381373e-05,
+-1.08509709e-03,-3.82605311e-03,-9.24950838e-03,3.82677577e-02,8.29448253e-02,
+9.57537889e-02,8.78060535e-02,6.83611184e-02,4.48265672e-02,2.27581020e-02,
+5.85952401e-03,-4.01727064e-03,-6.87228143e-03,-4.55740746e-03,-7.76447239e-04,
+-1.08509709e-03,-1.28909536e-02,-4.54535075e-02,-1.09884158e-01,1.34932145e-01,
+2.92463511e-01,3.37627918e-01,3.09604228e-01,2.41041347e-01,1.58058509e-01,
+8.02450851e-02,2.06606872e-02,-1.41648985e-02,-2.42316686e-02,-1.60694234e-02,
+-2.73775356e-03,-3.82605311e-03,-4.54535075e-02,-1.60269111e-01,-3.87451649e-01,
+3.26199353e-01,7.07032442e-01,8.16217721e-01,7.48470247e-01,5.82719028e-01,
+3.82107496e-01,1.93993032e-01,4.99473475e-02,-3.42437364e-02,-5.85802197e-02,
+-3.88479345e-02,-6.61853747e-03,-9.24950838e-03,-1.09884158e-01,-3.87451649e-01,
+-9.36666906e-01,-2.46227890e-01,-5.33695459e-01,-6.16112769e-01,-5.64974308e-01,
+-4.39858884e-01,-2.88429528e-01,-1.46433443e-01,-3.77021916e-02,2.58484986e-02,
+4.42186184e-02,2.93239262e-02,4.99592815e-03,6.98188739e-03,8.29448253e-02,
+2.92463511e-01,7.07032442e-01,-5.33695459e-01,-1.15677738e+00,-1.33541572e+00,
+-1.22457385e+00,-9.53387916e-01,-6.25166893e-01,-3.17392409e-01,-8.17189589e-02,
+5.60262538e-02,9.58432332e-02,6.35591969e-02,1.08286031e-02,1.51331415e-02,
+1.79781720e-01,6.33910477e-01,1.53248274e+00,-6.16112769e-01,-1.33541572e+00,
+-1.54164064e+00,-1.41368186e+00,-1.10061741e+00,-7.21709907e-01,-3.66406560e-01,
+-9.43386257e-02,6.46782517e-02,1.10644072e-01,7.33744875e-02,1.25008384e-02,
+1.74701158e-02,2.07544982e-01,7.31803775e-01,1.76914036e+00,-5.64974308e-01,
+-1.22457385e+00,-1.41368186e+00,-1.29634368e+00,-1.00926411e+00,-6.61806703e-01,
+-3.35994184e-01,-8.65083486e-02,5.93098439e-02,1.01460420e-01,6.72842786e-02,
+1.14632472e-02,1.60200652e-02,1.90318376e-01,6.71062768e-01,1.62229860e+00,
+-4.39858884e-01,-9.53387916e-01,-1.10061741e+00,-1.00926411e+00,-7.85759270e-01,
+-5.15247405e-01,-2.61587143e-01,-6.73507899e-02,4.61754836e-02,7.89916739e-02,
+5.23839518e-02,8.92467331e-03,1.24723697e-02,1.48171753e-01,5.22453725e-01,
+1.26303530e+00,-2.88429528e-01,-6.25166893e-01,-7.21709907e-01,-6.61806703e-01,
+-5.15247405e-01,-3.37864190e-01,-1.71531051e-01,-4.41640653e-02,3.02787386e-02,
+5.17973602e-02,3.43498290e-02,5.85219311e-03,8.17853119e-03,9.71609503e-02,
+3.42589557e-01,8.28212559e-01,-1.46433443e-01,-3.17392409e-01,-3.66406560e-01,
+-3.35994184e-01,-2.61587143e-01,-1.71531051e-01,-8.70849937e-02,-2.24217568e-02,
+1.53722828e-02,2.62971222e-02,1.74391437e-02,2.97111343e-03,4.15217737e-03,
+4.93278652e-02,1.73930094e-01,4.20477152e-01,-3.77021916e-02,-8.17189589e-02,
+-9.43386257e-02,-8.65083486e-02,-6.73507899e-02,-4.41640653e-02,-2.24217568e-02,
+-5.77292545e-03,3.95789836e-03,6.77071465e-03,4.49005282e-03,7.64972006e-04,
+1.06906018e-03,1.27004357e-02,4.47817445e-02,1.08260170e-01,2.58484986e-02,
+5.60262538e-02,6.46782517e-02,5.93098439e-02,4.61754836e-02,3.02787386e-02,
+1.53722828e-02,3.95789836e-03,-2.71352218e-03,-4.64197993e-03,-3.07836547e-03,
+-5.24462259e-04,-7.32944172e-04,-8.70737713e-03,-3.07022166e-02,-7.42228106e-02,
+4.42186184e-02,9.58432332e-02,1.10644072e-01,1.01460420e-01,7.89916739e-02,
+5.17973602e-02,2.62971222e-02,6.77071465e-03,-4.64197993e-03,-7.94096198e-03,
+-5.26611134e-03,-8.97189369e-04,-1.25383609e-03,-1.48955723e-02,-5.25217988e-02,
+-1.26971796e-01,2.93239262e-02,6.35591969e-02,7.33744875e-02,6.72842786e-02,
+5.23839518e-02,3.43498290e-02,1.74391437e-02,4.49005282e-03,-3.07836547e-03,
+-5.26611134e-03,-3.49226338e-03,-5.94978221e-04,-8.31491314e-04,-9.87811666e-03,
+-3.48302461e-02,-8.42023492e-02,4.99592815e-03,1.08286031e-02,1.25008384e-02,
+1.14632472e-02,8.92467331e-03,5.85219311e-03,2.97111343e-03,7.64972006e-04,
+-5.24462259e-04,-8.97189369e-04,-5.94978221e-04,-1.01366655e-04,-1.41661483e-04,
+-1.68293843e-03,-5.93404192e-03,-1.43455854e-02,6.98188739e-03,1.51331415e-02,
+1.74701158e-02,1.60200652e-02,1.24723697e-02,8.17853119e-03,4.15217737e-03,
+1.06906018e-03,-7.32944172e-04,-1.25383609e-03,-8.31491314e-04,-1.41661483e-04,
+-1.97974121e-04,-2.35193246e-03,-8.29291623e-03,-2.00481787e-02,8.29448253e-02,
+1.79781720e-01,2.07544982e-01,1.90318376e-01,1.48171753e-01,9.71609503e-02,
+4.93278652e-02,1.27004357e-02,-8.70737713e-03,-1.48955723e-02,-9.87811666e-03,
+-1.68293843e-03,-2.35193246e-03,-2.79409587e-02,-9.85198393e-02,-2.38172367e-01,
+2.92463511e-01,6.33910477e-01,7.31803775e-01,6.71062768e-01,5.22453725e-01,
+3.42589557e-01,1.73930094e-01,4.47817445e-02,-3.07022166e-02,-5.25217988e-02,
+-3.48302461e-02,-5.93404192e-03,-8.29291623e-03,-9.85198393e-02,-3.47381026e-01,
+-8.39795947e-01,7.07032442e-01,1.53248274e+00,1.76914036e+00,1.62229860e+00,
+1.26303530e+00,8.28212559e-01,4.20477152e-01,1.08260170e-01,-7.42228106e-02,
+-1.26971796e-01,-8.42023492e-02,-1.43455854e-02,-2.00481787e-02,-2.38172367e-01,
+-8.39795947e-01,-2.03021216e+00,-2.84252256e-01,-6.16112769e-01,-7.11257577e-01,
+-6.52221918e-01,-5.07785261e-01,-3.32970977e-01,-1.69046804e-01,-4.35244478e-02,
+2.98402198e-02,5.10471947e-02,3.38523500e-02,5.76743716e-03,8.06008279e-03,
+9.57537889e-02,3.37627947e-01,8.16217780e-01,-6.16112769e-01,-1.33541560e+00,
+-1.54164064e+00,-1.41368186e+00,-1.10061729e+00,-7.21709907e-01,-3.66406560e-01,
+-9.43386182e-02,6.46782517e-02,1.10644072e-01,7.33744875e-02,1.25008384e-02,
+1.74701158e-02,2.07544982e-01,7.31803775e-01,1.76914036e+00,-7.11257577e-01,
+-1.54164064e+00,-1.77971256e+00,-1.63199329e+00,-1.27058303e+00,-8.33161831e-01,
+-4.22989845e-01,-1.08907111e-01,7.46663585e-02,1.27730563e-01,8.47055390e-02,
+1.44313127e-02,2.01679841e-02,2.39595652e-01,8.44814420e-01,2.04234433e+00,
+-6.52221918e-01,-1.41368186e+00,-1.63199329e+00,-1.49653494e+00,-1.16512239e+00,
+-7.64007926e-01,-3.87880951e-01,-9.98676270e-02,6.84689209e-02,1.17128707e-01,
+7.76748285e-02,1.32334884e-02,1.84940062e-02,2.19708785e-01,7.74693370e-01,
+1.87282634e+00,-5.07785261e-01,-1.10061729e+00,-1.27058303e+00,-1.16512239e+00,
+-9.07102168e-01,-5.94815850e-01,-3.01983416e-01,-7.77516142e-02,5.33062518e-02,
+9.11901668e-02,6.04734793e-02,1.03028892e-02,1.43984472e-02,1.71053559e-01,
+6.03134990e-01,1.45808280e+00,-3.32970977e-01,-7.21709907e-01,-8.33161831e-01,
+-7.64007926e-01,-5.94815850e-01,-3.90039742e-01,-1.98020175e-01,-5.09842150e-02,
+3.49546112e-02,5.97963035e-02,3.96543890e-02,6.75593317e-03,9.44152195e-03,
+1.12165280e-01,3.95494848e-01,9.56111431e-01,-1.69046804e-01,-3.66406560e-01,
+-4.22989845e-01,-3.87880951e-01,-3.01983416e-01,-1.98020175e-01,-1.00533314e-01,
+-2.58842949e-02,1.77461877e-02,3.03581227e-02,2.01322287e-02,3.42993531e-03,
+4.79338784e-03,5.69454469e-02,2.00789690e-01,4.85410422e-01,-4.35244478e-02,
+-9.43386182e-02,-1.08907111e-01,-9.98676270e-02,-7.77516142e-02,-5.09842150e-02,
+-2.58842949e-02,-6.66442420e-03,4.56910720e-03,7.81629980e-03,5.18344110e-03,
+8.83104745e-04,1.23415259e-03,1.46617331e-02,5.16972803e-02,1.24978527e-01,
+2.98402198e-02,6.46782517e-02,7.46663585e-02,6.84689209e-02,5.33062518e-02,
+3.49546112e-02,1.77461877e-02,4.56910720e-03,-3.13256495e-03,-5.35882963e-03,
+-3.55374999e-03,-6.05453737e-04,-8.46130948e-04,-1.00520356e-02,-3.54434848e-02,
+-8.56848583e-02,5.10471947e-02,1.10644072e-01,1.27730563e-01,1.17128707e-01,
+9.11901668e-02,5.97963035e-02,3.03581227e-02,7.81629980e-03,-5.35882963e-03,
+-9.16726515e-03,-6.07934454e-03,-1.03574013e-03,-1.44746294e-03,-1.71958599e-02,
+-6.06326163e-02,-1.46579742e-01,3.38523500e-02,7.33744875e-02,8.47055390e-02,
+7.76748285e-02,6.04734793e-02,3.96543890e-02,2.01322287e-02,5.18344110e-03,
+-3.55374999e-03,-6.07934454e-03,-4.03156504e-03,-6.86859246e-04,-9.59896483e-04,
+-1.14035700e-02,-4.02089953e-02,-9.72055122e-02,5.76743716e-03,1.25008384e-02,
+1.44313127e-02,1.32334884e-02,1.03028892e-02,6.75593317e-03,3.42993531e-03,
+8.83104745e-04,-6.05453737e-04,-1.03574013e-03,-6.86859246e-04,-1.17020463e-04,
+-1.63537916e-04,-1.94283051e-03,-6.85042189e-03,-1.65609401e-02,8.06008279e-03,
+1.74701158e-02,2.01679841e-02,1.84940062e-02,1.43984472e-02,9.44152195e-03,
+4.79338784e-03,1.23415259e-03,-8.46130948e-04,-1.44746294e-03,-9.59896483e-04,
+-1.63537916e-04,-2.28546778e-04,-2.71513569e-03,-9.57357045e-03,-2.31441706e-02,
+9.57537889e-02,2.07544982e-01,2.39595652e-01,2.19708785e-01,1.71053559e-01,
+1.12165280e-01,5.69454469e-02,1.46617331e-02,-1.00520356e-02,-1.71958599e-02,
+-1.14035700e-02,-1.94283051e-03,-2.71513569e-03,-3.22558135e-02,-1.13734014e-01,
+-2.74952739e-01,3.37627947e-01,7.31803775e-01,8.44814420e-01,7.74693370e-01,
+6.03134990e-01,3.95494848e-01,2.00789690e-01,5.16972803e-02,-3.54434848e-02,
+-6.06326163e-02,-4.02089953e-02,-6.85042189e-03,-9.57357045e-03,-1.13734014e-01,
+-4.01026249e-01,-9.69483614e-01,8.16217780e-01,1.76914036e+00,2.04234433e+00,
+1.87282634e+00,1.45808280e+00,9.56111431e-01,4.85410422e-01,1.24978527e-01,
+-8.56848583e-02,-1.46579742e-01,-9.72055122e-02,-1.65609401e-02,-2.31441706e-02,
+-2.74952739e-01,-9.69483614e-01,-2.34373307e+00,-2.60658830e-01,-5.64974308e-01,
+-6.52221918e-01,-5.98086357e-01,-4.65638161e-01,-3.05333793e-01,-1.55015618e-01,
+-3.99118438e-02,2.73634288e-02,4.68101874e-02,3.10425442e-02,5.28872991e-03,
+7.39108212e-03,8.78060609e-02,3.09604228e-01,7.48470247e-01,-5.64974308e-01,
+-1.22457385e+00,-1.41368175e+00,-1.29634380e+00,-1.00926411e+00,-6.61806703e-01,
+-3.35994184e-01,-8.65083486e-02,5.93098439e-02,1.01460420e-01,6.72842786e-02,
+1.14632472e-02,1.60200652e-02,1.90318376e-01,6.71062768e-01,1.62229860e+00,
+-6.52221918e-01,-1.41368175e+00,-1.63199329e+00,-1.49653494e+00,-1.16512239e+00,
+-7.64007926e-01,-3.87880951e-01,-9.98676270e-02,6.84689209e-02,1.17128707e-01,
+7.76748285e-02,1.32334884e-02,1.84940062e-02,2.19708785e-01,7.74693370e-01,
+1.87282622e+00,-5.98086357e-01,-1.29634380e+00,-1.49653494e+00,-1.37231994e+00,
+-1.06841516e+00,-7.00593889e-01,-3.55686128e-01,-9.15784389e-02,6.27858788e-02,
+1.07406817e-01,7.12276772e-02,1.21350856e-02,1.69589706e-02,2.01472580e-01,
+7.10392416e-01,1.71737838e+00,-4.65638161e-01,-1.00926411e+00,-1.16512239e+00,
+-1.06841516e+00,-8.31811070e-01,-5.45445085e-01,-2.76918262e-01,-7.12980926e-02,
+4.88817394e-02,8.36212263e-02,5.54540716e-02,9.44773108e-03,1.32033508e-02,
+1.56855807e-01,5.53073704e-01,1.33705938e+00,-3.05333793e-01,-6.61806703e-01,
+-7.64007926e-01,-7.00593889e-01,-5.45445085e-01,-3.57665747e-01,-1.81584150e-01,
+-4.67524379e-02,3.20533179e-02,5.48331030e-02,3.63630056e-02,6.19517872e-03,
+8.65785871e-03,1.02855362e-01,3.62668067e-01,8.76752496e-01,-1.55015618e-01,
+-3.35994184e-01,-3.87880951e-01,-3.55686128e-01,-2.76918262e-01,-1.81584150e-01,
+-9.21888724e-02,-2.37358529e-02,1.62732229e-02,2.78383456e-02,1.84612181e-02,
+3.14524467e-03,4.39552823e-03,5.22188731e-02,1.84123799e-01,4.45120484e-01,
+-3.99118438e-02,-8.65083486e-02,-9.98676270e-02,-9.15784389e-02,-7.12980926e-02,
+-4.67524379e-02,-2.37358529e-02,-6.11126516e-03,4.18986334e-03,7.16753304e-03,
+4.75320639e-03,8.09805526e-04,1.13171584e-03,1.34447832e-02,4.74063158e-02,
+1.14605092e-01,2.73634288e-02,5.93098439e-02,6.84689209e-02,6.27858788e-02,
+4.88817394e-02,3.20533179e-02,1.62732229e-02,4.18986334e-03,-2.87255645e-03,
+-4.91403742e-03,-3.25878267e-03,-5.55199978e-04,-7.75900611e-04,-9.21769906e-03,
+-3.25016156e-02,-7.85728619e-02,4.68101874e-02,1.01460420e-01,1.17128707e-01,
+1.07406817e-01,8.36212263e-02,5.48331030e-02,2.78383456e-02,7.16753304e-03,
+-4.91403742e-03,-8.40636622e-03,-5.57474792e-03,-9.49771900e-04,-1.32732093e-03,
+-1.57685727e-02,-5.56000024e-02,-1.34413362e-01,3.10425442e-02,6.72842786e-02,
+7.76748285e-02,7.12276772e-02,5.54540716e-02,3.63630056e-02,1.84612181e-02,
+4.75320639e-03,-3.25878267e-03,-5.57474792e-03,-3.69693828e-03,-6.29848742e-04,
+-8.80223408e-04,-1.04570538e-02,-3.68715785e-02,-8.91372859e-02,5.28872991e-03,
+1.14632472e-02,1.32334884e-02,1.21350856e-02,9.44773108e-03,6.19517872e-03,
+3.14524467e-03,8.09805526e-04,-5.55199978e-04,-9.49771900e-04,-6.29848742e-04,
+-1.07307562e-04,-1.49963977e-04,-1.78157212e-03,-6.28182478e-03,-1.51863527e-02,
+7.39108212e-03,1.60200652e-02,1.84940062e-02,1.69589706e-02,1.32033508e-02,
+8.65785871e-03,4.39552823e-03,1.13171584e-03,-7.75900611e-04,-1.32732093e-03,
+-8.80223408e-04,-1.49963977e-04,-2.09576989e-04,-2.48977472e-03,-8.77894741e-03,
+-2.12231632e-02,8.78060609e-02,1.90318376e-01,2.19708785e-01,2.01472580e-01,
+1.56855807e-01,1.02855362e-01,5.22188731e-02,1.34447832e-02,-9.21769906e-03,
+-1.57685727e-02,-1.04570538e-02,-1.78157212e-03,-2.48977472e-03,-2.95785237e-02,
+-1.04293890e-01,-2.52131194e-01,3.09604228e-01,6.71062768e-01,7.74693370e-01,
+7.10392416e-01,5.53073704e-01,3.62668067e-01,1.84123799e-01,4.74063158e-02,
+-3.25016156e-02,-5.56000024e-02,-3.68715785e-02,-6.28182478e-03,-8.77894741e-03,
+-1.04293890e-01,-3.67740363e-01,-8.89014721e-01,7.48470247e-01,1.62229860e+00,
+1.87282622e+00,1.71737838e+00,1.33705938e+00,8.76752496e-01,4.45120484e-01,
+1.14605092e-01,-7.85728619e-02,-1.34413362e-01,-8.91372859e-02,-1.51863527e-02,
+-2.12231632e-02,-2.52131194e-01,-8.89014721e-01,-2.14919901e+00,-2.02935070e-01,
+-4.39858884e-01,-5.07785261e-01,-4.65638161e-01,-3.62521052e-01,-2.37716630e-01,
+-1.20686904e-01,-3.10732350e-02,2.13037077e-02,3.64439152e-02,2.41680704e-02,
+4.11752332e-03,5.75430272e-03,6.83611184e-02,2.41041347e-01,5.82719028e-01,
+-4.39858884e-01,-9.53387916e-01,-1.10061729e+00,-1.00926423e+00,-7.85759270e-01,
+-5.15247405e-01,-2.61587143e-01,-6.73507899e-02,4.61754836e-02,7.89916739e-02,
+5.23839518e-02,8.92467331e-03,1.24723697e-02,1.48171753e-01,5.22453725e-01,
+1.26303518e+00,-5.07785261e-01,-1.10061729e+00,-1.27058291e+00,-1.16512239e+00,
+-9.07102227e-01,-5.94815850e-01,-3.01983416e-01,-7.77516142e-02,5.33062518e-02,
+9.11901668e-02,6.04734831e-02,1.03028892e-02,1.43984472e-02,1.71053559e-01,
+6.03134930e-01,1.45808268e+00,-4.65638161e-01,-1.00926423e+00,-1.16512239e+00,
+-1.06841516e+00,-8.31811070e-01,-5.45445085e-01,-2.76918262e-01,-7.12980926e-02,
+4.88817394e-02,8.36212263e-02,5.54540753e-02,9.44773108e-03,1.32033508e-02,
+1.56855807e-01,5.53073704e-01,1.33705938e+00,-3.62521052e-01,-7.85759270e-01,
+-9.07102227e-01,-8.31811070e-01,-6.47603810e-01,-4.24654484e-01,-2.15593815e-01,
+-5.55088930e-02,3.80567163e-02,6.51030317e-02,4.31735851e-02,7.35550001e-03,
+1.02794254e-02,1.22119576e-01,4.30593699e-01,1.04096317e+00,-2.37716630e-01,
+-5.15247405e-01,-5.94815850e-01,-5.45445085e-01,-4.24654484e-01,-2.78459489e-01,
+-1.41371742e-01,-3.63989547e-02,2.49550045e-02,4.26901318e-02,2.83102989e-02,
+4.82323626e-03,6.74054725e-03,8.00777078e-02,2.82354027e-01,6.82592750e-01,
+-1.20686904e-01,-2.61587143e-01,-3.01983416e-01,-2.76918262e-01,-2.15593815e-01,
+-1.41371742e-01,-7.17733428e-02,-1.84794702e-02,1.26694636e-02,2.16734521e-02,
+1.43729206e-02,2.44871993e-03,3.42212408e-03,4.06548344e-02,1.43348977e-01,
+3.46547097e-01,-3.10732350e-02,-6.73507899e-02,-7.77516142e-02,-7.12980926e-02,
+-5.55088930e-02,-3.63989547e-02,-1.84794702e-02,-4.75790538e-03,3.26200435e-03,
+5.58025949e-03,3.70059302e-03,6.30471448e-04,8.81093612e-04,1.04673924e-02,
+3.69080305e-02,8.92254114e-02,2.13037077e-02,4.61754836e-02,5.33062518e-02,
+4.88817394e-02,3.80567163e-02,2.49550045e-02,1.26694636e-02,3.26200435e-03,
+-2.23641936e-03,-3.82580748e-03,-2.53711455e-03,-4.32249130e-04,-6.04074856e-04,
+-7.17640948e-03,-2.53040250e-02,-6.11726455e-02,3.64439152e-02,7.89916739e-02,
+9.11901668e-02,8.36212263e-02,6.51030317e-02,4.26901318e-02,2.16734521e-02,
+5.58025949e-03,-3.82580748e-03,-6.54474879e-03,-4.34020162e-03,-7.39441777e-04,
+-1.03338133e-03,-1.22765712e-02,-4.32871990e-02,-1.04647085e-01,2.41680704e-02,
+5.23839518e-02,6.04734831e-02,5.54540753e-02,4.31735851e-02,2.83102989e-02,
+1.43729206e-02,3.70059302e-03,-2.53711455e-03,-4.34020162e-03,-2.87823915e-03,
+-4.90366656e-04,-6.85295032e-04,-8.14130530e-03,-2.87062470e-02,-6.93975389e-02,
+4.11752332e-03,8.92467331e-03,1.03028892e-02,9.44773108e-03,7.35550001e-03,
+4.82323626e-03,2.44871993e-03,6.30471448e-04,-4.32249130e-04,-7.39441777e-04,
+-4.90366656e-04,-8.35439496e-05,-1.16753967e-04,-1.38703710e-03,-4.89069382e-03,
+-1.18232854e-02,5.75430272e-03,1.24723697e-02,1.43984472e-02,1.32033508e-02,
+1.02794254e-02,6.74054725e-03,3.42212408e-03,8.81093612e-04,-6.04074856e-04,
+-1.03338133e-03,-6.85295032e-04,-1.16753967e-04,-1.63165474e-04,-1.93840591e-03,
+-6.83482084e-03,-1.65232252e-02,6.83611184e-02,1.48171753e-01,1.71053559e-01,
+1.56855807e-01,1.22119576e-01,8.00777078e-02,4.06548344e-02,1.04673924e-02,
+-7.17640948e-03,-1.22765712e-02,-8.14130530e-03,-1.38703710e-03,-1.93840591e-03,
+-2.30282620e-02,-8.11976641e-02,-1.96295902e-01,2.41041347e-01,5.22453725e-01,
+6.03134930e-01,5.53073704e-01,4.30593699e-01,2.82354027e-01,1.43348977e-01,
+3.69080305e-02,-2.53040250e-02,-4.32871990e-02,-2.87062470e-02,-4.89069382e-03,
+-6.83482084e-03,-8.11976641e-02,-2.86303043e-01,-6.92139506e-01,5.82719028e-01,
+1.26303518e+00,1.45808268e+00,1.33705938e+00,1.04096317e+00,6.82592750e-01,
+3.46547097e-01,8.92254114e-02,-6.11726455e-02,-1.04647085e-01,-6.93975389e-02,
+-1.18232854e-02,-1.65232252e-02,-1.96295902e-01,-6.92139506e-01,-1.67325187e+00,
+-1.33071005e-01,-2.88429528e-01,-3.32970977e-01,-3.05333823e-01,-2.37716630e-01,
+-1.55878380e-01,-7.91382566e-02,-2.03757118e-02,1.39695210e-02,2.38974392e-02,
+1.58477761e-02,2.69999146e-03,3.77327995e-03,4.48265672e-02,1.58058509e-01,
+3.82107496e-01,-2.88429528e-01,-6.25166893e-01,-7.21709907e-01,-6.61806762e-01,
+-5.15247464e-01,-3.37864190e-01,-1.71531051e-01,-4.41640653e-02,3.02787386e-02,
+5.17973639e-02,3.43498290e-02,5.85219311e-03,8.17853119e-03,9.71609503e-02,
+3.42589557e-01,8.28212500e-01,-3.32970977e-01,-7.21709907e-01,-8.33161831e-01,
+-7.64007926e-01,-5.94815910e-01,-3.90039742e-01,-1.98020175e-01,-5.09842150e-02,
+3.49546112e-02,5.97963035e-02,3.96543927e-02,6.75593317e-03,9.44152195e-03,
+1.12165280e-01,3.95494848e-01,9.56111372e-01,-3.05333823e-01,-6.61806762e-01,
+-7.64007926e-01,-7.00593889e-01,-5.45445085e-01,-3.57665747e-01,-1.81584150e-01,
+-4.67524342e-02,3.20533179e-02,5.48331067e-02,3.63630094e-02,6.19517872e-03,
+8.65785871e-03,1.02855362e-01,3.62668067e-01,8.76752496e-01,-2.37716630e-01,
+-5.15247464e-01,-5.94815910e-01,-5.45445085e-01,-4.24654484e-01,-2.78459489e-01,
+-1.41371742e-01,-3.63989547e-02,2.49550045e-02,4.26901355e-02,2.83102989e-02,
+4.82323626e-03,6.74054725e-03,8.00777078e-02,2.82354027e-01,6.82592750e-01,
+-1.55878380e-01,-3.37864190e-01,-3.90039742e-01,-3.57665747e-01,-2.78459489e-01,
+-1.82594776e-01,-9.27019641e-02,-2.38679573e-02,1.63637921e-02,2.79932823e-02,
+1.85639672e-02,3.16274981e-03,4.41999221e-03,5.25095090e-02,1.85148552e-01,
+4.47597861e-01,-7.91382566e-02,-1.71531051e-01,-1.98020175e-01,-1.81584150e-01,
+-1.41371742e-01,-9.27019641e-02,-4.70640734e-02,-1.21175786e-02,8.30777176e-03,
+1.42119741e-02,9.42478329e-03,1.60570373e-03,2.24399590e-03,2.66586728e-02,
+9.39984992e-02,2.27241993e-01,-2.03757118e-02,-4.41640653e-02,-5.09842150e-02,
+-4.67524342e-02,-3.63989547e-02,-2.38679573e-02,-1.21175786e-02,-3.11991037e-03,
+2.13900045e-03,3.65915429e-03,2.42659706e-03,4.13420232e-04,5.77761210e-04,
+6.86380314e-03,2.42017750e-02,5.85079528e-02,1.39695210e-02,3.02787386e-02,
+3.49546112e-02,3.20533179e-02,2.49550045e-02,1.63637921e-02,8.30777176e-03,
+2.13900045e-03,-1.46649161e-03,-2.50870408e-03,-1.66366692e-03,-2.83439556e-04,
+-3.96111165e-04,-4.70580067e-03,-1.65926572e-02,-4.01128568e-02,2.38974392e-02,
+5.17973639e-02,5.97963035e-02,5.48331067e-02,4.26901355e-02,2.79932823e-02,
+1.42119741e-02,3.65915429e-03,-2.50870408e-03,-4.29160055e-03,-2.84600887e-03,
+-4.84875578e-04,-6.77621167e-04,-8.05013906e-03,-2.83847973e-02,-6.86204359e-02,
+1.58477761e-02,3.43498290e-02,3.96543927e-02,3.63630094e-02,2.83102989e-02,
+1.85639672e-02,9.42478329e-03,2.42659706e-03,-1.66366692e-03,-2.84600887e-03,
+-1.88735325e-03,-3.21549072e-04,-4.49369807e-04,-5.33851329e-03,-1.88236032e-02,
+-4.55061831e-02,2.69999146e-03,5.85219311e-03,6.75593317e-03,6.19517872e-03,
+4.82323626e-03,3.16274981e-03,1.60570373e-03,4.13420232e-04,-2.83439556e-04,
+-4.84875578e-04,-3.21549072e-04,-5.47824347e-05,-7.65592995e-05,-9.09524504e-04,
+-3.20698414e-03,-7.75290560e-03,3.77327995e-03,8.17853119e-03,9.44152195e-03,
+8.65785871e-03,6.74054725e-03,4.41999221e-03,2.24399590e-03,5.77761210e-04,
+-3.96111165e-04,-6.77621167e-04,-4.49369807e-04,-7.65592995e-05,-1.06992811e-04,
+-1.27107464e-03,-4.48181015e-03,-1.08348057e-02,4.48265672e-02,9.71609503e-02,
+1.12165280e-01,1.02855362e-01,8.00777078e-02,5.25095090e-02,2.66586728e-02,
+6.86380314e-03,-4.70580067e-03,-8.05013906e-03,-5.33851329e-03,-9.09524504e-04,
+-1.27107464e-03,-1.51003664e-02,-5.32439016e-02,-1.28717482e-01,1.58058509e-01,
+3.42589557e-01,3.95494848e-01,3.62668067e-01,2.82354027e-01,1.85148552e-01,
+9.39984992e-02,2.42017750e-02,-1.65926572e-02,-2.83847973e-02,-1.88236032e-02,
+-3.20698414e-03,-4.48181015e-03,-5.32439016e-02,-1.87738046e-01,-4.53857958e-01,
+3.82107496e-01,8.28212500e-01,9.56111372e-01,8.76752496e-01,6.82592750e-01,
+4.47597861e-01,2.27241993e-01,5.85079528e-02,-4.01128568e-02,-6.86204359e-02,
+-4.55061831e-02,-7.75290560e-03,-1.08348057e-02,-1.28717482e-01,-4.53857958e-01,
+-1.09720469e+00,-6.75591230e-02,-1.46433443e-01,-1.69046804e-01,-1.55015633e-01,
+-1.20686904e-01,-7.91382566e-02,-4.01778854e-02,-1.03445919e-02,7.09221838e-03,
+1.21325459e-02,8.04579351e-03,1.37076492e-03,1.91566523e-03,2.27581039e-02,
+8.02450851e-02,1.93993032e-01,-1.46433443e-01,-3.17392409e-01,-3.66406560e-01,
+-3.35994184e-01,-2.61587173e-01,-1.71531051e-01,-8.70849937e-02,-2.24217549e-02,
+1.53722828e-02,2.62971222e-02,1.74391437e-02,2.97111343e-03,4.15217737e-03,
+4.93278652e-02,1.73930094e-01,4.20477122e-01,-1.69046804e-01,-3.66406560e-01,
+-4.22989845e-01,-3.87880951e-01,-3.01983446e-01,-1.98020175e-01,-1.00533321e-01,
+-2.58842930e-02,1.77461877e-02,3.03581245e-02,2.01322306e-02,3.42993531e-03,
+4.79338784e-03,5.69454469e-02,2.00789690e-01,4.85410392e-01,-1.55015633e-01,
+-3.35994184e-01,-3.87880951e-01,-3.55686128e-01,-2.76918262e-01,-1.81584150e-01,
+-9.21888798e-02,-2.37358510e-02,1.62732229e-02,2.78383456e-02,1.84612200e-02,
+3.14524467e-03,4.39552823e-03,5.22188768e-02,1.84123799e-01,4.45120484e-01,
+-1.20686904e-01,-2.61587173e-01,-3.01983446e-01,-2.76918262e-01,-2.15593815e-01,
+-1.41371742e-01,-7.17733502e-02,-1.84794683e-02,1.26694636e-02,2.16734540e-02,
+1.43729206e-02,2.44871993e-03,3.42212408e-03,4.06548344e-02,1.43348977e-01,
+3.46547097e-01,-7.91382566e-02,-1.71531051e-01,-1.98020175e-01,-1.81584150e-01,
+-1.41371742e-01,-9.27019641e-02,-4.70640734e-02,-1.21175786e-02,8.30777176e-03,
+1.42119741e-02,9.42478329e-03,1.60570373e-03,2.24399590e-03,2.66586728e-02,
+9.39984992e-02,2.27241993e-01,-4.01778854e-02,-8.70849937e-02,-1.00533321e-01,
+-9.21888798e-02,-7.17733502e-02,-4.70640734e-02,-2.38940679e-02,-6.15200121e-03,
+4.21779184e-03,7.21530989e-03,4.78488998e-03,8.15203472e-04,1.13925955e-03,
+1.35344025e-02,4.77223136e-02,1.15369014e-01,-1.03445919e-02,-2.24217549e-02,
+-2.58842930e-02,-2.37358510e-02,-1.84794683e-02,-1.21175786e-02,-6.15200121e-03,
+-1.58395455e-03,1.08595402e-03,1.85772451e-03,1.23196468e-03,2.09890277e-04,
+2.93324905e-04,3.48470011e-03,1.22870551e-02,2.97040381e-02,7.09221838e-03,
+1.53722828e-02,1.77461877e-02,1.62732229e-02,1.26694636e-02,8.30777176e-03,
+4.21779184e-03,1.08595402e-03,-7.44526507e-04,-1.27364974e-03,-8.44630878e-04,
+-1.43900077e-04,-2.01102594e-04,-2.38909875e-03,-8.42396449e-03,-2.03649886e-02,
+1.21325459e-02,2.62971222e-02,3.03581245e-02,2.78383456e-02,2.16734540e-02,
+1.42119741e-02,7.21530989e-03,1.85772451e-03,-1.27364974e-03,-2.17881263e-03,
+-1.44489680e-03,-2.46167590e-04,-3.44023050e-04,-4.08699363e-03,-1.44107435e-02,
+-3.48380655e-02,8.04579351e-03,1.74391437e-02,2.01322306e-02,1.84612200e-02,
+1.43729206e-02,9.42478329e-03,4.78488998e-03,1.23196468e-03,-8.44630878e-04,
+-1.44489680e-03,-9.58194723e-04,-1.63247983e-04,-2.28141595e-04,-2.71032215e-03,
+-9.55659803e-03,-2.31031384e-02,1.37076492e-03,2.97111343e-03,3.42993531e-03,
+3.14524467e-03,2.44871993e-03,1.60570373e-03,8.15203472e-04,2.09890277e-04,
+-1.43900077e-04,-2.46167590e-04,-1.63247983e-04,-2.78126208e-05,-3.88685694e-05,
+-4.61758609e-04,-1.62816118e-03,-3.93609051e-03,1.91566523e-03,4.15217737e-03,
+4.79338784e-03,4.39552823e-03,3.42212408e-03,2.24399590e-03,1.13925955e-03,
+2.93324905e-04,-2.01102594e-04,-3.44023050e-04,-2.28141595e-04,-3.88685694e-05,
+-5.43194292e-05,-6.45314809e-04,-2.27538054e-03,-5.50074736e-03,2.27581039e-02,
+4.93278652e-02,5.69454469e-02,5.22188768e-02,4.06548344e-02,2.66586728e-02,
+1.35344025e-02,3.48470011e-03,-2.38909875e-03,-4.08699363e-03,-2.71032215e-03,
+-4.61758609e-04,-6.45314809e-04,-7.66634010e-03,-2.70315204e-02,-6.53488785e-02,
+8.02450851e-02,1.73930094e-01,2.00789690e-01,1.84123799e-01,1.43348977e-01,
+9.39984992e-02,4.77223136e-02,1.22870551e-02,-8.42396449e-03,-1.44107435e-02,
+-9.55659803e-03,-1.62816118e-03,-2.27538054e-03,-2.70315204e-02,-9.53131616e-02,
+-2.30420202e-01,1.93993032e-01,4.20477122e-01,4.85410392e-01,4.45120484e-01,
+3.46547097e-01,2.27241993e-01,1.15369014e-01,2.97040381e-02,-2.03649886e-02,
+-3.48380655e-02,-2.31031384e-02,-3.93609051e-03,-5.50074736e-03,-6.53488785e-02,
+-2.30420202e-01,-5.57042360e-01,-1.73944347e-02,-3.77021916e-02,-4.35244478e-02,
+-3.99118438e-02,-3.10732331e-02,-2.03757118e-02,-1.03445919e-02,-2.66342005e-03,
+1.82603206e-03,3.12376418e-03,2.07154895e-03,3.52930569e-04,4.93225933e-04,
+5.85952448e-03,2.06606872e-02,4.99473475e-02,-3.77021916e-02,-8.17189664e-02,
+-9.43386257e-02,-8.65083560e-02,-6.73507974e-02,-4.41640653e-02,-2.24217568e-02,
+-5.77292498e-03,3.95789836e-03,6.77071512e-03,4.49005282e-03,7.64972006e-04,
+1.06906018e-03,1.27004357e-02,4.47817445e-02,1.08260162e-01,-4.35244478e-02,
+-9.43386257e-02,-1.08907111e-01,-9.98676345e-02,-7.77516216e-02,-5.09842150e-02,
+-2.58842949e-02,-6.66442374e-03,4.56910720e-03,7.81629980e-03,5.18344110e-03,
+8.83104745e-04,1.23415259e-03,1.46617331e-02,5.16972840e-02,1.24978520e-01,
+-3.99118438e-02,-8.65083560e-02,-9.98676345e-02,-9.15784389e-02,-7.12980926e-02,
+-4.67524342e-02,-2.37358510e-02,-6.11126469e-03,4.18986334e-03,7.16753351e-03,
+4.75320639e-03,8.09805526e-04,1.13171584e-03,1.34447841e-02,4.74063158e-02,
+1.14605084e-01,-3.10732331e-02,-6.73507974e-02,-7.77516216e-02,-7.12980926e-02,
+-5.55088967e-02,-3.63989547e-02,-1.84794702e-02,-4.75790538e-03,3.26200435e-03,
+5.58025995e-03,3.70059302e-03,6.30471448e-04,8.81093612e-04,1.04673924e-02,
+3.69080305e-02,8.92254114e-02,-2.03757118e-02,-4.41640653e-02,-5.09842150e-02,
+-4.67524342e-02,-3.63989547e-02,-2.38679573e-02,-1.21175777e-02,-3.11991037e-03,
+2.13900045e-03,3.65915429e-03,2.42659706e-03,4.13420232e-04,5.77761210e-04,
+6.86380314e-03,2.42017750e-02,5.85079528e-02,-1.03445919e-02,-2.24217568e-02,
+-2.58842949e-02,-2.37358510e-02,-1.84794702e-02,-1.21175777e-02,-6.15200074e-03,
+-1.58395455e-03,1.08595402e-03,1.85772451e-03,1.23196468e-03,2.09890277e-04,
+2.93324905e-04,3.48470011e-03,1.22870551e-02,2.97040362e-02,-2.66342005e-03,
+-5.77292498e-03,-6.66442374e-03,-6.11126469e-03,-4.75790538e-03,-3.11991037e-03,
+-1.58395455e-03,-4.07820451e-04,2.79600383e-04,4.78307949e-04,3.17193684e-04,
+5.40404071e-05,7.55223082e-05,8.97205027e-04,3.16354563e-03,7.64789293e-03,
+1.82603206e-03,3.95789836e-03,4.56910720e-03,4.18986334e-03,3.26200435e-03,
+2.13900045e-03,1.08595402e-03,2.79600383e-04,-1.91693092e-04,-3.27926362e-04,
+-2.17466950e-04,-3.70499256e-05,-5.17778462e-05,-6.15120807e-04,-2.16891640e-03,
+-5.24336938e-03,3.12376418e-03,6.77071512e-03,7.81629980e-03,7.16753351e-03,
+5.58025995e-03,3.65915429e-03,1.85772451e-03,4.78307949e-04,-3.27926362e-04,
+-5.60978486e-04,-3.72017297e-04,-6.33807213e-05,-8.85755435e-05,-1.05227751e-03,
+-3.71033116e-03,-8.96975026e-03,2.07154895e-03,4.49005282e-03,5.18344110e-03,
+4.75320639e-03,3.70059302e-03,2.42659706e-03,1.23196468e-03,3.17193684e-04,
+-2.17466950e-04,-3.72017297e-04,-2.46706215e-04,-4.20314282e-05,-5.87395734e-05,
+-6.97826152e-04,-2.46053538e-03,-5.94836054e-03,3.52930569e-04,7.64972006e-04,
+8.83104745e-04,8.09805526e-04,6.30471448e-04,4.13420232e-04,2.09890277e-04,
+5.40404071e-05,-3.70499256e-05,-6.33807213e-05,-4.20314282e-05,-7.16091017e-06,
+-1.00074831e-05,-1.18888893e-04,-4.19202348e-04,-1.01342448e-03,4.93225933e-04,
+1.06906018e-03,1.23415259e-03,1.13171584e-03,8.81093612e-04,5.77761210e-04,
+2.93324905e-04,7.55223082e-05,-5.17778462e-05,-8.85755435e-05,-5.87395734e-05,
+-1.00074831e-05,-1.39856129e-05,-1.66149082e-04,-5.85841772e-04,-1.41627633e-03,
+5.85952448e-03,1.27004357e-02,1.46617331e-02,1.34447841e-02,1.04673924e-02,
+6.86380314e-03,3.48470011e-03,8.97205027e-04,-6.15120807e-04,-1.05227751e-03,
+-6.97826152e-04,-1.18888893e-04,-1.66149082e-04,-1.97385112e-03,-6.95980014e-03,
+-1.68253630e-02,2.06606872e-02,4.47817445e-02,5.16972840e-02,4.74063158e-02,
+3.69080305e-02,2.42017750e-02,1.22870551e-02,3.16354563e-03,-2.16891640e-03,
+-3.71033116e-03,-2.46053538e-03,-4.19202348e-04,-5.85841772e-04,-6.95980014e-03,
+-2.45402604e-02,-5.93262427e-02,4.99473475e-02,1.08260162e-01,1.24978520e-01,
+1.14605084e-01,8.92254114e-02,5.85079528e-02,2.97040362e-02,7.64789293e-03,
+-5.24336938e-03,-8.96975026e-03,-5.94836054e-03,-1.01342448e-03,-1.41627633e-03,
+-1.68253630e-02,-5.93262427e-02,-1.43421590e-01,1.19255669e-02,2.58484986e-02,
+2.98402179e-02,2.73634288e-02,2.13037077e-02,1.39695210e-02,7.09221791e-03,
+1.82603206e-03,-1.25192152e-03,-2.14164262e-03,-1.42024714e-03,-2.41968024e-04,
+-3.38154088e-04,-4.01727064e-03,-1.41648985e-02,-3.42437364e-02,2.58484986e-02,
+5.60262538e-02,6.46782517e-02,5.93098439e-02,4.61754836e-02,3.02787386e-02,
+1.53722819e-02,3.95789836e-03,-2.71352218e-03,-4.64197993e-03,-3.07836547e-03,
+-5.24462259e-04,-7.32944172e-04,-8.70737713e-03,-3.07022166e-02,-7.42228106e-02,
+2.98402179e-02,6.46782517e-02,7.46663585e-02,6.84689209e-02,5.33062555e-02,
+3.49546112e-02,1.77461859e-02,4.56910720e-03,-3.13256495e-03,-5.35882963e-03,
+-3.55375023e-03,-6.05453737e-04,-8.46130948e-04,-1.00520365e-02,-3.54434848e-02,
+-8.56848583e-02,2.73634288e-02,5.93098439e-02,6.84689209e-02,6.27858788e-02,
+4.88817394e-02,3.20533179e-02,1.62732229e-02,4.18986334e-03,-2.87255645e-03,
+-4.91403742e-03,-3.25878267e-03,-5.55199978e-04,-7.75900611e-04,-9.21769906e-03,
+-3.25016156e-02,-7.85728693e-02,2.13037077e-02,4.61754836e-02,5.33062555e-02,
+4.88817394e-02,3.80567163e-02,2.49550045e-02,1.26694636e-02,3.26200412e-03,
+-2.23641936e-03,-3.82580771e-03,-2.53711455e-03,-4.32249130e-04,-6.04074856e-04,
+-7.17640948e-03,-2.53040250e-02,-6.11726493e-02,1.39695210e-02,3.02787386e-02,
+3.49546112e-02,3.20533179e-02,2.49550045e-02,1.63637921e-02,8.30777176e-03,
+2.13900045e-03,-1.46649161e-03,-2.50870408e-03,-1.66366692e-03,-2.83439556e-04,
+-3.96111165e-04,-4.70580114e-03,-1.65926572e-02,-4.01128568e-02,7.09221791e-03,
+1.53722819e-02,1.77461859e-02,1.62732229e-02,1.26694636e-02,8.30777176e-03,
+4.21779184e-03,1.08595402e-03,-7.44526507e-04,-1.27364974e-03,-8.44630878e-04,
+-1.43900077e-04,-2.01102594e-04,-2.38909875e-03,-8.42396449e-03,-2.03649905e-02,
+1.82603206e-03,3.95789836e-03,4.56910720e-03,4.18986334e-03,3.26200412e-03,
+2.13900045e-03,1.08595402e-03,2.79600383e-04,-1.91693092e-04,-3.27926362e-04,
+-2.17466950e-04,-3.70499256e-05,-5.17778462e-05,-6.15120807e-04,-2.16891640e-03,
+-5.24336984e-03,-1.25192152e-03,-2.71352218e-03,-3.13256495e-03,-2.87255645e-03,
+-2.23641936e-03,-1.46649161e-03,-7.44526507e-04,-1.91693092e-04,1.31424153e-04,
+2.24825228e-04,1.49094631e-04,2.54013066e-05,3.54987205e-05,4.21724806e-04,
+1.48700201e-03,3.59483692e-03,-2.14164262e-03,-4.64197993e-03,-5.35882963e-03,
+-4.91403742e-03,-3.82580771e-03,-2.50870408e-03,-1.27364974e-03,-3.27926362e-04,
+2.24825228e-04,3.84604995e-04,2.55053834e-04,4.34536159e-05,6.07271031e-05,
+7.21437973e-04,2.54379096e-03,6.14963099e-03,-1.42024714e-03,-3.07836547e-03,
+-3.55375023e-03,-3.25878267e-03,-2.53711455e-03,-1.66366692e-03,-8.44630878e-04,
+-2.17466950e-04,1.49094631e-04,2.55053834e-04,1.69140971e-04,2.88166084e-05,
+4.02716578e-05,4.78427304e-04,1.68693496e-03,4.07817634e-03,-2.41968024e-04,
+-5.24462259e-04,-6.05453737e-04,-5.55199978e-04,-4.32249130e-04,-2.83439556e-04,
+-1.43900077e-04,-3.70499256e-05,2.54013066e-05,4.34536159e-05,2.88166084e-05,
+4.90949606e-06,6.86109706e-06,8.15098392e-05,2.87403731e-04,6.94800459e-04,
+-3.38154088e-04,-7.32944172e-04,-8.46130948e-04,-7.75900611e-04,-6.04074856e-04,
+-3.96111165e-04,-2.01102594e-04,-5.17778462e-05,3.54987205e-05,6.07271031e-05,
+4.02716578e-05,6.86109706e-06,9.58848977e-06,1.13911265e-04,4.01651196e-04,
+9.70994413e-04,-4.01727064e-03,-8.70737713e-03,-1.00520365e-02,-9.21769906e-03,
+-7.17640948e-03,-4.70580114e-03,-2.38909875e-03,-6.15120807e-04,4.21724806e-04,
+7.21437973e-04,4.78427304e-04,8.15098392e-05,1.13911265e-04,1.35326583e-03,
+4.77161584e-03,1.15354136e-02,-1.41648985e-02,-3.07022166e-02,-3.54434848e-02,
+-3.25016156e-02,-2.53040250e-02,-1.65926572e-02,-8.42396449e-03,-2.16891640e-03,
+1.48700201e-03,2.54379096e-03,1.68693496e-03,2.87403731e-04,4.01651196e-04,
+4.77161584e-03,1.68247223e-02,4.06738780e-02,-3.42437364e-02,-7.42228106e-02,
+-8.56848583e-02,-7.85728693e-02,-6.11726493e-02,-4.01128568e-02,-2.03649905e-02,
+-5.24336984e-03,3.59483692e-03,6.14963099e-03,4.07817634e-03,6.94800459e-04,
+9.70994413e-04,1.15354136e-02,4.06738780e-02,9.83293653e-02,2.04008799e-02,
+4.42186184e-02,5.10471947e-02,4.68101874e-02,3.64439152e-02,2.38974392e-02,
+1.21325459e-02,3.12376418e-03,-2.14164262e-03,-3.66367423e-03,-2.42959452e-03,
+-4.13930917e-04,-5.78474894e-04,-6.87228190e-03,-2.42316704e-02,-5.85802235e-02,
+4.42186184e-02,9.58432257e-02,1.10644065e-01,1.01460420e-01,7.89916739e-02,
+5.17973602e-02,2.62971222e-02,6.77071465e-03,-4.64197993e-03,-7.94096198e-03,
+-5.26611134e-03,-8.97189369e-04,-1.25383609e-03,-1.48955733e-02,-5.25217988e-02,
+-1.26971796e-01,5.10471947e-02,1.10644065e-01,1.27730563e-01,1.17128707e-01,
+9.11901742e-02,5.97963035e-02,3.03581227e-02,7.81629980e-03,-5.35882963e-03,
+-9.16726608e-03,-6.07934454e-03,-1.03574013e-03,-1.44746294e-03,-1.71958599e-02,
+-6.06326163e-02,-1.46579742e-01,4.68101874e-02,1.01460420e-01,1.17128707e-01,
+1.07406810e-01,8.36212188e-02,5.48331030e-02,2.78383456e-02,7.16753304e-03,
+-4.91403742e-03,-8.40636622e-03,-5.57474839e-03,-9.49771900e-04,-1.32732093e-03,
+-1.57685727e-02,-5.56000024e-02,-1.34413376e-01,3.64439152e-02,7.89916739e-02,
+9.11901742e-02,8.36212188e-02,6.51030242e-02,4.26901318e-02,2.16734521e-02,
+5.58025902e-03,-3.82580748e-03,-6.54474925e-03,-4.34020162e-03,-7.39441777e-04,
+-1.03338133e-03,-1.22765712e-02,-4.32871990e-02,-1.04647085e-01,2.38974392e-02,
+5.17973602e-02,5.97963035e-02,5.48331030e-02,4.26901318e-02,2.79932823e-02,
+1.42119741e-02,3.65915429e-03,-2.50870408e-03,-4.29160055e-03,-2.84600887e-03,
+-4.84875578e-04,-6.77621167e-04,-8.05013999e-03,-2.83847973e-02,-6.86204359e-02,
+1.21325459e-02,2.62971222e-02,3.03581227e-02,2.78383456e-02,2.16734521e-02,
+1.42119741e-02,7.21530989e-03,1.85772451e-03,-1.27364974e-03,-2.17881263e-03,
+-1.44489680e-03,-2.46167590e-04,-3.44023050e-04,-4.08699363e-03,-1.44107435e-02,
+-3.48380692e-02,3.12376418e-03,6.77071465e-03,7.81629980e-03,7.16753304e-03,
+5.58025902e-03,3.65915429e-03,1.85772451e-03,4.78307949e-04,-3.27926362e-04,
+-5.60978486e-04,-3.72017297e-04,-6.33807213e-05,-8.85755435e-05,-1.05227751e-03,
+-3.71033116e-03,-8.96975026e-03,-2.14164262e-03,-4.64197993e-03,-5.35882963e-03,
+-4.91403742e-03,-3.82580748e-03,-2.50870408e-03,-1.27364974e-03,-3.27926362e-04,
+2.24825228e-04,3.84604995e-04,2.55053834e-04,4.34536159e-05,6.07271031e-05,
+7.21437973e-04,2.54379096e-03,6.14963099e-03,-3.66367423e-03,-7.94096198e-03,
+-9.16726608e-03,-8.40636622e-03,-6.54474925e-03,-4.29160055e-03,-2.17881263e-03,
+-5.60978486e-04,3.84604995e-04,6.57937722e-04,4.36316594e-04,7.43354176e-05,
+1.03884900e-04,1.23415259e-03,4.35162289e-03,1.05200773e-02,-2.42959452e-03,
+-5.26611134e-03,-6.07934454e-03,-5.57474839e-03,-4.34020162e-03,-2.84600887e-03,
+-1.44489680e-03,-3.72017297e-04,2.55053834e-04,4.36316594e-04,2.89346790e-04,
+4.92961190e-05,6.88920918e-05,8.18438071e-04,2.88581313e-03,6.97647221e-03,
+-4.13930917e-04,-8.97189369e-04,-1.03574013e-03,-9.49771900e-04,-7.39441777e-04,
+-4.84875578e-04,-2.46167590e-04,-6.33807213e-05,4.34536159e-05,7.43354176e-05,
+4.92961190e-05,8.39859786e-06,1.17371710e-05,1.39437601e-04,4.91657062e-04,
+1.18858425e-03,-5.78474894e-04,-1.25383609e-03,-1.44746294e-03,-1.32732093e-03,
+-1.03338133e-03,-6.77621167e-04,-3.44023050e-04,-8.85755435e-05,6.07271031e-05,
+1.03884900e-04,6.88920918e-05,1.17371710e-05,1.64028788e-05,1.94866210e-04,
+6.87098363e-04,1.66106492e-03,-6.87228190e-03,-1.48955733e-02,-1.71958599e-02,
+-1.57685727e-02,-1.22765712e-02,-8.05013999e-03,-4.08699363e-03,-1.05227751e-03,
+7.21437973e-04,1.23415259e-03,8.18438071e-04,1.39437601e-04,1.94866210e-04,
+2.31501041e-03,8.16272851e-03,1.97334513e-02,-2.42316704e-02,-5.25217988e-02,
+-6.06326163e-02,-5.56000024e-02,-4.32871990e-02,-2.83847973e-02,-1.44107435e-02,
+-3.71033116e-03,2.54379096e-03,4.35162289e-03,2.88581313e-03,4.91657062e-04,
+6.87098363e-04,8.16272851e-03,2.87817866e-02,6.95801601e-02,-5.85802235e-02,
+-1.26971796e-01,-1.46579742e-01,-1.34413376e-01,-1.04647085e-01,-6.86204359e-02,
+-3.48380692e-02,-8.96975026e-03,6.14963099e-03,1.05200773e-02,6.97647221e-03,
+1.18858425e-03,1.66106492e-03,1.97334513e-02,6.95801601e-02,1.68210506e-01,
+1.35290045e-02,2.93239262e-02,3.38523500e-02,3.10425442e-02,2.41680704e-02,
+1.58477761e-02,8.04579351e-03,2.07154895e-03,-1.42024714e-03,-2.42959452e-03,
+-1.61120470e-03,-2.74501537e-04,-3.83620179e-04,-4.55740793e-03,-1.60694234e-02,
+-3.88479382e-02,2.93239262e-02,6.35591969e-02,7.33744875e-02,6.72842786e-02,
+5.23839518e-02,3.43498290e-02,1.74391437e-02,4.49005282e-03,-3.07836547e-03,
+-5.26611181e-03,-3.49226338e-03,-5.94978221e-04,-8.31491314e-04,-9.87811666e-03,
+-3.48302461e-02,-8.42023492e-02,3.38523500e-02,7.33744875e-02,8.47055316e-02,
+7.76748285e-02,6.04734831e-02,3.96543890e-02,2.01322287e-02,5.18344063e-03,
+-3.55374999e-03,-6.07934454e-03,-4.03156551e-03,-6.86859246e-04,-9.59896483e-04,
+-1.14035709e-02,-4.02089991e-02,-9.72055122e-02,3.10425442e-02,6.72842786e-02,
+7.76748285e-02,7.12276772e-02,5.54540716e-02,3.63630056e-02,1.84612181e-02,
+4.75320593e-03,-3.25878267e-03,-5.57474839e-03,-3.69693851e-03,-6.29848742e-04,
+-8.80223408e-04,-1.04570538e-02,-3.68715785e-02,-8.91372859e-02,2.41680704e-02,
+5.23839518e-02,6.04734831e-02,5.54540716e-02,4.31735851e-02,2.83102989e-02,
+1.43729206e-02,3.70059279e-03,-2.53711455e-03,-4.34020208e-03,-2.87823915e-03,
+-4.90366656e-04,-6.85295032e-04,-8.14130530e-03,-2.87062470e-02,-6.93975464e-02,
+1.58477761e-02,3.43498290e-02,3.96543890e-02,3.63630056e-02,2.83102989e-02,
+1.85639672e-02,9.42478329e-03,2.42659706e-03,-1.66366692e-03,-2.84600887e-03,
+-1.88735325e-03,-3.21549072e-04,-4.49369807e-04,-5.33851376e-03,-1.88236032e-02,
+-4.55061831e-02,8.04579351e-03,1.74391437e-02,2.01322287e-02,1.84612181e-02,
+1.43729206e-02,9.42478329e-03,4.78488952e-03,1.23196468e-03,-8.44630878e-04,
+-1.44489680e-03,-9.58194723e-04,-1.63247983e-04,-2.28141595e-04,-2.71032215e-03,
+-9.55659803e-03,-2.31031403e-02,2.07154895e-03,4.49005282e-03,5.18344063e-03,
+4.75320593e-03,3.70059279e-03,2.42659706e-03,1.23196468e-03,3.17193684e-04,
+-2.17466950e-04,-3.72017297e-04,-2.46706215e-04,-4.20314282e-05,-5.87395734e-05,
+-6.97826152e-04,-2.46053538e-03,-5.94836101e-03,-1.42024714e-03,-3.07836547e-03,
+-3.55374999e-03,-3.25878267e-03,-2.53711455e-03,-1.66366692e-03,-8.44630878e-04,
+-2.17466950e-04,1.49094631e-04,2.55053834e-04,1.69140971e-04,2.88166084e-05,
+4.02716578e-05,4.78427304e-04,1.68693496e-03,4.07817634e-03,-2.42959452e-03,
+-5.26611181e-03,-6.07934454e-03,-5.57474839e-03,-4.34020208e-03,-2.84600887e-03,
+-1.44489680e-03,-3.72017297e-04,2.55053834e-04,4.36316594e-04,2.89346790e-04,
+4.92961190e-05,6.88920918e-05,8.18438071e-04,2.88581313e-03,6.97647221e-03,
+-1.61120470e-03,-3.49226338e-03,-4.03156551e-03,-3.69693851e-03,-2.87823915e-03,
+-1.88735325e-03,-9.58194723e-04,-2.46706215e-04,1.69140971e-04,2.89346790e-04,
+1.91882602e-04,3.26911104e-05,4.56863345e-05,5.42753667e-04,1.91374985e-03,
+4.62650275e-03,-2.74501537e-04,-5.94978221e-04,-6.86859246e-04,-6.29848742e-04,
+-4.90366656e-04,-3.21549072e-04,-1.63247983e-04,-4.20314282e-05,2.88166084e-05,
+4.92961190e-05,3.26911104e-05,5.56959640e-06,7.78359754e-06,9.24691412e-05,
+3.26046254e-04,7.88218982e-04,-3.83620179e-04,-8.31491314e-04,-9.59896483e-04,
+-8.80223408e-04,-6.85295032e-04,-4.49369807e-04,-2.28141595e-04,-5.87395734e-05,
+4.02716578e-05,6.88920918e-05,4.56863345e-05,7.78359754e-06,1.08776985e-05,
+1.29227061e-04,4.55654721e-04,1.10154832e-03,-4.55740793e-03,-9.87811666e-03,
+-1.14035709e-02,-1.04570538e-02,-8.14130530e-03,-5.33851376e-03,-2.71032215e-03,
+-6.97826152e-04,4.78427304e-04,8.18438071e-04,5.42753667e-04,9.24691412e-05,
+1.29227061e-04,1.53521751e-03,5.41317789e-03,1.30863935e-02,-1.60694234e-02,
+-3.48302461e-02,-4.02089991e-02,-3.68715785e-02,-2.87062470e-02,-1.88236032e-02,
+-9.55659803e-03,-2.46053538e-03,1.68693496e-03,2.88581313e-03,1.91374985e-03,
+3.26046254e-04,4.55654721e-04,5.41317789e-03,1.90868694e-02,4.61426340e-02,
+-3.88479382e-02,-8.42023492e-02,-9.72055122e-02,-8.91372859e-02,-6.93975464e-02,
+-4.55061831e-02,-2.31031403e-02,-5.94836101e-03,4.07817634e-03,6.97647221e-03,
+4.62650275e-03,7.88218982e-04,1.10154832e-03,1.30863935e-02,4.61426340e-02,
+1.11550122e-01,2.30494142e-03,4.99592815e-03,5.76743716e-03,5.28872991e-03,
+4.11752332e-03,2.69999146e-03,1.37076480e-03,3.52930569e-04,-2.41968024e-04,
+-4.13930917e-04,-2.74501537e-04,-4.67669306e-05,-6.53575116e-05,-7.76447298e-04,
+-2.73775356e-03,-6.61853747e-03,4.99592815e-03,1.08286031e-02,1.25008384e-02,
+1.14632472e-02,8.92467331e-03,5.85219311e-03,2.97111343e-03,7.64971948e-04,
+-5.24462259e-04,-8.97189428e-04,-5.94978221e-04,-1.01366655e-04,-1.41661483e-04,
+-1.68293843e-03,-5.93404192e-03,-1.43455854e-02,5.76743716e-03,1.25008384e-02,
+1.44313127e-02,1.32334894e-02,1.03028892e-02,6.75593317e-03,3.42993531e-03,
+8.83104745e-04,-6.05453737e-04,-1.03574013e-03,-6.86859305e-04,-1.17020463e-04,
+-1.63537916e-04,-1.94283051e-03,-6.85042189e-03,-1.65609401e-02,5.28872991e-03,
+1.14632472e-02,1.32334894e-02,1.21350856e-02,9.44773108e-03,6.19517872e-03,
+3.14524467e-03,8.09805468e-04,-5.55199978e-04,-9.49771958e-04,-6.29848742e-04,
+-1.07307562e-04,-1.49963977e-04,-1.78157212e-03,-6.28182478e-03,-1.51863527e-02,
+4.11752332e-03,8.92467331e-03,1.03028892e-02,9.44773108e-03,7.35550001e-03,
+4.82323626e-03,2.44871993e-03,6.30471390e-04,-4.32249130e-04,-7.39441835e-04,
+-4.90366656e-04,-8.35439496e-05,-1.16753967e-04,-1.38703710e-03,-4.89069382e-03,
+-1.18232854e-02,2.69999146e-03,5.85219311e-03,6.75593317e-03,6.19517872e-03,
+4.82323626e-03,3.16274981e-03,1.60570373e-03,4.13420232e-04,-2.83439556e-04,
+-4.84875578e-04,-3.21549072e-04,-5.47824347e-05,-7.65592995e-05,-9.09524562e-04,
+-3.20698414e-03,-7.75290560e-03,1.37076480e-03,2.97111343e-03,3.42993531e-03,
+3.14524467e-03,2.44871993e-03,1.60570373e-03,8.15203413e-04,2.09890277e-04,
+-1.43900077e-04,-2.46167590e-04,-1.63247983e-04,-2.78126208e-05,-3.88685694e-05,
+-4.61758609e-04,-1.62816118e-03,-3.93609051e-03,3.52930569e-04,7.64971948e-04,
+8.83104745e-04,8.09805468e-04,6.30471390e-04,4.13420232e-04,2.09890277e-04,
+5.40404071e-05,-3.70499256e-05,-6.33807213e-05,-4.20314282e-05,-7.16091017e-06,
+-1.00074831e-05,-1.18888893e-04,-4.19202348e-04,-1.01342448e-03,-2.41968024e-04,
+-5.24462259e-04,-6.05453737e-04,-5.55199978e-04,-4.32249130e-04,-2.83439556e-04,
+-1.43900077e-04,-3.70499256e-05,2.54013066e-05,4.34536159e-05,2.88166084e-05,
+4.90949606e-06,6.86109706e-06,8.15098392e-05,2.87403731e-04,6.94800401e-04,
+-4.13930917e-04,-8.97189428e-04,-1.03574013e-03,-9.49771958e-04,-7.39441835e-04,
+-4.84875578e-04,-2.46167590e-04,-6.33807213e-05,4.34536159e-05,7.43354176e-05,
+4.92961190e-05,8.39859786e-06,1.17371710e-05,1.39437601e-04,4.91657062e-04,
+1.18858414e-03,-2.74501537e-04,-5.94978221e-04,-6.86859305e-04,-6.29848742e-04,
+-4.90366656e-04,-3.21549072e-04,-1.63247983e-04,-4.20314282e-05,2.88166084e-05,
+4.92961190e-05,3.26911104e-05,5.56959640e-06,7.78359754e-06,9.24691412e-05,
+3.26046254e-04,7.88218982e-04,-4.67669306e-05,-1.01366655e-04,-1.17020463e-04,
+-1.07307562e-04,-8.35439496e-05,-5.47824347e-05,-2.78126208e-05,-7.16091017e-06,
+4.90949606e-06,8.39859786e-06,5.56959640e-06,9.48894240e-07,1.32609443e-06,
+1.57540017e-05,5.55486222e-05,1.34289163e-04,-6.53575116e-05,-1.41661483e-04,
+-1.63537916e-04,-1.49963977e-04,-1.16753967e-04,-7.65592995e-05,-3.88685694e-05,
+-1.00074831e-05,6.86109706e-06,1.17371710e-05,7.78359754e-06,1.32609443e-06,
+1.85323756e-06,2.20164620e-05,7.76300658e-05,1.87671190e-04,-7.76447298e-04,
+-1.68293843e-03,-1.94283051e-03,-1.78157212e-03,-1.38703710e-03,-9.09524562e-04,
+-4.61758609e-04,-1.18888893e-04,8.15098392e-05,1.39437601e-04,9.24691412e-05,
+1.57540017e-05,2.20164620e-05,2.61555571e-04,9.22245090e-04,2.22953362e-03,
+-2.73775356e-03,-5.93404192e-03,-6.85042189e-03,-6.28182478e-03,-4.89069382e-03,
+-3.20698414e-03,-1.62816118e-03,-4.19202348e-04,2.87403731e-04,4.91657062e-04,
+3.26046254e-04,5.55486222e-05,7.76300658e-05,9.22245090e-04,3.25183710e-03,
+7.86133762e-03,-6.61853747e-03,-1.43455854e-02,-1.65609401e-02,-1.51863527e-02,
+-1.18232854e-02,-7.75290560e-03,-3.93609051e-03,-1.01342448e-03,6.94800401e-04,
+1.18858414e-03,7.88218982e-04,1.34289163e-04,1.87671190e-04,2.22953362e-03,
+7.86133762e-03,1.90048367e-02,3.22119147e-03,6.98188692e-03,8.06008279e-03,
+7.39108212e-03,5.75430272e-03,3.77327995e-03,1.91566511e-03,4.93225933e-04,
+-3.38154088e-04,-5.78474894e-04,-3.83620179e-04,-6.53575116e-05,-9.13381373e-05,
+-1.08509709e-03,-3.82605311e-03,-9.24950838e-03,6.98188692e-03,1.51331415e-02,
+1.74701158e-02,1.60200670e-02,1.24723697e-02,8.17853026e-03,4.15217690e-03,
+1.06906018e-03,-7.32944172e-04,-1.25383609e-03,-8.31491314e-04,-1.41661483e-04,
+-1.97974121e-04,-2.35193246e-03,-8.29291623e-03,-2.00481787e-02,8.06008279e-03,
+1.74701158e-02,2.01679841e-02,1.84940062e-02,1.43984482e-02,9.44152102e-03,
+4.79338784e-03,1.23415259e-03,-8.46130948e-04,-1.44746294e-03,-9.59896541e-04,
+-1.63537916e-04,-2.28546778e-04,-2.71513592e-03,-9.57357045e-03,-2.31441706e-02,
+7.39108212e-03,1.60200670e-02,1.84940062e-02,1.69589706e-02,1.32033508e-02,
+8.65785871e-03,4.39552823e-03,1.13171572e-03,-7.75900611e-04,-1.32732105e-03,
+-8.80223408e-04,-1.49963977e-04,-2.09576989e-04,-2.48977472e-03,-8.77894741e-03,
+-2.12231632e-02,5.75430272e-03,1.24723697e-02,1.43984482e-02,1.32033508e-02,
+1.02794254e-02,6.74054725e-03,3.42212408e-03,8.81093554e-04,-6.04074856e-04,
+-1.03338144e-03,-6.85295032e-04,-1.16753967e-04,-1.63165474e-04,-1.93840591e-03,
+-6.83482084e-03,-1.65232252e-02,3.77327995e-03,8.17853026e-03,9.44152102e-03,
+8.65785871e-03,6.74054725e-03,4.41999221e-03,2.24399590e-03,5.77761210e-04,
+-3.96111165e-04,-6.77621167e-04,-4.49369807e-04,-7.65592995e-05,-1.06992811e-04,
+-1.27107464e-03,-4.48181015e-03,-1.08348057e-02,1.91566511e-03,4.15217690e-03,
+4.79338784e-03,4.39552823e-03,3.42212408e-03,2.24399590e-03,1.13925943e-03,
+2.93324905e-04,-2.01102594e-04,-3.44023050e-04,-2.28141595e-04,-3.88685694e-05,
+-5.43194292e-05,-6.45314809e-04,-2.27538054e-03,-5.50074736e-03,4.93225933e-04,
+1.06906018e-03,1.23415259e-03,1.13171572e-03,8.81093554e-04,5.77761210e-04,
+2.93324905e-04,7.55223082e-05,-5.17778462e-05,-8.85755435e-05,-5.87395734e-05,
+-1.00074831e-05,-1.39856129e-05,-1.66149082e-04,-5.85841772e-04,-1.41627644e-03,
+-3.38154088e-04,-7.32944172e-04,-8.46130948e-04,-7.75900611e-04,-6.04074856e-04,
+-3.96111165e-04,-2.01102594e-04,-5.17778462e-05,3.54987205e-05,6.07271031e-05,
+4.02716578e-05,6.86109706e-06,9.58848977e-06,1.13911265e-04,4.01651196e-04,
+9.70994355e-04,-5.78474894e-04,-1.25383609e-03,-1.44746294e-03,-1.32732105e-03,
+-1.03338144e-03,-6.77621167e-04,-3.44023050e-04,-8.85755435e-05,6.07271031e-05,
+1.03884900e-04,6.88920918e-05,1.17371710e-05,1.64028788e-05,1.94866210e-04,
+6.87098363e-04,1.66106480e-03,-3.83620179e-04,-8.31491314e-04,-9.59896541e-04,
+-8.80223408e-04,-6.85295032e-04,-4.49369807e-04,-2.28141595e-04,-5.87395734e-05,
+4.02716578e-05,6.88920918e-05,4.56863345e-05,7.78359754e-06,1.08776985e-05,
+1.29227061e-04,4.55654721e-04,1.10154820e-03,-6.53575116e-05,-1.41661483e-04,
+-1.63537916e-04,-1.49963977e-04,-1.16753967e-04,-7.65592995e-05,-3.88685694e-05,
+-1.00074831e-05,6.86109706e-06,1.17371710e-05,7.78359754e-06,1.32609443e-06,
+1.85323756e-06,2.20164620e-05,7.76300658e-05,1.87671190e-04,-9.13381373e-05,
+-1.97974121e-04,-2.28546778e-04,-2.09576989e-04,-1.63165474e-04,-1.06992811e-04,
+-5.43194292e-05,-1.39856129e-05,9.58848977e-06,1.64028788e-05,1.08776985e-05,
+1.85323756e-06,2.58992827e-06,3.07683476e-05,1.08489221e-04,2.62273417e-04,
+-1.08509709e-03,-2.35193246e-03,-2.71513592e-03,-2.48977472e-03,-1.93840591e-03,
+-1.27107464e-03,-6.45314809e-04,-1.66149082e-04,1.13911265e-04,1.94866210e-04,
+1.29227061e-04,2.20164620e-05,3.07683476e-05,3.65527987e-04,1.28885184e-03,
+3.11580789e-03,-3.82605311e-03,-8.29291623e-03,-9.57357045e-03,-8.77894741e-03,
+-6.83482084e-03,-4.48181015e-03,-2.27538054e-03,-5.85841772e-04,4.01651196e-04,
+6.87098363e-04,4.55654721e-04,7.76300658e-05,1.08489221e-04,1.28885184e-03,
+4.54449281e-03,1.09863412e-02,-9.24950838e-03,-2.00481787e-02,-2.31441706e-02,
+-2.12231632e-02,-1.65232252e-02,-1.08348057e-02,-5.50074736e-03,-1.41627644e-03,
+9.70994355e-04,1.66106480e-03,1.10154820e-03,1.87671190e-04,2.62273417e-04,
+3.11580789e-03,1.09863412e-02,2.65595540e-02,3.82677577e-02,8.29448178e-02,
+9.57537889e-02,8.78060535e-02,6.83611110e-02,4.48265634e-02,2.27581020e-02,
+5.85952401e-03,-4.01727064e-03,-6.87228143e-03,-4.55740746e-03,-7.76447239e-04,
+-1.08509709e-03,-1.28909536e-02,-4.54535112e-02,-1.09884165e-01,8.29448178e-02,
+1.79781720e-01,2.07544982e-01,1.90318391e-01,1.48171753e-01,9.71609429e-02,
+4.93278652e-02,1.27004348e-02,-8.70737713e-03,-1.48955733e-02,-9.87811666e-03,
+-1.68293843e-03,-2.35193246e-03,-2.79409587e-02,-9.85198393e-02,-2.38172352e-01,
+9.57537889e-02,2.07544982e-01,2.39595652e-01,2.19708800e-01,1.71053559e-01,
+1.12165272e-01,5.69454469e-02,1.46617321e-02,-1.00520356e-02,-1.71958599e-02,
+-1.14035709e-02,-1.94283051e-03,-2.71513569e-03,-3.22558135e-02,-1.13734022e-01,
+-2.74952739e-01,8.78060535e-02,1.90318391e-01,2.19708800e-01,2.01472566e-01,
+1.56855807e-01,1.02855362e-01,5.22188731e-02,1.34447832e-02,-9.21769906e-03,
+-1.57685746e-02,-1.04570547e-02,-1.78157212e-03,-2.48977472e-03,-2.95785237e-02,
+-1.04293898e-01,-2.52131194e-01,6.83611110e-02,1.48171753e-01,1.71053559e-01,
+1.56855807e-01,1.22119576e-01,8.00777003e-02,4.06548344e-02,1.04673915e-02,
+-7.17640948e-03,-1.22765712e-02,-8.14130530e-03,-1.38703710e-03,-1.93840591e-03,
+-2.30282620e-02,-8.11976716e-02,-1.96295902e-01,4.48265634e-02,9.71609429e-02,
+1.12165272e-01,1.02855362e-01,8.00777003e-02,5.25095053e-02,2.66586710e-02,
+6.86380314e-03,-4.70580067e-03,-8.05013906e-03,-5.33851329e-03,-9.09524504e-04,
+-1.27107464e-03,-1.51003674e-02,-5.32439053e-02,-1.28717497e-01,2.27581020e-02,
+4.93278652e-02,5.69454469e-02,5.22188731e-02,4.06548344e-02,2.66586710e-02,
+1.35344025e-02,3.48470011e-03,-2.38909875e-03,-4.08699363e-03,-2.71032215e-03,
+-4.61758609e-04,-6.45314809e-04,-7.66634010e-03,-2.70315204e-02,-6.53488785e-02,
+5.85952401e-03,1.27004348e-02,1.46617321e-02,1.34447832e-02,1.04673915e-02,
+6.86380314e-03,3.48470011e-03,8.97205027e-04,-6.15120807e-04,-1.05227751e-03,
+-6.97826152e-04,-1.18888893e-04,-1.66149082e-04,-1.97385112e-03,-6.95980014e-03,
+-1.68253630e-02,-4.01727064e-03,-8.70737713e-03,-1.00520356e-02,-9.21769906e-03,
+-7.17640948e-03,-4.70580067e-03,-2.38909875e-03,-6.15120807e-04,4.21724806e-04,
+7.21437973e-04,4.78427304e-04,8.15098392e-05,1.13911265e-04,1.35326583e-03,
+4.77161631e-03,1.15354136e-02,-6.87228143e-03,-1.48955733e-02,-1.71958599e-02,
+-1.57685746e-02,-1.22765712e-02,-8.05013906e-03,-4.08699363e-03,-1.05227751e-03,
+7.21437973e-04,1.23415259e-03,8.18438071e-04,1.39437601e-04,1.94866210e-04,
+2.31501041e-03,8.16272851e-03,1.97334494e-02,-4.55740746e-03,-9.87811666e-03,
+-1.14035709e-02,-1.04570547e-02,-8.14130530e-03,-5.33851329e-03,-2.71032215e-03,
+-6.97826152e-04,4.78427304e-04,8.18438071e-04,5.42753667e-04,9.24691412e-05,
+1.29227061e-04,1.53521751e-03,5.41317789e-03,1.30863935e-02,-7.76447239e-04,
+-1.68293843e-03,-1.94283051e-03,-1.78157212e-03,-1.38703710e-03,-9.09524504e-04,
+-4.61758609e-04,-1.18888893e-04,8.15098392e-05,1.39437601e-04,9.24691412e-05,
+1.57540017e-05,2.20164620e-05,2.61555571e-04,9.22245148e-04,2.22953386e-03,
+-1.08509709e-03,-2.35193246e-03,-2.71513569e-03,-2.48977472e-03,-1.93840591e-03,
+-1.27107464e-03,-6.45314809e-04,-1.66149082e-04,1.13911265e-04,1.94866210e-04,
+1.29227061e-04,2.20164620e-05,3.07683476e-05,3.65527987e-04,1.28885196e-03,
+3.11580813e-03,-1.28909536e-02,-2.79409587e-02,-3.22558135e-02,-2.95785237e-02,
+-2.30282620e-02,-1.51003674e-02,-7.66634010e-03,-1.97385112e-03,1.35326583e-03,
+2.31501041e-03,1.53521751e-03,2.61555571e-04,3.65527987e-04,4.34247218e-03,
+1.53115597e-02,3.70157994e-02,-4.54535112e-02,-9.85198393e-02,-1.13734022e-01,
+-1.04293898e-01,-8.11976716e-02,-5.32439053e-02,-2.70315204e-02,-6.95980014e-03,
+4.77161631e-03,8.16272851e-03,5.41317789e-03,9.22245148e-04,1.28885196e-03,
+1.53115597e-02,5.39885722e-02,1.30517736e-01,-1.09884165e-01,-2.38172352e-01,
+-2.74952739e-01,-2.52131194e-01,-1.96295902e-01,-1.28717497e-01,-6.53488785e-02,
+-1.68253630e-02,1.15354136e-02,1.97334494e-02,1.30863935e-02,2.22953386e-03,
+3.11580813e-03,3.70157994e-02,1.30517736e-01,3.15527499e-01,1.34932131e-01,
+2.92463481e-01,3.37627918e-01,3.09604198e-01,2.41041347e-01,1.58058494e-01,
+8.02450851e-02,2.06606872e-02,-1.41648985e-02,-2.42316686e-02,-1.60694234e-02,
+-2.73775356e-03,-3.82605311e-03,-4.54535112e-02,-1.60269111e-01,-3.87451649e-01,
+2.92463481e-01,6.33910477e-01,7.31803715e-01,6.71062768e-01,5.22453666e-01,
+3.42589557e-01,1.73930079e-01,4.47817445e-02,-3.07022166e-02,-5.25218025e-02,
+-3.48302461e-02,-5.93404192e-03,-8.29291623e-03,-9.85198393e-02,-3.47381026e-01,
+-8.39795887e-01,3.37627918e-01,7.31803715e-01,8.44814420e-01,7.74693370e-01,
+6.03134990e-01,3.95494848e-01,2.00789690e-01,5.16972803e-02,-3.54434848e-02,
+-6.06326163e-02,-4.02089991e-02,-6.85042189e-03,-9.57357045e-03,-1.13734022e-01,
+-4.01026249e-01,-9.69483554e-01,3.09604198e-01,6.71062768e-01,7.74693370e-01,
+7.10392416e-01,5.53073704e-01,3.62668067e-01,1.84123784e-01,4.74063158e-02,
+-3.25016156e-02,-5.56000024e-02,-3.68715823e-02,-6.28182478e-03,-8.77894741e-03,
+-1.04293898e-01,-3.67740363e-01,-8.89014781e-01,2.41041347e-01,5.22453666e-01,
+6.03134990e-01,5.53073704e-01,4.30593699e-01,2.82354027e-01,1.43348977e-01,
+3.69080305e-02,-2.53040250e-02,-4.32871990e-02,-2.87062470e-02,-4.89069382e-03,
+-6.83482084e-03,-8.11976716e-02,-2.86303043e-01,-6.92139506e-01,1.58058494e-01,
+3.42589557e-01,3.95494848e-01,3.62668067e-01,2.82354027e-01,1.85148552e-01,
+9.39984992e-02,2.42017750e-02,-1.65926572e-02,-2.83847973e-02,-1.88236032e-02,
+-3.20698414e-03,-4.48181015e-03,-5.32439053e-02,-1.87738046e-01,-4.53857988e-01,
+8.02450851e-02,1.73930079e-01,2.00789690e-01,1.84123784e-01,1.43348977e-01,
+9.39984992e-02,4.77223136e-02,1.22870551e-02,-8.42396449e-03,-1.44107435e-02,
+-9.55659803e-03,-1.62816118e-03,-2.27538054e-03,-2.70315204e-02,-9.53131616e-02,
+-2.30420202e-01,2.06606872e-02,4.47817445e-02,5.16972803e-02,4.74063158e-02,
+3.69080305e-02,2.42017750e-02,1.22870551e-02,3.16354563e-03,-2.16891640e-03,
+-3.71033116e-03,-2.46053538e-03,-4.19202348e-04,-5.85841772e-04,-6.95980014e-03,
+-2.45402604e-02,-5.93262464e-02,-1.41648985e-02,-3.07022166e-02,-3.54434848e-02,
+-3.25016156e-02,-2.53040250e-02,-1.65926572e-02,-8.42396449e-03,-2.16891640e-03,
+1.48700201e-03,2.54379096e-03,1.68693496e-03,2.87403731e-04,4.01651196e-04,
+4.77161631e-03,1.68247223e-02,4.06738743e-02,-2.42316686e-02,-5.25218025e-02,
+-6.06326163e-02,-5.56000024e-02,-4.32871990e-02,-2.83847973e-02,-1.44107435e-02,
+-3.71033116e-03,2.54379096e-03,4.35162289e-03,2.88581313e-03,4.91657062e-04,
+6.87098363e-04,8.16272851e-03,2.87817884e-02,6.95801601e-02,-1.60694234e-02,
+-3.48302461e-02,-4.02089991e-02,-3.68715823e-02,-2.87062470e-02,-1.88236032e-02,
+-9.55659803e-03,-2.46053538e-03,1.68693496e-03,2.88581313e-03,1.91374985e-03,
+3.26046254e-04,4.55654721e-04,5.41317789e-03,1.90868694e-02,4.61426303e-02,
+-2.73775356e-03,-5.93404192e-03,-6.85042189e-03,-6.28182478e-03,-4.89069382e-03,
+-3.20698414e-03,-1.62816118e-03,-4.19202348e-04,2.87403731e-04,4.91657062e-04,
+3.26046254e-04,5.55486222e-05,7.76300658e-05,9.22245148e-04,3.25183710e-03,
+7.86133762e-03,-3.82605311e-03,-8.29291623e-03,-9.57357045e-03,-8.77894741e-03,
+-6.83482084e-03,-4.48181015e-03,-2.27538054e-03,-5.85841772e-04,4.01651196e-04,
+6.87098363e-04,4.55654721e-04,7.76300658e-05,1.08489221e-04,1.28885196e-03,
+4.54449281e-03,1.09863412e-02,-4.54535112e-02,-9.85198393e-02,-1.13734022e-01,
+-1.04293898e-01,-8.11976716e-02,-5.32439053e-02,-2.70315204e-02,-6.95980014e-03,
+4.77161631e-03,8.16272851e-03,5.41317789e-03,9.22245148e-04,1.28885196e-03,
+1.53115606e-02,5.39885722e-02,1.30517736e-01,-1.60269111e-01,-3.47381026e-01,
+-4.01026249e-01,-3.67740363e-01,-2.86303043e-01,-1.87738046e-01,-9.53131616e-02,
+-2.45402604e-02,1.68247223e-02,2.87817884e-02,1.90868694e-02,3.25183710e-03,
+4.54449281e-03,5.39885722e-02,1.90363750e-01,4.60205644e-01,-3.87451649e-01,
+-8.39795887e-01,-9.69483554e-01,-8.89014781e-01,-6.92139506e-01,-4.53857988e-01,
+-2.30420202e-01,-5.93262464e-02,4.06738743e-02,6.95801601e-02,4.61426303e-02,
+7.86133762e-03,1.09863412e-02,1.30517736e-01,4.60205644e-01,1.11255014e+00,
+3.26199323e-01,7.07032442e-01,8.16217721e-01,7.48470247e-01,5.82719028e-01,
+3.82107466e-01,1.93993017e-01,4.99473475e-02,-3.42437364e-02,-5.85802235e-02,
+-3.88479382e-02,-6.61853747e-03,-9.24950838e-03,-1.09884165e-01,-3.87451649e-01,
+-9.36666906e-01,7.07032442e-01,1.53248274e+00,1.76914036e+00,1.62229872e+00,
+1.26303530e+00,8.28212559e-01,4.20477122e-01,1.08260162e-01,-7.42228106e-02,
+-1.26971811e-01,-8.42023492e-02,-1.43455854e-02,-2.00481787e-02,-2.38172367e-01,
+-8.39795947e-01,-2.03021216e+00,8.16217721e-01,1.76914036e+00,2.04234457e+00,
+1.87282634e+00,1.45808280e+00,9.56111431e-01,4.85410392e-01,1.24978520e-01,
+-8.56848657e-02,-1.46579757e-01,-9.72055197e-02,-1.65609401e-02,-2.31441706e-02,
+-2.74952739e-01,-9.69483614e-01,-2.34373283e+00,7.48470247e-01,1.62229872e+00,
+1.87282634e+00,1.71737838e+00,1.33705926e+00,8.76752496e-01,4.45120484e-01,
+1.14605077e-01,-7.85728693e-02,-1.34413376e-01,-8.91372934e-02,-1.51863527e-02,
+-2.12231632e-02,-2.52131194e-01,-8.89014781e-01,-2.14919901e+00,5.82719028e-01,
+1.26303530e+00,1.45808280e+00,1.33705926e+00,1.04096317e+00,6.82592750e-01,
+3.46547097e-01,8.92254040e-02,-6.11726493e-02,-1.04647093e-01,-6.93975389e-02,
+-1.18232854e-02,-1.65232252e-02,-1.96295917e-01,-6.92139506e-01,-1.67325187e+00,
+3.82107466e-01,8.28212559e-01,9.56111431e-01,8.76752496e-01,6.82592750e-01,
+4.47597861e-01,2.27241993e-01,5.85079491e-02,-4.01128568e-02,-6.86204359e-02,
+-4.55061831e-02,-7.75290560e-03,-1.08348057e-02,-1.28717497e-01,-4.53857988e-01,
+-1.09720469e+00,1.93993017e-01,4.20477122e-01,4.85410392e-01,4.45120484e-01,
+3.46547097e-01,2.27241993e-01,1.15369007e-01,2.97040362e-02,-2.03649905e-02,
+-3.48380692e-02,-2.31031403e-02,-3.93609051e-03,-5.50074736e-03,-6.53488785e-02,
+-2.30420202e-01,-5.57042360e-01,4.99473475e-02,1.08260162e-01,1.24978520e-01,
+1.14605077e-01,8.92254040e-02,5.85079491e-02,2.97040362e-02,7.64789246e-03,
+-5.24336984e-03,-8.96975026e-03,-5.94836101e-03,-1.01342448e-03,-1.41627633e-03,
+-1.68253630e-02,-5.93262427e-02,-1.43421590e-01,-3.42437364e-02,-7.42228106e-02,
+-8.56848657e-02,-7.85728693e-02,-6.11726493e-02,-4.01128568e-02,-2.03649905e-02,
+-5.24336984e-03,3.59483715e-03,6.14963146e-03,4.07817634e-03,6.94800459e-04,
+9.70994413e-04,1.15354136e-02,4.06738780e-02,9.83293653e-02,-5.85802235e-02,
+-1.26971811e-01,-1.46579757e-01,-1.34413376e-01,-1.04647093e-01,-6.86204359e-02,
+-3.48380692e-02,-8.96975026e-03,6.14963146e-03,1.05200773e-02,6.97647268e-03,
+1.18858425e-03,1.66106492e-03,1.97334513e-02,6.95801601e-02,1.68210492e-01,
+-3.88479382e-02,-8.42023492e-02,-9.72055197e-02,-8.91372934e-02,-6.93975389e-02,
+-4.55061831e-02,-2.31031403e-02,-5.94836101e-03,4.07817634e-03,6.97647268e-03,
+4.62650275e-03,7.88218982e-04,1.10154832e-03,1.30863935e-02,4.61426340e-02,
+1.11550115e-01,-6.61853747e-03,-1.43455854e-02,-1.65609401e-02,-1.51863527e-02,
+-1.18232854e-02,-7.75290560e-03,-3.93609051e-03,-1.01342448e-03,6.94800459e-04,
+1.18858425e-03,7.88218982e-04,1.34289163e-04,1.87671190e-04,2.22953386e-03,
+7.86133762e-03,1.90048367e-02,-9.24950838e-03,-2.00481787e-02,-2.31441706e-02,
+-2.12231632e-02,-1.65232252e-02,-1.08348057e-02,-5.50074736e-03,-1.41627633e-03,
+9.70994413e-04,1.66106492e-03,1.10154832e-03,1.87671190e-04,2.62273417e-04,
+3.11580813e-03,1.09863412e-02,2.65595540e-02,-1.09884165e-01,-2.38172367e-01,
+-2.74952739e-01,-2.52131194e-01,-1.96295917e-01,-1.28717497e-01,-6.53488785e-02,
+-1.68253630e-02,1.15354136e-02,1.97334513e-02,1.30863935e-02,2.22953386e-03,
+3.11580813e-03,3.70157994e-02,1.30517736e-01,3.15527499e-01,-3.87451649e-01,
+-8.39795947e-01,-9.69483614e-01,-8.89014781e-01,-6.92139506e-01,-4.53857988e-01,
+-2.30420202e-01,-5.93262427e-02,4.06738780e-02,6.95801601e-02,4.61426340e-02,
+7.86133762e-03,1.09863412e-02,1.30517736e-01,4.60205644e-01,1.11255014e+00,
+-9.36666906e-01,-2.03021216e+00,-2.34373283e+00,-2.14919901e+00,-1.67325187e+00,
+-1.09720469e+00,-5.57042360e-01,-1.43421590e-01,9.83293653e-02,1.68210492e-01,
+1.11550115e-01,1.90048367e-02,2.65595540e-02,3.15527499e-01,1.11255014e+00,
+2.68959737e+00,
+}
+#endif
+};
+
+const double array_double[3][4096] = {
+#if __STDC_VERSION__ >= 199901L
+/* C99: hex floats for exact reproduction */
+{
+-0x1.1fd601fff8p-9,-0x1.af431afebcp-8,-0x1.66f9be7b1ep-7,-0x1.f5fe2b6d3ep-7,
+-0x1.425776265fp-6,-0x1.89860c86cfp-6,-0x1.d08ae4d06fp-6,-0x1.0bb3057d1f8p-5,
+-0x1.2f0bc57cdf8p-5,-0x1.524fb861778p-5,-0x1.757ee424278p-5,-0x1.98994ebd6f8p-5,
+-0x1.bb9efe250f8p-5,-0x1.de8ff852078p-5,-0x1.00b6219d4bcp-4,-0x1.1219f26a1fcp-4,
+-0x1.23737189dfcp-4,-0x1.34c2a1f68bcp-4,-0x1.460786a9c3cp-4,-0x1.5742229cc7cp-4,
+-0x1.687278c877cp-4,-0x1.79988c2553cp-4,-0x1.8ab45fab7bcp-4,-0x1.9bc5f652afcp-4,
+-0x1.accd53124fcp-4,-0x1.bdca78e15bcp-4,-0x1.cebd6ab673cp-4,-0x1.dfa62b87d7cp-4,
+-0x1.f084be4b67cp-4,-0x1.00ac92fb51ep-3,-0x1.0911b2bf55ep-3,-0x1.1171bfec1fep-3,
+-0x1.19ccbbfbdfep-3,-0x1.2222a86895ep-3,-0x1.2a7386ac11ep-3,-0x1.32bf583ff3ep-3,
+-0x1.3b061e9dabep-3,-0x1.4347db3e79ep-3,-0x1.4b848f9b6dep-3,-0x1.53bc3d2d67ep-3,
+-0x1.5beee56d17ep-3,-0x1.641c89d2fdep-3,-0x1.6c452bd769ep-3,-0x1.7468ccf27bep-3,
+-0x1.7c876e9c23ep-3,-0x1.84a1124c21ep-3,-0x1.8cb5b97a05ep-3,-0x1.94c5659d2fep-3,
+-0x1.9cd0182ccfep-3,-0x1.a4d5d29fe5ep-3,-0x1.acd6966d41ep-3,-0x1.b4d2650b83ep-3,
+-0x1.bcc93ff11bep-3,-0x1.c4bb289449ep-3,-0x1.cca8206b1dep-3,-0x1.d49028eb77ep-3,
+-0x1.dc73438b07ep-3,-0x1.e45171bf4dep-3,-0x1.ec2ab4fd99ep-3,-0x1.f3ff0ebb0bep-3,
+-0x1.fbce806c93ep-3,-0x1.01cc85c378fp-2,-0x1.05af58bf5afp-2,-0x1.098fb9e41ffp-2,
+-0x1.0d6da9ebdffp-2,-0x1.114929909afp-2,-0x1.1522398c38fp-2,-0x1.18f8da9889fp-2,
+-0x1.1ccd0d6f45fp-2,-0x1.209ed2ca0cfp-2,-0x1.246e2b6266fp-2,-0x1.283b17f1c3fp-2,
+-0x1.2c0599317bfp-2,-0x1.2fcdafdacefp-2,-0x1.33935ca6e4fp-2,-0x1.3756a04ecdfp-2,
+-0x1.3b177b8b81fp-2,-0x1.3ed5ef15e0fp-2,-0x1.4291fba6b2fp-2,-0x1.464ba1f6a7fp-2,
+-0x1.4a02e2be57fp-2,-0x1.4db7beb642fp-2,-0x1.516a3696d0fp-2,-0x1.551a4b1851fp-2,
+-0x1.58c7fcf2fdfp-2,-0x1.5c734cdef4fp-2,-0x1.601c3b943efp-2,-0x1.63c2c9cacbfp-2,
+-0x1.6766f83a73fp-2,-0x1.6b08c79af6fp-2,-0x1.6ea838a3fcfp-2,-0x1.72454c0d15fp-2,
+-0x1.75e0028db9fp-2,-0x1.79785cdd48fp-2,-0x1.7d0e5bb30afp-2,-0x1.80a1ffc62ffp-2,
+-0x1.843349cdcffp-2,-0x1.87c23a80eafp-2,-0x1.8b4ed29668fp-2,-0x1.8ed912c519fp-2,
+-0x1.9260fbc3b5fp-2,-0x1.95e68e48dcfp-2,-0x1.9969cb0b16fp-2,-0x1.9ceab2c0d3fp-2,
+-0x1.a06946206bfp-2,-0x1.a3e585e01efp-2,-0x1.a75f72b614fp-2,-0x1.aad70d585dfp-2,
+-0x1.ae4c567cf1fp-2,-0x1.b1bf4ed9b0fp-2,-0x1.b52ff72462fp-2,-0x1.b89e5012b7fp-2,
+-0x1.bc0a5a5a47fp-2,-0x1.bf7416b092fp-2,-0x1.c2db85cb00fp-2,-0x1.c640a85ee1fp-2,
+-0x1.c9a37f216dfp-2,-0x1.cd040ac7c4fp-2,-0x1.d0624c06eefp-2,-0x1.d3be4393dbfp-2,
+-0x1.d717f22363fp-2,-0x1.da6f586a46fp-2,-0x1.ddc4771d2cfp-2,-0x1.e1174ef0a5fp-2,
+-0x1.e467e09929fp-2,-0x1.e7b62ccb18fp-2,-0x1.eb02343abafp-2,-0x1.ee4bf79c3ffp-2,
+-0x1.f19377a3bffp-2,-0x1.f4d8b5053afp-2,-0x1.f81bb07498fp-2,-0x1.fb5c6aa5a9fp-2,
+-0x1.fe9ae44c25fp-2,-0x1.00eb8f0dd678p-1,-0x1.02888c63e378p-1,
+-0x1.04246a81f1f8p-1,-0x1.05bf29c1adf8p-1,-0x1.0758ca7cb778p-1,
+-0x1.08f14d0ca278p-1,-0x1.0a88b1caf6f8p-1,-0x1.0c1ef91130f8p-1,
+-0x1.0db42338c078p-1,-0x1.0f48309b0978p-1,-0x1.10db219163f8p-1,
+-0x1.126cf6751bf8p-1,-0x1.13fdaf9f7178p-1,-0x1.158d4d699878p-1,
+-0x1.171bd02cb8f8p-1,-0x1.18a93841eef8p-1,-0x1.1a3586024a78p-1,
+-0x1.1bc0b9c6cf78p-1,-0x1.1d4ad3e875f8p-1,-0x1.1ed3d4c029f8p-1,
+-0x1.205bbca6cb78p-1,-0x1.21e28bf52e78p-1,-0x1.236843041af8p-1,
+-0x1.24ece22c4cf8p-1,-0x1.267069c67478p-1,-0x1.27f2da2b3578p-1,
+-0x1.297433b327f8p-1,-0x1.2af476b6d7f8p-1,-0x1.2c73a38ec578p-1,
+-0x1.2df1ba936478p-1,-0x1.2f6ebc1d1cf8p-1,-0x1.30eaa8844af8p-1,
+-0x1.326580213e78p-1,-0x1.33df434c3b78p-1,-0x1.3557f25d79f8p-1,
+-0x1.36cf8dad25f8p-1,-0x1.384615935f78p-1,-0x1.39bb8a683a78p-1,
+-0x1.3b2fec83bef8p-1,-0x1.3ca33c3de8f8p-1,-0x1.3e1579eea878p-1,
+-0x1.3f86a5ede178p-1,-0x1.40f6c0936bf8p-1,-0x1.4265ca3713f8p-1,
+-0x1.43d3c3309978p-1,-0x1.4540abd7b078p-1,-0x1.46ac848400f8p-1,
+-0x1.48174d8d26f8p-1,-0x1.4981074ab278p-1,-0x1.4ae9b2142778p-1,
+-0x1.4c514e40fdf8p-1,-0x1.4db7dc28a1f8p-1,-0x1.4f1d5c227378p-1,
+-0x1.5081ce85c678p-1,-0x1.51e533a9e2f8p-1,-0x1.53478be604f8p-1,
+-0x1.54a8d7915c78p-1,-0x1.560917030d78p-1,-0x1.57684a922ff8p-1,
+-0x1.58c67295cff8p-1,-0x1.5a238f64ed78p-1,-0x1.5b7fa1567c78p-1,
+-0x1.5cdaa8c164f8p-1,-0x1.5e34a5fc82f8p-1,-0x1.5f8d995ea678p-1,
+-0x1.60e5833e9378p-1,-0x1.623c63f301f8p-1,-0x1.63923bd29df8p-1,
+-0x1.64e70b340778p-1,-0x1.663ad26dd278p-1,-0x1.678d91d686f8p-1,
+-0x1.68df49c4a0f8p-1,-0x1.6a2ffa8e9078p-1,-0x1.6b7fa48ab978p-1,
+-0x1.6cce480f73f8p-1,-0x1.6e1be5730bf8p-1,-0x1.6f687d0bc178p-1,
+-0x1.70b40f2fc878p-1,-0x1.71fe9c3548f8p-1,-0x1.734824725ef8p-1,
+-0x1.7490a83d1a78p-1,-0x1.75d827eb7f78p-1,-0x1.771ea3d385f8p-1,
+-0x1.78641c4b19f8p-1,-0x1.79a891a81b78p-1,-0x1.7aec04405e78p-1,
+-0x1.7c2e7469aaf8p-1,-0x1.7d6fe279bcf8p-1,-0x1.7eb04ec64478p-1,
+-0x1.7fefb9a4e578p-1,-0x1.812e236b37f8p-1,-0x1.826b8c6ec7f8p-1,
+-0x1.83a7f5051578p-1,-0x1.84e35d839478p-1,-0x1.861dc63facf8p-1,
+-0x1.87572f8ebaf8p-1,-0x1.888f99c60e78p-1,-0x1.89c7053aeb78p-1,
+-0x1.8afd724289f8p-1,-0x1.8c32e13215f8p-1,-0x1.8d67525eaf78p-1,
+-0x1.8e9ac61d6a78p-1,-0x1.8fcd3cc34ef8p-1,-0x1.90feb6a558f8p-1,
+-0x1.922f34187878p-1,-0x1.935eb5719178p-1,-0x1.948d3b057bf8p-1,
+-0x1.95bac52903f8p-1,-0x1.96e75430e978p-1,-0x1.9812e871e078p-1,
+-0x1.993d824090f8p-1,-0x1.9a6721f196f8p-1,-0x1.9b8fc7d98278p-1,
+-0x1.9cb7744cd778p-1,-0x1.9dde27a00df8p-1,-0x1.9f03e22791f8p-1,
+-0x1.a028a437c378p-1,-0x1.a14c6e24f678p-1,-0x1.a26f404372f8p-1,
+-0x1.a3911ae774f8p-1,-0x1.a4b1fe652c78p-1,-0x1.a5d1eb10bd78p-1,
+-0x1.a6f0e13e3ff8p-1,-0x1.a80ee141bff8p-1,-0x1.a92beb6f3d78p-1,
+-0x1.aa48001aac78p-1,-0x1.ab631f97f4f8p-1,-0x1.ac7d4a3af2f8p-1,
+-0x1.ad9680577678p-1,-0x1.aeaec2414378p-1,-0x1.afc6104c11f8p-1,
+-0x1.b0dc6acb8df8p-1,-0x1.b1f1d2135778p-1,-0x1.b30646770278p-1,
+-0x1.b419c84a16f8p-1,-0x1.b52c57e010f8p-1,-0x1.b63df58c6078p-1,
+-0x1.b74ea1a26978p-1,-0x1.b85e5c7583f8p-1,-0x1.b96d2658fbf8p-1,
+-0x1.ba7affa01178p-1,-0x1.bb87e89df878p-1,-0x1.bc93e1a5d8f8p-1,
+-0x1.bd9eeb0acef8p-1,-0x1.bea9051fea78p-1,-0x1.bfb230382f78p-1,
+-0x1.c0ba6ca695f8p-1,-0x1.c1c1babe09f8p-1,-0x1.c2c81ad16b78p-1,
+-0x1.c3cd8d338e78p-1,-0x1.c4d212373af8p-1,-0x1.c5d5aa2f2cf8p-1,
+-0x1.c6d8556e1478p-1,-0x1.c7da14469578p-1,-0x1.c8dae70b47f8p-1,
+-0x1.c9dace0eb7f8p-1,-0x1.cad9c9a36578p-1,-0x1.cbd7da1bc478p-1,
+-0x1.ccd4ffca3cf8p-1,-0x1.cdd13b012af8p-1,-0x1.cecc8c12de78p-1,
+-0x1.cfc6f3519b78p-1,-0x1.d0c0710f99f8p-1,-0x1.d1b9059f05f8p-1,
+-0x1.d2b0b151ff78p-1,-0x1.d3a7747a9a78p-1,-0x1.d49d4f6adef8p-1,
+-0x1.d5924274c8f8p-1,-0x1.d6864dea4878p-1,-0x1.d779721d4178p-1,
+-0x1.d86baf5f8bf8p-1,-0x1.d95d0602f3f8p-1,-0x1.da4d76593978p-1,
+-0x1.db3d00b41078p-1,-0x1.dc2ba56520f8p-1,-0x1.dd1964be06f8p-1,
+-0x1.de063f105278p-1,-0x1.def234ad8778p-1,-0x1.dfdd45e71df8p-1,
+-0x1.e0c7730e81f8p-1,-0x1.e1b0bc751378p-1,-0x1.e299226c2678p-1,
+-0x1.e380a54502f8p-1,-0x1.e4674550e4f8p-1,-0x1.e54d02e0fc78p-1,
+-0x1.e631de466d78p-1,-0x1.e715d7d24ff8p-1,-0x1.e7f8efd5aff8p-1,
+-0x1.e8db26a18d78p-1,-0x1.e9bc7c86dc78p-1,-0x1.ea9cf1d684f8p-1,
+-0x1.eb7c86e162f8p-1,-0x1.ec5b3bf84678p-1,-0x1.ed39116bf378p-1,
+-0x1.ee16078d21f8p-1,-0x1.eef21eac7df8p-1,-0x1.efcd571aa778p-1,
+-0x1.f0a7b1283278p-1,-0x1.f1812d25a6f8p-1,-0x1.f259cb6380f8p-1,
+-0x1.f3318c323078p-1,-0x1.f4086fe21978p-1,-0x1.f4de76c393f8p-1,
+-0x1.f5b3a126ebf8p-1,-0x1.f687ef5c6178p-1,-0x1.f75b61b42878p-1,
+-0x1.f82df87e68f8p-1,-0x1.f8ffb40b3ef8p-1,-0x1.f9d094aaba78p-1,
+-0x1.faa09aacdf78p-1,-0x1.fb6fc661a5f8p-1,-0x1.fc3e1818f9f8p-1,
+-0x1.fd0b9022bb78p-1,-0x1.fdd82ecebe78p-1,-0x1.fea3f46ccaf8p-1,
+-0x1.ff6ee14c9cf8p-1,-0x1.001c7adef23cp+0,-0x1.0081190822bcp+0,
+-0x1.00e54b49abfcp+0,-0x1.014911cb53fcp+0,-0x1.01ac6cb4dabcp+0,
+-0x1.020f5c2dfa3cp+0,-0x1.0271e05e667cp+0,-0x1.02d3f96dcd7cp+0,
+-0x1.0335a783d73cp+0,-0x1.0396eac825bcp+0,-0x1.03f7c36254fcp+0,
+-0x1.04583179fafcp+0,-0x1.04b83536a7bcp+0,-0x1.0517cebfe53cp+0,
+-0x1.0576fe3d377cp+0,-0x1.05d5c3d61c7cp+0,-0x1.06341fb20c3cp+0,
+-0x1.069211f878bcp+0,-0x1.06ef9ad0cdfcp+0,-0x1.074cba6271fcp+0,
+-0x1.07a970d4c4bcp+0,-0x1.0805be4f203cp+0,-0x1.0861a2f8d87cp+0,
+-0x1.08bd1ef93b7cp+0,-0x1.09183277913cp+0,-0x1.0972dd9b1bbcp+0,
+-0x1.09cd208b16fcp+0,-0x1.0a26fb6eb8fcp+0,-0x1.0a806e6d31bcp+0,
+-0x1.0ad979adab3cp+0,-0x1.0b321d57497cp+0,-0x1.0b8a59912a7cp+0,
+-0x1.0be22e82663cp+0,-0x1.0c399c520ebcp+0,-0x1.0c90a3272ffcp+0,
+-0x1.0ce74328cffcp+0,-0x1.0d3d7c7deebcp+0,-0x1.0d934f4d863cp+0,
+-0x1.0de8bbbe8a7cp+0,-0x1.0e3dc1f7e97cp+0,-0x1.0e9262208b3cp+0,
+-0x1.0ee69c5f51bcp+0,-0x1.0f3a70db18fcp+0,-0x1.0f8ddfbab6fcp+0,
+-0x1.0fe0e924fbbcp+0,-0x1.10338d40b13cp+0,-0x1.1085cc349b7cp+0,
+-0x1.10d7a627787cp+0,-0x1.11291b40003cp+0,-0x1.117a2ba4e4bcp+0,
+-0x1.11cad77cd1fcp+0,-0x1.121b1eee6dfcp+0,-0x1.126b022058bcp+0,
+-0x1.12ba81392c3cp+0,-0x1.13099c5f7c7cp+0,-0x1.135853b9d77cp+0,
+-0x1.13a6a76ec53cp+0,-0x1.13f497a4c7bcp+0,-0x1.144224825afcp+0,
+-0x1.148f4e2df4fcp+0,-0x1.14dc14ce05bcp+0,-0x1.15287888f73cp+0,
+-0x1.157479852d7cp+0,-0x1.15c017e9067cp+0,-0x1.160b53dada3cp+0,
+-0x1.16562d80fabcp+0,-0x1.16a0a501b3fcp+0,-0x1.16eaba834bfcp+0,
+-0x1.17346e2c02bcp+0,-0x1.177dc022123cp+0,-0x1.17c6b08bae7cp+0,
+-0x1.180f3f8f057cp+0,-0x1.18576d523f3cp+0,-0x1.189f39fb7dbcp+0,
+-0x1.18e6a5b0dcfcp+0,-0x1.192db09872fcp+0,-0x1.19745ad84fbcp+0,
+-0x1.19baa4967d3cp+0,-0x1.1a008df8ff7cp+0,-0x1.1a461725d47cp+0,
+-0x1.1a8b4042f43cp+0,-0x1.1ad0097650bcp+0,-0x1.1b1472e5d5fcp+0,
+-0x1.1b587cb769fcp+0,-0x1.1b9c2710ecbcp+0,-0x1.1bdf7218383cp+0,
+-0x1.1c225df3207cp+0,-0x1.1c64eac7737cp+0,-0x1.1ca718baf93cp+0,
+-0x1.1ce8e7f373bcp+0,-0x1.1d2a58969efcp+0,-0x1.1d6b6aca30fcp+0,
+-0x1.1dac1eb3d9bcp+0,-0x1.1dec7479433cp+0,-0x1.1e2c6c40117cp+0,
+-0x1.1e6c062de27cp+0,-0x1.1eab42684e3cp+0,-0x1.1eea2114e6bcp+0,
+-0x1.1f28a25937fcp+0,-0x1.1f66c65ac7fcp+0,-0x1.1fa48d3f16bcp+0,
+-0x1.1fe1f72b9e3cp+0,-0x1.201f0445d27cp+0,-0x1.205bb4b3217cp+0,
+-0x1.20980898f33cp+0,-0x1.20d4001ca9bcp+0,-0x1.210f9b63a0fcp+0,
+-0x1.214ada932efcp+0,-0x1.2185bdd0a3bcp+0,-0x1.21c04541493cp+0,
+-0x1.21fa710a637cp+0,-0x1.22344151307cp+0,-0x1.226db63ae83cp+0,
+-0x1.22a6cfecbcbcp+0,-0x1.22df8e8bd9fcp+0,-0x1.2317f23d65fcp+0,
+-0x1.234ffb2680bcp+0,-0x1.2387a96c443cp+0,-0x1.23befd33c47cp+0,
+-0x1.23f5f6a20f7cp+0,-0x1.242c95dc2d3cp+0,-0x1.2462db071fbcp+0,
+-0x1.2498c647e2fcp+0,-0x1.24ce57c36cfcp+0,-0x1.25038f9eadbcp+0,
+-0x1.25386dfe8f3cp+0,-0x1.256cf307f57cp+0,-0x1.25a11edfbe7cp+0,
+-0x1.25d4f1aac23cp+0,-0x1.26086b8dd2bcp+0,-0x1.263b8cadbbfcp+0,
+-0x1.266e552f43fcp+0,-0x1.26a0c5372abcp+0,-0x1.26d2dcea2a3cp+0,
+-0x1.27049c6cf67cp+0,-0x1.273603e43d7cp+0,-0x1.27671374a73cp+0,
+-0x1.2797cb42d5bcp+0,-0x1.27c82b7364fcp+0,-0x1.27f8342aeafcp+0,
+-0x1.2827e58df7bcp+0,-0x1.28573fc1153cp+0,-0x1.288642e8c77cp+0,
+-0x1.28b4ef298c7cp+0,-0x1.28e344a7dc3cp+0,-0x1.2911438828bcp+0,
+-0x1.293eebeeddfcp+0,-0x1.296c3e0061fcp+0,-0x1.299939e114bcp+0,
+-0x1.29c5dfb5503cp+0,-0x1.29f22fa1687cp+0,-0x1.2a1e29c9ab7cp+0,
+-0x1.2a49ce52613cp+0,-0x1.2a751d5fcbbcp+0,-0x1.2aa0171626fcp+0,
+-0x1.2acabb99a8fcp+0,-0x1.2af50b0e81bcp+0,-0x1.2b1f0598db3cp+0,
+-0x1.2b48ab5cd97cp+0,-0x1.2b71fc7e9a7cp+0,-0x1.2b9af922363cp+0,
+-0x1.2bc3a16bbebcp+0,-0x1.2bebf57f3ffcp+0,-0x1.2c13f580bffcp+0,
+-0x1.2c3ba1943ebcp+0,-0x1.2c62f9ddb63cp+0,-0x1.2c89fe811a7cp+0,
+-0x1.2cb0afa2597cp+0,-0x1.2cd70d655b3cp+0,-0x1.2cfd17ee01bcp+0,
+-0x1.2d22cf6028fcp+0,-0x1.2d4833dfa6fcp+0,-0x1.2d6d45904bbcp+0,
+-0x1.2d920495e13cp+0,-0x1.2db671142b7cp+0,-0x1.2dda8b2ee87cp+0,
+-0x1.2dfe5309d03cp+0,-0x1.2e21c8c894bcp+0,-0x1.2e44ec8ee1fcp+0,
+-0x1.2e67be805dfcp+0,-0x1.2e8a3ec0a8bcp+0,-0x1.2eac6d735c3cp+0,
+-0x1.2ece4abc0c7cp+0,-0x1.2eefd6be477cp+0,-0x1.2f11119d953cp+0,
+-0x1.2f31fb7d77bcp+0,-0x1.2f5294816afcp+0,-0x1.2f72dccce4fcp+0,
+-0x1.2f92d48355bcp+0,-0x1.2fb27bc8273cp+0,-0x1.2fd1d2bebd7cp+0,
+-0x1.2ff0d98a767cp+0,-0x1.300f904eaa3cp+0,-0x1.302df72eaabcp+0,
+-0x1.304c0e4dc3fcp+0,-0x1.3069d5cf3bfcp+0,-0x1.30874dd652bcp+0,
+-0x1.30a47686423cp+0,-0x1.30c150023e7cp+0,-0x1.30ddda6d757cp+0,
+-0x1.30fa15eb0f3cp+0,-0x1.3116029e2dbcp+0,-0x1.3131a0a9ecfcp+0,
+-0x1.314cf03162fcp+0,-0x1.3167f1579fbcp+0,-0x1.3182a43fad3cp+0,
+-0x1.319d090c8f7cp+0,-0x1.31b71fe1447cp+0,-0x1.31d0e8e0c43cp+0,
+-0x1.31ea642e00bcp+0,-0x1.320391ebe5fcp+0,-0x1.321c723d59fcp+0,
+-0x1.323505453cbcp+0,-0x1.324d4b26683cp+0,-0x1.32654403b07cp+0,
+-0x1.327cefffe37cp+0,-0x1.32944f3dc93cp+0,-0x1.32ab61e023bcp+0,
+-0x1.32c22809aefcp+0,-0x1.32d8a1dd20fcp+0,-0x1.32eecf7d29bcp+0,
+-0x1.3304b10c733cp+0,-0x1.331a46ada17cp+0,-0x1.332f9083527cp+0,
+-0x1.33448eb01e3cp+0,-0x1.3359415696bcp+0,-0x1.336da89947fcp+0,
+-0x1.3381c49ab7fcp+0,-0x1.3395957d66bcp+0,-0x1.33a91b63ce3cp+0,
+-0x1.33bc5670627cp+0,-0x1.33cf46c5917cp+0,-0x1.33e1ec85c33cp+0,
+-0x1.33f447d359bcp+0,-0x1.340658d0b0fcp+0,-0x1.34181fa01efcp+0,
+-0x1.34299c63f3bcp+0,-0x1.343acf3e793cp+0,-0x1.344bb851f37cp+0,
+-0x1.345c57c0a07cp+0,-0x1.346cadacb83cp+0,-0x1.347cba386cbcp+0,
+-0x1.348c7d85e9fcp+0,-0x1.349bf7b755fcp+0,-0x1.34ab28eed0bcp+0,
+-0x1.34ba114e743cp+0,-0x1.34c8b0f8547cp+0,-0x1.34d7080e7f7cp+0,
+-0x1.34e516b2fd3cp+0,-0x1.34f2dd07cfbcp+0,-0x1.35005b2ef2fcp+0,
+-0x1.350d914a5cfcp+0,-0x1.351a7f7bfdbcp+0,-0x1.352725e5bf3cp+0,
+-0x1.353384a9857cp+0,-0x1.353f9be92e7cp+0,-0x1.354b6bc6923cp+0,
+-0x1.3556f46382bcp+0,-0x1.356235e1cbfcp+0,-0x1.356d306333fcp+0,
+-0x1.3577e4097abcp+0,-0x1.358250f65a3cp+0,-0x1.358c774b867cp+0,
+-0x1.3596572aad7cp+0,-0x1.359ff0b5773cp+0,-0x1.35a9440d85bcp+0,
+-0x1.35b2515474fcp+0,-0x1.35bb18abdafcp+0,-0x1.35c39a3547bcp+0,
+-0x1.35cbd612453cp+0,-0x1.35d3cc64577cp+0,-0x1.35db7d4cfc7cp+0,
+-0x1.35e2e8edac3cp+0,-0x1.35ea0f67d8bcp+0,-0x1.35f0f0dcedfcp+0,
+-0x1.35f78d6e51fcp+0,-0x1.35fde53d64bcp+0,-0x1.3603f86b803cp+0,
+-0x1.3609c719f87cp+0,-0x1.360f516a1b7cp+0,-0x1.3614977d313cp+0,
+-0x1.361999747bbcp+0,-0x1.361e577136fcp+0,-0x1.3622d19498fcp+0,
+-0x1.362707ffd1bcp+0,-0x1.362afad40b3cp+0,-0x1.362eaa32697cp+0,
+-0x1.3632163c0a7cp+0,-0x1.36353f12063cp+0,-0x1.363824d56ebcp+0,
+-0x1.363ac7a74ffcp+0,-0x1.363d27a8affcp+0,-0x1.363f44fa8ebcp+0,
+-0x1.36411fbde63cp+0,-0x1.3642b813aa7cp+0,-0x1.36440e1cc97cp+0,
+-0x1.364521fa2b3cp+0,-0x1.3645f3ccb1bcp+0,-0x1.364683b538fcp+0,
+-0x1.3646d1d496fcp+0,-0x1.3646de4b9bbcp+0,-0x1.3646a93b113cp+0,
+-0x1.364632c3bb7cp+0,-0x1.36457b06587cp+0,-0x1.36448223a03cp+0,
+-0x1.3643483c44bcp+0,-0x1.3641cd70f1fcp+0,-0x1.364011e24dfcp+0,
+-0x1.363e15b0f8bcp+0,-0x1.363bd8fd8c3cp+0,-0x1.36395be89c7cp+0,
+-0x1.36369e92b77cp+0,-0x1.3633a11c653cp+0,-0x1.363063a627bcp+0,
+-0x1.362ce6507afcp+0,-0x1.3629293bd4fcp+0,-0x1.36252c88a5bcp+0,
+-0x1.3620f057573cp+0,-0x1.361c74c84d7cp+0,-0x1.3617b9fbe67cp+0,
+-0x1.3612c0127a3cp+0,-0x1.360d872c5abcp+0,-0x1.36080f69d3fcp+0,
+-0x1.360258eb2bfcp+0,-0x1.35fc63d0a2bcp+0,-0x1.35f6303a723cp+0,
+-0x1.35efbe48ce7cp+0,-0x1.35e90e1be57cp+0,-0x1.35e21fd3df3cp+0,
+-0x1.35daf390ddbcp+0,-0x1.35d38972fcfcp+0,-0x1.35cbe19a52fcp+0,
+-0x1.35c3fc26efbcp+0,-0x1.35bbd938dd3cp+0,-0x1.35b378f01f7cp+0,
+-0x1.35aadb6cb47cp+0,-0x1.35a200ce943cp+0,-0x1.3598e935b0bcp+0,
+-0x1.358f94c1f5fcp+0,-0x1.3586039349fcp+0,-0x1.357c35c98cbcp+0,
+-0x1.35722b84983cp+0,-0x1.3567e4e4407cp+0,-0x1.355d6208537cp+0,
+-0x1.3552a310993cp+0,-0x1.3547a81cd3bcp+0,-0x1.353c714cbefcp+0,
+-0x1.3530fec010fcp+0,-0x1.3525509679bcp+0,-0x1.351966efa33cp+0,
+-0x1.350d41eb317cp+0,-0x1.3500e1a8c27cp+0,-0x1.34f44647ee3cp+0,
+-0x1.34e76fe846bcp+0,-0x1.34da5ea957fcp+0,-0x1.34cd12aaa7fcp+0,
+-0x1.34bf8c0bb6bcp+0,-0x1.34b1caebfe3cp+0,-0x1.34a3cf6af27cp+0,
+-0x1.349599a8017cp+0,-0x1.348729c2933cp+0,-0x1.34787fda09bcp+0,
+-0x1.34699c0dc0fcp+0,-0x1.345a7e7d0efcp+0,-0x1.344b274743bcp+0,
+-0x1.343b968ba93cp+0,-0x1.342bcc69837cp+0,-0x1.341bc900107cp+0,
+-0x1.340b8c6e883cp+0,-0x1.33fb16d41cbcp+0,-0x1.33ea684ff9fcp+0,
+-0x1.33d9810145fcp+0,-0x1.33c8610720bcp+0,-0x1.33b70880a43cp+0,
+-0x1.33a5778ce47cp+0,-0x1.3393ae4aef7cp+0,-0x1.3381acd9cd3cp+0,
+-0x1.336f73587fbcp+0,-0x1.335d01e602fcp+0,-0x1.334a58a14cfcp+0,
+-0x1.333777a94dbcp+0,-0x1.33245f1cef3cp+0,-0x1.33110f1b157cp+0,
+-0x1.32fd87c29e7cp+0,-0x1.32e9c932623cp+0,-0x1.32d5d38932bcp+0,
+-0x1.32c1a6e5dbfcp+0,-0x1.32ad436723fcp+0,-0x1.3298a92bcabcp+0,
+-0x1.3283d8528a3cp+0,-0x1.326ed0fa167cp+0,-0x1.325993411d7cp+0,
+-0x1.32441f46473cp+0,-0x1.322e752835bcp+0,-0x1.3218950584fcp+0,
+-0x1.32027efccafcp+0,-0x1.31ec332c97bcp+0,-0x1.31d5b1b3753cp+0,
+-0x1.31befaafe77cp+0,-0x1.31a80e406c7cp+0,-0x1.3190ec837c3cp+0,
+-0x1.3179959788bcp+0,-0x1.3162099afdfcp+0,-0x1.314a48ac41fcp+0,
+-0x1.313252e9b4bcp+0,-0x1.311a2871b03cp+0,-0x1.3101c962887cp+0,
+-0x1.30e935da8b7cp+0,-0x1.30d06df8013cp+0,-0x1.30b771d92bbcp+0,
+-0x1.309e419c46fcp+0,-0x1.3084dd5f88fcp+0,-0x1.306b454121bcp+0,
+-0x1.3051795f3b3cp+0,-0x1.303779d7f97cp+0,-0x1.301d46c97a7cp+0,
+-0x1.3002e051d63cp+0,-0x1.2fe8468f1ebcp+0,-0x1.2fcd799f5ffcp+0,
+-0x1.2fb279a09ffcp+0,-0x1.2f9746b0debcp+0,-0x1.2f7be0ee163cp+0,
+-0x1.2f6048763a7cp+0,-0x1.2f447d67397cp+0,-0x1.2f287fdefb3cp+0,
+-0x1.2f0c4ffb61bcp+0,-0x1.2eefedda48fcp+0,-0x1.2ed3599986fcp+0,
+-0x1.2eb69356ebbcp+0,-0x1.2e999b30413cp+0,-0x1.2e7c71434b7cp+0,
+-0x1.2e5f15adc87cp+0,-0x1.2e41888d703cp+0,-0x1.2e23c9fff4bcp+0,
+-0x1.2e05da2301fcp+0,-0x1.2de7b9143dfcp+0,-0x1.2dc966f148bcp+0,
+-0x1.2daae3d7bc3cp+0,-0x1.2d8c2fe52c7cp+0,-0x1.2d6d4b37277cp+0,
+-0x1.2d4e35eb353cp+0,-0x1.2d2ef01ed7bcp+0,-0x1.2d0f79ef8afcp+0,
+-0x1.2cefd37ac4fcp+0,-0x1.2ccffcddf5bcp+0,-0x1.2caff636873cp+0,
+-0x1.2c8fbfa1dd7cp+0,-0x1.2c6f593d567cp+0,-0x1.2c4ec3264a3cp+0,
+-0x1.2c2dfd7a0abcp+0,-0x1.2c0d0855e3fcp+0,-0x1.2bebe3d71bfcp+0,
+-0x1.2bca901af2bcp+0,-0x1.2ba90d3ea23cp+0,-0x1.2b875b5f5e7cp+0,
+-0x1.2b657a9a557cp+0,-0x1.2b436b0caf3cp+0,-0x1.2b212cd38dbcp+0,
+-0x1.2afec00c0cfcp+0,-0x1.2adc24d342fcp+0,-0x1.2ab95b463fbcp+0,
+-0x1.2a9663820d3cp+0,-0x1.2a733da3af7cp+0,-0x1.2a4fe9c8247cp+0,
+-0x1.2a2c680c643cp+0,-0x1.2a08b88d60bcp+0,-0x1.29e4db6805fcp+0,
+-0x1.29c0d0b939fcp+0,-0x1.299c989ddcbcp+0,-0x1.29783332c83cp+0,
+-0x1.2953a094d07cp+0,-0x1.292ee0e0c37cp+0,-0x1.2909f433693cp+0,
+-0x1.28e4daa983bcp+0,-0x1.28bf945fcefcp+0,-0x1.289a217300fcp+0,
+-0x1.287481ffc9bcp+0,-0x1.284eb622d33cp+0,-0x1.2828bdf8c17cp+0,
+-0x1.2802999e327cp+0,-0x1.27dc492fbe3cp+0,-0x1.27b5ccc9f6bcp+0,
+-0x1.278f248967fcp+0,-0x1.2768508a97fcp+0,-0x1.274150ea06bcp+0,
+-0x1.271a25c42e3cp+0,-0x1.26f2cf35827cp+0,-0x1.26cb4d5a717cp+0,
+-0x1.26a3a04f633cp+0,-0x1.267bc830b9bcp+0,-0x1.2653c51ad0fcp+0,
+-0x1.262b9729fefcp+0,-0x1.26033e7a93bcp+0,-0x1.25dabb28d93cp+0,
+-0x1.25b20d51137cp+0,-0x1.2589350f807cp+0,-0x1.25603280583cp+0,
+-0x1.253705bfccbcp+0,-0x1.250daeea09fcp+0,-0x1.24e42e1b35fcp+0,
+-0x1.24ba836f70bcp+0,-0x1.2490af02d43cp+0,-0x1.2466b0f1747cp+0,
+-0x1.243c89575f7cp+0,-0x1.241238509d3cp+0,-0x1.23e7bdf92fbcp+0,
+-0x1.23bd1a6d12fcp+0,-0x1.23924dc83cfcp+0,-0x1.236758269dbcp+0,
+-0x1.233c39a41f3cp+0,-0x1.2310f25ca57cp+0,-0x1.22e5826c0e7cp+0,
+-0x1.22b9e9ee323cp+0,-0x1.228e28fee2bcp+0,-0x1.22623fb9ebfcp+0,
+-0x1.22362e3b13fcp+0,-0x1.2209f49e1abcp+0,-0x1.21dd92feba3cp+0,
+-0x1.21b10978a67cp+0,-0x1.218458278d7cp+0,-0x1.21577f27173cp+0,
+-0x1.212a7e92e5bcp+0,-0x1.20fd568694fcp+0,-0x1.20d0071dbafcp+0,
+-0x1.20a29073e7bcp+0,-0x1.2074f2a4a53cp+0,-0x1.20472dcb777cp+0,
+-0x1.20194203dc7cp+0,-0x1.1feb2f694c3cp+0,-0x1.1fbcf61738bcp+0,
+-0x1.1f8e96290dfcp+0,-0x1.1f600fba31fcp+0,-0x1.1f3162e604bcp+0,
+-0x1.1f028fc7e03cp+0,-0x1.1ed3967b187cp+0,-0x1.1ea4771afb7cp+0,
+-0x1.1e7531c2d13cp+0,-0x1.1e45c68ddbbcp+0,-0x1.1e16359756fcp+0,
+-0x1.1de67efa78fcp+0,-0x1.1db6a2d271bcp+0,-0x1.1d86a13a6b3cp+0,
+-0x1.1d567a4d897cp+0,-0x1.1d262e26ea7cp+0,-0x1.1cf5bce1a63cp+0,
+-0x1.1cc52698cebcp+0,-0x1.1c946b676ffcp+0,-0x1.1c638b688ffcp+0,
+-0x1.1c3286b72ebcp+0,-0x1.1c015d6e463cp+0,-0x1.1bd00fa8ca7cp+0,
+-0x1.1b9e9d81a97cp+0,-0x1.1b6d0713cb3cp+0,-0x1.1b3b4c7a11bcp+0,
+-0x1.1b096dcf58fcp+0,-0x1.1ad76b2e76fcp+0,-0x1.1aa544b23bbcp+0,
+-0x1.1a72fa75713cp+0,-0x1.1a408c92db7cp+0,-0x1.1a0dfb25387cp+0,
+-0x1.19db4647403cp+0,-0x1.19a86e13a4bcp+0,-0x1.197572a511fcp+0,
+-0x1.194254162dfcp+0,-0x1.190f128198bcp+0,-0x1.18dbae01ec3cp+0,
+-0x1.18a826b1bc7cp+0,-0x1.18747cab977cp+0,-0x1.1840b00a053cp+0,
+-0x1.180cc0e787bcp+0,-0x1.17d8af5e9afcp+0,-0x1.17a47b89b4fcp+0,
+-0x1.1770258345bcp+0,-0x1.173bad65b73cp+0,-0x1.1707134b6d7cp+0,
+-0x1.16d2574ec67cp+0,-0x1.169d798a1a3cp+0,-0x1.16687a17babcp+0,
+-0x1.16335911f3fcp+0,-0x1.15fe16930bfcp+0,-0x1.15c8b2b542bcp+0,
+-0x1.15932d92d23cp+0,-0x1.155d8745ee7cp+0,-0x1.1527bfe8c57cp+0,
+-0x1.14f1d7957f3cp+0,-0x1.14bbce663dbcp+0,-0x1.1485a4751cfcp+0,
+-0x1.144f59dc32fcp+0,-0x1.1418eeb58fbcp+0,-0x1.13e2631b3d3cp+0,
+-0x1.13abb7273f7cp+0,-0x1.1374eaf3947cp+0,-0x1.133dfe9a343cp+0,
+-0x1.1306f23510bcp+0,-0x1.12cfc5de15fcp+0,-0x1.129879af29fcp+0,
+-0x1.12610dc22cbcp+0,-0x1.12298230f83cp+0,-0x1.11f1d715607cp+0,
+-0x1.11ba0c89337cp+0,-0x1.118222a6393cp+0,-0x1.114a198633bcp+0,
+-0x1.1111f142defcp+0,-0x1.10d9a9f5f0fcp+0,-0x1.10a143b919bcp+0,
+-0x1.1068bea6033cp+0,-0x1.10301ad6517cp+0,-0x1.0ff75863a27cp+0,
+-0x1.0fbe77678e3cp+0,-0x1.0f8577fba6bcp+0,-0x1.0f4c5a3977fcp+0,
+-0x1.0f131e3a87fcp+0,-0x1.0ed9c41856bcp+0,-0x1.0ea04bec5e3cp+0,
+-0x1.0e66b5d0127cp+0,-0x1.0e2d01dce17cp+0,-0x1.0df3302c333cp+0,
+-0x1.0db940d769bcp+0,-0x1.0d7f33f7e0fcp+0,-0x1.0d4509a6eefcp+0,
+-0x1.0d0ac1fde3bcp+0,-0x1.0cd05d16093cp+0,-0x1.0c95db08a37cp+0,
+-0x1.0c5b3beef07cp+0,-0x1.0c207fe2283cp+0,-0x1.0be5a6fb7cbcp+0,
+-0x1.0baab15419fcp+0,-0x1.0b6f9f0525fcp+0,-0x1.0b347027c0bcp+0,
+-0x1.0af924d5043cp+0,-0x1.0abdbd26047cp+0,-0x1.0a823933cf7cp+0,
+-0x1.0a4699176d3cp+0,-0x1.0a0adce9dfbcp+0,-0x1.09cf04c422fcp+0,
+-0x1.099310bf2cfcp+0,-0x1.095700f3edbcp+0,-0x1.091ad57b4f3cp+0,
+-0x1.08de8e6e357cp+0,-0x1.08a22be57e7cp+0,-0x1.0865adfa023cp+0,
+-0x1.082914c492bcp+0,-0x1.07ec605dfbfcp+0,-0x1.07af90df03fcp+0,
+-0x1.0772a6606abcp+0,-0x1.0735a0faea3cp+0,-0x1.06f880c7367cp+0,
+-0x1.06bb45ddfd7cp+0,-0x1.067df057e73cp+0,-0x1.0640804d95bcp+0,
+-0x1.0602f5d7a4fcp+0,-0x1.05c5510eaafcp+0,-0x1.0587920b37bcp+0,
+-0x1.0549b8e5d53cp+0,-0x1.050bc5b7077cp+0,-0x1.04cdb8974c7cp+0,
+-0x1.048f919f1c3cp+0,-0x1.045150e6e8bcp+0,-0x1.0412f6871dfcp+0,
+-0x1.03d4829821fcp+0,-0x1.0395f53254bcp+0,-0x1.03574e6e103cp+0,
+-0x1.03188e63a87cp+0,-0x1.02d9b52b6b7cp+0,-0x1.029ac2dda13cp+0,
+-0x1.025bb7928bbcp+0,-0x1.021c936266fcp+0,-0x1.01dd566568fcp+0,
+-0x1.019e00b3c1bcp+0,-0x1.015e92659b3cp+0,-0x1.011f0b93197cp+0,
+-0x1.00df6c545a7cp+0,-0x1.009fb4c1763cp+0,-0x1.005fe4f27ebcp+0,
+-0x1.001ffcff7ffcp+0,-0x1.ffbffa00fff8p-1,-0x1.ff3fca1afd78p-1,
+-0x1.febf6a7cec78p-1,-0x1.fe3edb56b4f8p-1,-0x1.fdbe1cd832f8p-1,
+-0x1.fd3d2f313678p-1,-0x1.fcbc12918378p-1,-0x1.fc3ac728d1f8p-1,
+-0x1.fbb94d26cdf8p-1,-0x1.fb37a4bb1778p-1,-0x1.fab5ce154278p-1,
+-0x1.fa33c964d6f8p-1,-0x1.f9b196d950f8p-1,-0x1.f92f36a22078p-1,
+-0x1.f8aca8eea978p-1,-0x1.f829edee43f8p-1,-0x1.f7a705d03bf8p-1,
+-0x1.f723f0c3d178p-1,-0x1.f6a0aef83878p-1,-0x1.f61d409c98f8p-1,
+-0x1.f599a5e00ef8p-1,-0x1.f515def1aa78p-1,-0x1.f491ec006f78p-1,
+-0x1.f40dcd3b55f8p-1,-0x1.f38982d149f8p-1,-0x1.f3050cf12b78p-1,
+-0x1.f2806bc9ce78p-1,-0x1.f1fb9f89faf8p-1,-0x1.f176a8606cf8p-1,
+-0x1.f0f1867bd478p-1,-0x1.f06c3a0ad578p-1,-0x1.efe6c33c07f8p-1,
+-0x1.ef61223df7f8p-1,-0x1.eedb573f2578p-1,-0x1.ee55626e0478p-1,
+-0x1.edcf43f8fcf8p-1,-0x1.ed48fc0e6af8p-1,-0x1.ecc28adc9e78p-1,
+-0x1.ec3bf091db78p-1,-0x1.ebb52d5c59f8p-1,-0x1.eb2e416a45f8p-1,
+-0x1.eaa72ce9bf78p-1,-0x1.ea1ff008da78p-1,-0x1.e9988af59ef8p-1,
+-0x1.e910fdde08f8p-1,-0x1.e88948f00878p-1,-0x1.e8016c598178p-1,
+-0x1.e77968484bf8p-1,-0x1.e6f13cea33f8p-1,-0x1.e668ea6cf978p-1,
+-0x1.e5e070fe5078p-1,-0x1.e557d0cbe0f8p-1,-0x1.e4cf0a0346f8p-1,
+-0x1.e4461cd21278p-1,-0x1.e3bd0965c778p-1,-0x1.e333cfebddf8p-1,
+-0x1.e2aa7091c1f8p-1,-0x1.e220eb84d378p-1,-0x1.e19740f26678p-1,
+-0x1.e10d7107c2f8p-1,-0x1.e0837bf224f8p-1,-0x1.dff961debc78p-1,
+-0x1.df6f22faad78p-1,-0x1.dee4bf730ff8p-1,-0x1.de5a3774eff8p-1,
+-0x1.ddcf8b2d4d78p-1,-0x1.dd44bac91c78p-1,-0x1.dcb9c67544f8p-1,
+-0x1.dc2eae5ea2f8p-1,-0x1.dba372b20678p-1,-0x1.db18139c3378p-1,
+-0x1.da8c9149e1f8p-1,-0x1.da00ebe7bdf8p-1,-0x1.d97523a26778p-1,
+-0x1.d8e938a67278p-1,-0x1.d85d2b2066f8p-1,-0x1.d7d0fb3cc0f8p-1,
+-0x1.d744a927f078p-1,-0x1.d6b8350e5978p-1,-0x1.d62b9f1c53f8p-1,
+-0x1.d59ee77e2bf8p-1,-0x1.d5120e602178p-1,-0x1.d48513ee6878p-1,
+-0x1.d3f7f85528f8p-1,-0x1.d36abbc07ef8p-1,-0x1.d2dd5e5c7a78p-1,
+-0x1.d24fe0551f78p-1,-0x1.d1c241d665f8p-1,-0x1.d134830c39f8p-1,
+-0x1.d0a6a4227b78p-1,-0x1.d018a544fe78p-1,-0x1.cf8a869f8af8p-1,
+-0x1.cefc485ddcf8p-1,-0x1.ce6deaaba478p-1,-0x1.cddf6db48578p-1,
+-0x1.cd50d1a417f8p-1,-0x1.ccc216a5e7f8p-1,-0x1.cc333ce57578p-1,
+-0x1.cba4448e3478p-1,-0x1.cb152dcb8cf8p-1,-0x1.ca85f8c8daf8p-1,
+-0x1.c9f6a5b16e78p-1,-0x1.c96734b08b78p-1,-0x1.c8d7a5f169f8p-1,
+-0x1.c847f99f35f8p-1,-0x1.c7b82fe50f78p-1,-0x1.c72848ee0a78p-1,
+-0x1.c69844e52ef8p-1,-0x1.c60823f578f8p-1,-0x1.c577e649d878p-1,
+-0x1.c4e78c0d3178p-1,-0x1.c457156a5bf8p-1,-0x1.c3c6828c23f8p-1,
+-0x1.c335d39d4978p-1,-0x1.c2a508c88078p-1,-0x1.c214223870f8p-1,
+-0x1.c1832017b6f8p-1,-0x1.c0f20290e278p-1,-0x1.c060c9ce7778p-1,
+-0x1.bfcf75faedf8p-1,-0x1.bf3e0740b1f8p-1,-0x1.beac7dca2378p-1,
+-0x1.be1ad9c19678p-1,-0x1.bd891b5152f8p-1,-0x1.bcf742a394f8p-1,
+-0x1.bc654fe28c78p-1,-0x1.bbd343385d78p-1,-0x1.bb411ccf1ff8p-1,
+-0x1.baaedcd0dff8p-1,-0x1.ba1c83679d78p-1,-0x1.b98a10bd4c78p-1,
+-0x1.b8f784fbd4f8p-1,-0x1.b864e04d12f8p-1,-0x1.b7d222dad678p-1,
+-0x1.b73f4ccee378p-1,-0x1.b6ac5e52f1f8p-1,-0x1.b6195790adf8p-1,
+-0x1.b58638b1b778p-1,-0x1.b4f301dfa278p-1,-0x1.b45fb343f6f8p-1,
+-0x1.b3cc4d0830f8p-1,-0x1.b338cf55c078p-1,-0x1.b2a53a560978p-1,
+-0x1.b2118e3263f8p-1,-0x1.b17dcb141bf8p-1,-0x1.b0e9f1247178p-1,
+-0x1.b056008c9878p-1,-0x1.afc1f975b8f8p-1,-0x1.af2ddc08eef8p-1,
+-0x1.ae99a86f4a78p-1,-0x1.ae055ed1cf78p-1,-0x1.ad70ff5975f8p-1,
+-0x1.acdc8a2f29f8p-1,-0x1.ac47ff7bcb78p-1,-0x1.abb35f682e78p-1,
+-0x1.ab1eaa1d1af8p-1,-0x1.aa89dfc34cf8p-1,-0x1.a9f500837478p-1,
+-0x1.a9600c863578p-1,-0x1.a8cb03f427f8p-1,-0x1.a835e6f5d7f8p-1,
+-0x1.a7a0b5b3c578p-1,-0x1.a70b70566478p-1,-0x1.a67617061cf8p-1,
+-0x1.a5e0a9eb4af8p-1,-0x1.a54b292e3e78p-1,-0x1.a4b594f73b78p-1,
+-0x1.a41fed6e79f8p-1,-0x1.a38a32bc25f8p-1,-0x1.a2f465085f78p-1,
+-0x1.a25e847b3a78p-1,-0x1.a1c8913cbef8p-1,-0x1.a1328b74e8f8p-1,
+-0x1.a09c734ba878p-1,-0x1.a00648e8e178p-1,-0x1.9f700c746bf8p-1,
+-0x1.9ed9be1613f8p-1,-0x1.9e435df59978p-1,-0x1.9dacec3ab078p-1,
+-0x1.9d16690d00f8p-1,-0x1.9c7fd49426f8p-1,-0x1.9be92ef7b278p-1,
+-0x1.9b52785f2778p-1,-0x1.9abbb0f1fdf8p-1,-0x1.9a24d8d7a1f8p-1,
+-0x1.998df0377378p-1,-0x1.98f6f738c678p-1,-0x1.985fee02e2f8p-1,
+-0x1.97c8d4bd04f8p-1,-0x1.9731ab8e5c78p-1,-0x1.969a729e0d78p-1,
+-0x1.96032a132ff8p-1,-0x1.956bd214cff8p-1,-0x1.94d46ac9ed78p-1,
+-0x1.943cf4597c78p-1,-0x1.93a56eea64f8p-1,-0x1.930ddaa382f8p-1,
+-0x1.927637aba678p-1,-0x1.91de86299378p-1,-0x1.9146c64401f8p-1,
+-0x1.90aef8219df8p-1,-0x1.90171be90778p-1,-0x1.8f7f31c0d278p-1,
+-0x1.8ee739cf86f8p-1,-0x1.8e4f343ba0f8p-1,-0x1.8db7212b9078p-1,
+-0x1.8d1f00c5b978p-1,-0x1.8c86d33073f8p-1,-0x1.8bee98920bf8p-1,
+-0x1.8b565110c178p-1,-0x1.8abdfcd2c878p-1,-0x1.8a259bfe48f8p-1,
+-0x1.898d2eb95ef8p-1,-0x1.88f4b52a1a78p-1,-0x1.885c2f767f78p-1,
+-0x1.87c39dc485f8p-1,-0x1.872b003a19f8p-1,-0x1.869256fd1b78p-1,
+-0x1.85f9a2335e78p-1,-0x1.8560e202aaf8p-1,-0x1.84c81690bcf8p-1,
+-0x1.842f40034478p-1,-0x1.83965e7fe578p-1,-0x1.82fd722c37f8p-1,
+-0x1.82647b2dc7f8p-1,-0x1.81cb79aa1578p-1,-0x1.81326dc69478p-1,
+-0x1.809957a8acf8p-1,-0x1.80003775baf8p-1,-0x1.7f670d530e78p-1,
+-0x1.7ecdd965eb78p-1,-0x1.7e349bd389f8p-1,-0x1.7d9b54c115f8p-1,
+-0x1.7d020453af78p-1,-0x1.7c68aab06a78p-1,-0x1.7bcf47fc4ef8p-1,
+-0x1.7b35dc5c58f8p-1,-0x1.7a9c67f57878p-1,-0x1.7a02eaec9178p-1,
+-0x1.796965667bf8p-1,-0x1.78cfd78803f8p-1,-0x1.78364175e978p-1,
+-0x1.779ca354e078p-1,-0x1.7702fd4990f8p-1,-0x1.76694f7896f8p-1,
+-0x1.75cf9a068278p-1,-0x1.7535dd17d778p-1,-0x1.749c18d10df8p-1,
+-0x1.74024d5691f8p-1,-0x1.73687accc378p-1,-0x1.72cea157f678p-1,
+-0x1.7234c11c72f8p-1,-0x1.719ada3e74f8p-1,-0x1.7100ece22c78p-1,
+-0x1.7066f92bbd78p-1,-0x1.6fccff3f3ff8p-1,-0x1.6f32ff40bff8p-1,
+-0x1.6e98f9543d78p-1,-0x1.6dfeed9dac78p-1,-0x1.6d64dc40f4f8p-1,
+-0x1.6ccac561f2f8p-1,-0x1.6c30a9247678p-1,-0x1.6b9687ac4378p-1,
+-0x1.6afc611d11f8p-1,-0x1.6a62359a8df8p-1,-0x1.69c805485778p-1,
+-0x1.692dd04a0278p-1,-0x1.689396c316f8p-1,-0x1.67f958d710f8p-1,
+-0x1.675f16a96078p-1,-0x1.66c4d05d6978p-1,-0x1.662a861683f8p-1,
+-0x1.659037f7fbf8p-1,-0x1.64f5e6251178p-1,-0x1.645b90c0f878p-1,
+-0x1.63c137eed8f8p-1,-0x1.6326dbd1cef8p-1,-0x1.628c7c8cea78p-1,
+-0x1.61f21a432f78p-1,-0x1.6157b51795f8p-1,-0x1.60bd4d2d09f8p-1,
+-0x1.6022e2a66b78p-1,-0x1.5f8875a68e78p-1,-0x1.5eee06503af8p-1,
+-0x1.5e5394c62cf8p-1,-0x1.5db9212b1478p-1,-0x1.5d1eaba19578p-1,
+-0x1.5c84344c47f8p-1,-0x1.5be9bb4db7f8p-1,-0x1.5b4f40c86578p-1,
+-0x1.5ab4c4dec478p-1,-0x1.5a1a47b33cf8p-1,-0x1.597fc9682af8p-1,
+-0x1.58e54a1fde78p-1,-0x1.584ac9fc9b78p-1,-0x1.57b0492099f8p-1,
+-0x1.5715c7ae05f8p-1,-0x1.567b45c6ff78p-1,-0x1.55e0c38d9a78p-1,
+-0x1.55464123def8p-1,-0x1.54abbeabc8f8p-1,-0x1.54113c474878p-1,
+-0x1.5376ba184178p-1,-0x1.52dc38408bf8p-1,-0x1.5241b6e1f3f8p-1,
+-0x1.51a7361e3978p-1,-0x1.510cb6171078p-1,-0x1.507236ee20f8p-1,
+-0x1.4fd7b8c506f8p-1,-0x1.4f3d3bbd5278p-1,-0x1.4ea2bff88778p-1,
+-0x1.4e0845981df8p-1,-0x1.4d6dccbd81f8p-1,-0x1.4cd3558a1378p-1,
+-0x1.4c38e01f2678p-1,-0x1.4b9e6c9e02f8p-1,-0x1.4b03fb27e4f8p-1,
+-0x1.4a698bddfc78p-1,-0x1.49cf1ee16d78p-1,-0x1.4934b4534ff8p-1,
+-0x1.489a4c54aff8p-1,-0x1.47ffe7068d78p-1,-0x1.47658489dc78p-1,
+-0x1.46cb24ff84f8p-1,-0x1.4630c88862f8p-1,-0x1.45966f454678p-1,
+-0x1.44fc1956f378p-1,-0x1.4461c6de21f8p-1,-0x1.43c777fb7df8p-1,
+-0x1.432d2ccfa778p-1,-0x1.4292e57b3278p-1,-0x1.41f8a21ea6f8p-1,
+-0x1.415e62da80f8p-1,-0x1.40c427cf3078p-1,-0x1.4029f11d1978p-1,
+-0x1.3f8fbee493f8p-1,-0x1.3ef59145ebf8p-1,-0x1.3e5b68616178p-1,
+-0x1.3dc144572878p-1,-0x1.3d27254768f8p-1,-0x1.3c8d0b523ef8p-1,
+-0x1.3bf2f697ba78p-1,-0x1.3b58e737df78p-1,-0x1.3abedd52a5f8p-1,
+-0x1.3a24d907f9f8p-1,-0x1.398ada77bb78p-1,-0x1.38f0e1c1be78p-1,
+-0x1.3856ef05caf8p-1,-0x1.37bd02639cf8p-1,-0x1.37231bfae478p-1,
+-0x1.36893beb4578p-1,-0x1.35ef625457f8p-1,-0x1.35558f55a7f8p-1,
+-0x1.34bbc30eb578p-1,-0x1.3421fd9ef478p-1,-0x1.33883f25ccf8p-1,
+-0x1.32ee87c29af8p-1,-0x1.3254d794ae78p-1,-0x1.31bb2ebb4b78p-1,
+-0x1.31218d55a9f8p-1,-0x1.3087f382f5f8p-1,-0x1.2fee61624f78p-1,
+-0x1.2f54d712ca78p-1,-0x1.2ebb54b36ef8p-1,-0x1.2e21da6338f8p-1,
+-0x1.2d8868411878p-1,-0x1.2ceefe6bf178p-1,-0x1.2c559d029bf8p-1,
+-0x1.2bbc4423e3f8p-1,-0x1.2b22f3ee8978p-1,-0x1.2a89ac814078p-1,
+-0x1.29f06dfab0f8p-1,-0x1.2957387976f8p-1,-0x1.28be0c1c2278p-1,
+-0x1.2824e9013778p-1,-0x1.278bcf472df8p-1,-0x1.26f2bf0c71f8p-1,
+-0x1.2659b86f6378p-1,-0x1.25c0bb8e5678p-1,-0x1.2527c88792f8p-1,
+-0x1.248edf7954f8p-1,-0x1.23f60081cc78p-1,-0x1.235d2bbf1d78p-1,
+-0x1.22c4614f5ff8p-1,-0x1.222ba1509ff8p-1,-0x1.2192ebe0dd78p-1,
+-0x1.20fa411e0c78p-1,-0x1.2061a12614f8p-1,-0x1.1fc90c16d2f8p-1,
+-0x1.1f30820e1678p-1,-0x1.1e980329a378p-1,-0x1.1dff8f8731f8p-1,
+-0x1.1d6727446df8p-1,-0x1.1cceca7ef778p-1,-0x1.1c3679546278p-1,
+-0x1.1b9e33e236f8p-1,-0x1.1b05fa45f0f8p-1,-0x1.1a6dcc9d0078p-1,
+-0x1.19d5ab04c978p-1,-0x1.193d959aa3f8p-1,-0x1.18a58c7bdbf8p-1,
+-0x1.180d8fc5b178p-1,-0x1.17759f955878p-1,-0x1.16ddbc07f8f8p-1,
+-0x1.1645e53aaef8p-1,-0x1.15ae1b4a8a78p-1,-0x1.15165e548f78p-1,
+-0x1.147eae75b5f8p-1,-0x1.13e70bcae9f8p-1,-0x1.134f76710b78p-1,
+-0x1.12b7ee84ee78p-1,-0x1.122074235af8p-1,-0x1.118907690cf8p-1,
+-0x1.10f1a872b478p-1,-0x1.105a575cf578p-1,-0x1.0fc3144467f8p-1,
+-0x1.0f2bdf4597f8p-1,-0x1.0e94b87d0578p-1,-0x1.0dfda0072478p-1,
+-0x1.0d6696005cf8p-1,-0x1.0ccf9a850af8p-1,-0x1.0c38adb17e78p-1,
+-0x1.0ba1cfa1fb78p-1,-0x1.0b0b0072b9f8p-1,-0x1.0a74403fe5f8p-1,
+-0x1.09dd8f259f78p-1,-0x1.0946ed3ffa78p-1,-0x1.08b05aaafef8p-1,
+-0x1.0819d782a8f8p-1,-0x1.078363e2e878p-1,-0x1.06ecffe7a178p-1,
+-0x1.0656abacabf8p-1,-0x1.05c0674dd3f8p-1,-0x1.052a32e6d978p-1,
+-0x1.04940e937078p-1,-0x1.03fdfa6f40f8p-1,-0x1.0367f695e6f8p-1,
+-0x1.02d20322f278p-1,-0x1.023c2031e778p-1,-0x1.01a64dde3df8p-1,
+-0x1.01108c4361f8p-1,-0x1.007adb7cb378p-1,-0x1.ffca774b0cfp-2,
+-0x1.fe9f59b245fp-2,-0x1.fd745e6589fp-2,-0x1.fc49859b38fp-2,-0x1.fb1ecf899afp-2,
+-0x1.f9f43c66dffp-2,-0x1.f8c9cc691ffp-2,-0x1.f79f7fc65afp-2,-0x1.f67556b478fp-2,
+-0x1.f54b516949fp-2,-0x1.f421701a85fp-2,-0x1.f2f7b2fdccfp-2,-0x1.f1ce1a48a6fp-2,
+-0x1.f0a4a63083fp-2,-0x1.ef7b56eabbfp-2,-0x1.ee522cac8efp-2,-0x1.ed2927ab24fp-2,
+-0x1.ec00481b8dfp-2,-0x1.ead78e32c1fp-2,-0x1.e9aefa25a0fp-2,-0x1.e8868c28f2fp-2,
+-0x1.e75e447167fp-2,-0x1.e636233397fp-2,-0x1.e50e28a402fp-2,-0x1.e3e654f710fp-2,
+-0x1.e2bea86111fp-2,-0x1.e19723163dfp-2,-0x1.e06fc54ab4fp-2,-0x1.df488f327efp-2,
+-0x1.de2181018bfp-2,-0x1.dcfa9aebb3fp-2,-0x1.dbd3dd24b6fp-2,-0x1.daad47e03cfp-2,
+-0x1.d986db51d5fp-2,-0x1.d86097acf9fp-2,-0x1.d73a7d2508fp-2,-0x1.d6148bed4afp-2,
+-0x1.d4eec438effp-2,-0x1.d3c9263b0ffp-2,-0x1.d2a3b226aafp-2,-0x1.d17e682ea8fp-2,
+-0x1.d0594885d9fp-2,-0x1.cf34535ef5fp-2,-0x1.ce0f88ec9cfp-2,-0x1.cceae96156fp-2,
+-0x1.cbc674ef93fp-2,-0x1.caa22bc9abfp-2,-0x1.c97e0e21defp-2,-0x1.c85a1c2a54fp-2,
+-0x1.c73656151dfp-2,-0x1.c612bc1431fp-2,-0x1.c4ef4e5970fp-2,-0x1.c3cc0d16a2fp-2,
+-0x1.c2a8f87d77fp-2,-0x1.c18610bf87fp-2,-0x1.c063560e52fp-2,-0x1.bf40c89b40fp-2,
+-0x1.be1e6897a1fp-2,-0x1.bcfc3634adfp-2,-0x1.bbda31a384fp-2,-0x1.bab85b152efp-2,
+-0x1.b996b2ba9bfp-2,-0x1.b87538c4a3fp-2,-0x1.b753ed6406fp-2,-0x1.b632d0c96cfp-2,
+-0x1.b511e32565fp-2,-0x1.b3f124a869fp-2,-0x1.b2d09582d8fp-2,-0x1.b1b035e4fafp-2,
+-0x1.b09005fefffp-2,-0x1.af700600fffp-2,-0x1.ae50361afafp-2,-0x1.ad30967cd8fp-2,
+-0x1.ac11275669fp-2,-0x1.aaf1e8d765fp-2,-0x1.a9d2db2f6cfp-2,-0x1.a8b3fe8e06fp-2,
+-0x1.a7955322a3fp-2,-0x1.a676d91c9bfp-2,-0x1.a55890ab2efp-2,-0x1.a43a79fd84fp-2,
+-0x1.a31c9542adfp-2,-0x1.a1fee2a9a1fp-2,-0x1.a0e1626140fp-2,-0x1.9fc4149852fp-2,
+-0x1.9ea6f97d87fp-2,-0x1.9d8a113f77fp-2,-0x1.9c6d5c0ca2fp-2,-0x1.9b50da1370fp-2,
+-0x1.9a348b8231fp-2,-0x1.991870871dfp-2,-0x1.97fc895054fp-2,-0x1.96e0d60bdefp-2,
+-0x1.95c556e7abfp-2,-0x1.94aa0c1193fp-2,-0x1.938ef5b756fp-2,-0x1.927414069cfp-2,
+-0x1.9159672cf5fp-2,-0x1.903eef57d9fp-2,-0x1.8f24acb4a8fp-2,-0x1.8e0a9f70aafp-2,
+-0x1.8cf0c7b90ffp-2,-0x1.8bd725baeffp-2,-0x1.8abdb9a34afp-2,-0x1.89a4839f08fp-2,
+-0x1.888b83daf9fp-2,-0x1.8772ba83d5fp-2,-0x1.865a27c63cfp-2,-0x1.8541cbceb6fp-2,
+-0x1.8429a6c9b3fp-2,-0x1.8311b8e38bfp-2,-0x1.81fa02487efp-2,-0x1.80e28324b4fp-2,
+-0x1.7fcb3ba43dfp-2,-0x1.7eb42bf311fp-2,-0x1.7d9d543d10fp-2,-0x1.7c86b4ae02fp-2,
+-0x1.7b704d7197fp-2,-0x1.7a5a1eb367fp-2,-0x1.7944289ef2fp-2,-0x1.782e6b5fa0fp-2,
+-0x1.7718e720c1fp-2,-0x1.76039c0d8dfp-2,-0x1.74ee8a5124fp-2,-0x1.73d9b2168efp-2,
+-0x1.72c51388bbfp-2,-0x1.71b0aed283fp-2,-0x1.709c841ea6fp-2,-0x1.6f889397ccfp-2,
+-0x1.6e74dd6885fp-2,-0x1.6d6161bb49fp-2,-0x1.6c4e20ba78fp-2,-0x1.6b3b1a905afp-2,
+-0x1.6a284f671ffp-2,-0x1.6915bf68dffp-2,-0x1.68036abf9afp-2,-0x1.66f1519538fp-2,
+-0x1.65df741389fp-2,-0x1.64cdd26445fp-2,-0x1.63bc6cb10cfp-2,-0x1.62ab432366fp-2,
+-0x1.619a55e4c3fp-2,-0x1.6089a51e7bfp-2,-0x1.5f7930f9cefp-2,-0x1.5e68f99fe4fp-2,
+-0x1.5d58ff39cdfp-2,-0x1.5c4941f081fp-2,-0x1.5b39c1ece0fp-2,-0x1.5a2a7f57b2fp-2,
+-0x1.591b7a59a7fp-2,-0x1.580cb31b57fp-2,-0x1.56fe29c542fp-2,-0x1.55efde7fd0fp-2,
+-0x1.54e1d17351fp-2,-0x1.53d402c7fdfp-2,-0x1.52c672a5f4fp-2,-0x1.51b921353efp-2,
+-0x1.50ac0e9dcbfp-2,-0x1.4f9f3b0773fp-2,-0x1.4e92a699f6fp-2,-0x1.4d86517cfcfp-2,
+-0x1.4c7a3bd815fp-2,-0x1.4b6e65d2b9fp-2,-0x1.4a62cf9448fp-2,-0x1.495779440afp-2,
+-0x1.484c63092ffp-2,-0x1.47418d0acffp-2,-0x1.4636f76feafp-2,-0x1.452ca25f68fp-2,
+-0x1.44228e0019fp-2,-0x1.4318ba78b5fp-2,-0x1.420f27efdcfp-2,-0x1.4105d68c16fp-2,
+-0x1.3ffcc673d3fp-2,-0x1.3ef3f7cd6bfp-2,-0x1.3deb6abf1efp-2,-0x1.3ce31f6f14fp-2,
+-0x1.3bdb16035dfp-2,-0x1.3ad34ea1f1fp-2,-0x1.39cbc970b0fp-2,-0x1.38c4869562fp-2,
+-0x1.37bd8635b7fp-2,-0x1.36b6c87747fp-2,-0x1.35b04d7f92fp-2,-0x1.34aa157400fp-2,
+-0x1.33a42079e1fp-2,-0x1.329e6eb66dfp-2,-0x1.3199004ec4fp-2,-0x1.3093d567eefp-2,
+-0x1.2f8eee26dbfp-2,-0x1.2e8a4ab063fp-2,-0x1.2d85eb2946fp-2,-0x1.2c81cfb62cfp-2,
+-0x1.2b7df87ba5fp-2,-0x1.2a7a659e29fp-2,-0x1.2977174218fp-2,-0x1.28740d8bbafp-2,
+-0x1.2771489f3ffp-2,-0x1.266ec8a0bffp-2,-0x1.256c8db43afp-2,-0x1.246a97fd98fp-2,
+-0x1.2368e7a0a9fp-2,-0x1.22677cc125fp-2,-0x1.21665782acfp-2,-0x1.20657808c6fp-2,
+-0x1.1f64de76e3fp-2,-0x1.1e648af05bfp-2,-0x1.1d647d986efp-2,-0x1.1c64b69244fp-2,
+-0x1.1b653600edfp-2,-0x1.1a65fc0761fp-2,-0x1.196708c880fp-2,-0x1.18685c6712fp-2,
+-0x1.1769f705c7fp-2,-0x1.166bd8c737fp-2,-0x1.156e01cde2fp-2,-0x1.1470723c30fp-2,
+-0x1.13732a3471fp-2,-0x1.127629d8ddfp-2,-0x1.1179714b94fp-2,-0x1.107d00ae9efp-2,
+-0x1.0f80d823ebfp-2,-0x1.0e84f7cd53fp-2,-0x1.0d895fcc96fp-2,-0x1.0c8e10435cfp-2,
+-0x1.0b93095335fp-2,-0x1.0a984b1d99fp-2,-0x1.099dd5c3e8fp-2,-0x1.08a3a9676afp-2,
+-0x1.07a9c6294ffp-2,-0x1.06b02c2aaffp-2,-0x1.05b6db8c8afp-2,-0x1.04bdd46fc8fp-2,
+-0x1.03c516f539fp-2,-0x1.02cca33d95fp-2,-0x1.01d479697cfp-2,-0x1.00dc999976fp-2,
+-0x1.ffca07dbe7ep-3,-0x1.fddb710e97ep-3,-0x1.fbed6f0b7dep-3,-0x1.fa000212e9ep-3,
+-0x1.f8132a64fbep-3,-0x1.f626e841a3ep-3,-0x1.f43b3be8a1ep-3,-0x1.f250259985ep-3,
+-0x1.f065a593afep-3,-0x1.ee7bbc164fep-3,-0x1.ec92696065ep-3,-0x1.eaa9adb0c1ep-3,
+-0x1.e8c1894603ep-3,-0x1.e6d9fc5e9bep-3,-0x1.e4f30738c9ep-3,-0x1.e30caa129dep-3,
+-0x1.e126e529f7ep-3,-0x1.df41b8bc87ep-3,-0x1.dd5d2507cdep-3,-0x1.db792a4919ep-3,
+-0x1.d995c8bd8bep-3,-0x1.d7b300a213ep-3,-0x1.d5d0d23371ep-3,-0x1.d3ef3dae35ep-3,
+-0x1.d20e434ebfep-3,-0x1.d02de3513fep-3,-0x1.ce4e1df1b5ep-3,-0x1.cc6ef36bf1ep-3,
+-0x1.ca9063fb93ep-3,-0x1.c8b26fdc0bep-3,-0x1.c6d5174899ep-3,-0x1.c4f85a7c4dep-3,
+-0x1.c31c39b207ep-3,-0x1.c140b52477ep-3,-0x1.bf65cd0e1dep-3,-0x1.bd8b81a949ep-3,
+-0x1.bbb1d3301bep-3,-0x1.b9d8c1dc83ep-3,-0x1.b8004de841ep-3,-0x1.b628778ce5ep-3,
+-0x1.b4513f03cfep-3,-0x1.b27aa4862fep-3,-0x1.b0a4a84d05ep-3,-0x1.aecf4a9121ep-3,
+-0x1.acfa8b8b23ep-3,-0x1.ab266b737bep-3,-0x1.a952ea8269ep-3,-0x1.a78008effdep-3,
+-0x1.a5adc6f417ep-3,-0x1.a3dc24c667ep-3,-0x1.a20b229e6dep-3,-0x1.a03ac0b379ep-3,
+-0x1.9e6aff3cabep-3,-0x1.9c9bde70f3ep-3,-0x1.9acd5e8711ep-3,-0x1.98ff7fb595ep-3,
+-0x1.97324232dfep-3,-0x1.9565a6351fep-3,-0x1.9399abf255ep-3,-0x1.91ce53a051ep-3,
+-0x1.90039d74b3ep-3,-0x1.8e3989a4ebep-3,-0x1.8c70186639ep-3,-0x1.8aa749edadep-3,
+-0x1.88df1e7027ep-3,-0x1.8717962257ep-3,-0x1.8550b138bdep-3,-0x1.838a6fe7a9ep-3,
+-0x1.81c4d2633bep-3,-0x1.7fffd8df63ep-3,-0x1.7e3b838fe1ep-3,-0x1.7c77d2a845ep-3,
+-0x1.7ab4c65befep-3,-0x1.78f25ede0fep-3,-0x1.77309c61a5ep-3,-0x1.756f7f1981ep-3,
+-0x1.73af073843ep-3,-0x1.71ef34f05bep-3,-0x1.7030087409ep-3,-0x1.6e7181f55dep-3,
+-0x1.6cb3a1a637ep-3,-0x1.6af667b847ep-3,-0x1.6939d45d0dep-3,-0x1.677de7c5d9ep-3,
+-0x1.65c2a223cbep-3,-0x1.640803a7d3ep-3,-0x1.624e0c82b1ep-3,-0x1.6094bce4f5ep-3,
+-0x1.5edc14feffep-3,-0x1.5d241500ffep-3,-0x1.5b6cbd1af5ep-3,-0x1.59b60d7cb1ep-3,
+-0x1.58000655d3ep-3,-0x1.564aa7d5cbep-3,-0x1.5495f22bd9ep-3,-0x1.52e1e5870dep-3,
+-0x1.512e821647ep-3,-0x1.4f7bc80837ep-3,-0x1.4dc9b78b5dep-3,-0x1.4c1850ce09ep-3,
+-0x1.4a6793fe5bep-3,-0x1.48b7814a43ep-3,-0x1.470818df81ep-3,-0x1.45595aeba5ep-3,
+-0x1.43ab479c0fep-3,-0x1.41fddf1defep-3,-0x1.4051219e45ep-3,-0x1.3ea50f49e1ep-3,
+-0x1.3cf9a84d63ep-3,-0x1.3b4eecd53bep-3,-0x1.39a4dd0da9ep-3,-0x1.37fb7922bdep-3,
+-0x1.3652c14057ep-3,-0x1.34aab59227ep-3,-0x1.33035643adep-3,-0x1.315ca38039ep-3,
+-0x1.2fb69d72ebep-3,-0x1.2e114446b3ep-3,-0x1.2c6c982651ep-3,-0x1.2ac8993c55ep-3,
+-0x1.292547b31fep-3,-0x1.2782a3b4dfep-3,-0x1.25e0ad6b95ep-3,-0x1.243f650111ep-3,
+-0x1.229eca9ef3ep-3,-0x1.20fede6eabep-3,-0x1.1f5fa09979ep-3,-0x1.1dc111486dep-3,
+-0x1.1c2330a467ep-3,-0x1.1a85fed617ep-3,-0x1.18e97c05fdep-3,-0x1.174da85c69ep-3,
+-0x1.15b284017bep-3,-0x1.14180f1d23ep-3,-0x1.127e49d721ep-3,-0x1.10e5345705ep-3,
+-0x1.0f4ccec42fep-3,-0x1.0db51945cfep-3,-0x1.0c1e1402e5ep-3,-0x1.0a87bf2241ep-3,
+-0x1.08f21aca83ep-3,-0x1.075d27221bep-3,-0x1.05c8e44f49ep-3,-0x1.043552781dep-3,
+-0x1.02a271c277ep-3,-0x1.0110425407ep-3,-0x1.fefd88a49bcp-4,-0x1.fbdbefc533cp-4,
+-0x1.f8bbba5417cp-4,-0x1.f59ce89b27cp-4,-0x1.f27f7ae3e3cp-4,-0x1.ef6371776bcp-4,
+-0x1.ec48cc9e7fcp-4,-0x1.e92f8ca17fcp-4,-0x1.e617b1c86bcp-4,-0x1.e3013c5ae3cp-4,
+-0x1.dfec2ca027cp-4,-0x1.dcd882df17cp-4,-0x1.d9c63f5e33cp-4,-0x1.d6b562639bcp-4,
+-0x1.d3a5ec350fcp-4,-0x1.d097dd17efcp-4,-0x1.cd8b35513bcp-4,-0x1.ca7ff52593cp-4,
+-0x1.c7761cd937cp-4,-0x1.c46dacb007cp-4,-0x1.c166a4ed83cp-4,-0x1.be6105d4cbcp-4,
+-0x1.bb5ccfa89fcp-4,-0x1.b85a02ab5fcp-4,-0x1.b5589f1f0bcp-4,-0x1.b258a54543cp-4,
+-0x1.af5a155f47cp-4,-0x1.ac5cefadf7cp-4,-0x1.a9613471d3cp-4,-0x1.a666e3eafbcp-4,
+-0x1.a36dfe592fcp-4,-0x1.a07683fbcfcp-4,-0x1.9d807511dbcp-4,-0x1.9a8bd1d9f3cp-4,
+-0x1.97989a9257cp-4,-0x1.94a6cf78e7cp-4,-0x1.91b670cb23cp-4,-0x1.8ec77ec62bcp-4,
+-0x1.8bd9f9a6bfcp-4,-0x1.88ede1a93fcp-4,-0x1.86033709abcp-4,-0x1.8319fa03a3cp-4,
+-0x1.80322ad267cp-4,-0x1.7d4bc9b0d7cp-4,-0x1.7a66d6d973cp-4,-0x1.778352865bcp-4,
+-0x1.74a13cf14fcp-4,-0x1.71c09653afcp-4,-0x1.6ee15ee67bcp-4,-0x1.6c0396e253cp-4,
+-0x1.69273e7f77cp-4,-0x1.664c55f5c7cp-4,-0x1.6372dd7cc3cp-4,-0x1.609ad54b8bcp-4,
+-0x1.5dc43d98dfcp-4,-0x1.5aef169b1fcp-4,-0x1.581b60884bcp-4,-0x1.55491b9603cp-4,
+-0x1.527847f987cp-4,-0x1.4fa8e5e7b7cp-4,-0x1.4cdaf59513cp-4,-0x1.4a0e7735bbcp-4,
+-0x1.47436afd6fcp-4,-0x1.4479d11f8fcp-4,-0x1.41b1a9cf1bcp-4,-0x1.3eeaf53eb3cp-4,
+-0x1.3c25b3a097cp-4,-0x1.3961e526a7cp-4,-0x1.369f8a0263cp-4,-0x1.33dea264ebcp-4,
+-0x1.311f2e7effcp-4,-0x1.2e612e80ffcp-4,-0x1.2ba4a29aebcp-4,-0x1.28e98afc63cp-4,
+-0x1.262fe7d4a7cp-4,-0x1.2377b95297cp-4,-0x1.20c0ffa4b3cp-4,-0x1.1e0bbaf91bcp-4,
+-0x1.1b57eb7d8fcp-4,-0x1.18a5915f6fcp-4,-0x1.15f4accbbbcp-4,-0x1.13453def13cp-4,
+-0x1.109744f5b7cp-4,-0x1.0deac20b87cp-4,-0x1.0b3fb55c03cp-4,-0x1.08961f124bcp-4,
+-0x1.05edff591fcp-4,-0x1.0347565adfcp-4,-0x1.00a224418bcp-4,-0x1.fbfcd26d878p-5,
+-0x1.f6b84ac78f8p-5,-0x1.f176b1e2ef8p-5,-0x1.ec380810a78p-5,-0x1.e6fc4da0f78p-5,
+-0x1.e1c382e35f8p-5,-0x1.dc8da8269f8p-5,-0x1.d75abdb8b78p-5,-0x1.d22ac3e6e78p-5,
+-0x1.ccfdbafdaf8p-5,-0x1.c7d3a348cf8p-5,-0x1.c2ac7d13478p-5,-0x1.bd8848a7578p-5,
+-0x1.b867064e7f8p-5,-0x1.b348b6517f8p-5,-0x1.ae2d58f8578p-5,-0x1.a914ee8a478p-5,
+-0x1.a3ff774dcf8p-5,-0x1.9eecf388af8p-5,-0x1.99dd637fe78p-5,-0x1.94d0c777b78p-5,
+-0x1.8fc71fb39f8p-5,-0x1.8ac06c765f8p-5,-0x1.85bcae01f78p-5,-0x1.80bbe497a78p-5,
+-0x1.7bbe1077ef8p-5,-0x1.76c331e28f8p-5,-0x1.71cb4916878p-5,-0x1.6cd65652178p-5,
+-0x1.67e459d2bf8p-5,-0x1.62f553d53f8p-5,-0x1.5e094495978p-5,-0x1.59202c4f078p-5,
+-0x1.543a0b3c0f8p-5,-0x1.4f56e1966f8p-5,-0x1.4a76af97278p-5,-0x1.45997576778p-5,
+-0x1.40bf336bdf8p-5,-0x1.3be7e9ae1f8p-5,-0x1.37139873378p-5,-0x1.32423ff0678p-5,
+-0x1.2d73e05a2f8p-5,-0x1.28a879e44f8p-5,-0x1.23e00cc1c78p-5,-0x1.1f1a9924d78p-5,
+-0x1.1a581f3eff8p-5,-0x1.15989f40ff8p-5,-0x1.10dc195ad78p-5,-0x1.0c228dbbc78p-5,
+-0x1.076bfc924f8p-5,-0x1.02b8660c2f8p-5,-0x1.fc0f94accfp-6,-0x1.f2b4533a6fp-6,
+-0x1.e95f08183fp-6,-0x1.e00fb39bbfp-6,-0x1.d6c65618efp-6,-0x1.cd82efe24fp-6,
+-0x1.c4458148dfp-6,-0x1.bb0e0a9c1fp-6,-0x1.b1dc8c2a0fp-6,-0x1.a8b1063f2fp-6,
+-0x1.9f8b79267fp-6,-0x1.966be5297fp-6,-0x1.8d524a902fp-6,-0x1.843ea9a10fp-6,
+-0x1.7b3102a11fp-6,-0x1.722955d3dfp-6,-0x1.6927a37b4fp-6,-0x1.602bebd7efp-6,
+-0x1.57362f28bfp-6,-0x1.4e466dab3fp-6,-0x1.455ca79b6fp-6,-0x1.3c78dd33cfp-6,
+-0x1.339b0ead5fp-6,-0x1.2ac33c3f9fp-6,-0x1.21f166208fp-6,-0x1.19258c84afp-6,
+-0x1.105faf9effp-6,-0x1.079fcfa0ffp-6,-0x1.fdcbd9755ep-7,-0x1.ec640e351ep-7,
+-0x1.db083ddb3ep-7,-0x1.c9b868bebep-7,-0x1.b8748f339ep-7,-0x1.a73cb18adep-7,
+-0x1.9610d0127ep-7,-0x1.84f0eb157ep-7,-0x1.73dd02dbdep-7,-0x1.62d517aa9ep-7,
+-0x1.51d929c3bep-7,-0x1.40e939663ep-7,-0x1.300546ce1ep-7,-0x1.1f2d52345ep-7,
+-0x1.0e615bcefep-7,-0x1.fb42c7a1fcp-8,-0x1.d9dad4d4bcp-8,-0x1.b88adf903cp-8,
+-0x1.9752e8287cp-8,-0x1.7632eeeb7cp-8,-0x1.552af4213cp-8,-0x1.343af80bbcp-8,
+-0x1.1362fae6fcp-8,-0x1.e545f9d1f8p-9,-0x1.a3f5fc8378p-9,-0x1.62d5fe3678p-9,
+-0x1.21e5ff32f8p-9,-0x1.c24bff69fp-10,-0x1.412bffd8fp-10,-0x1.80d7fff5ep-11,
+-0x1.002fffffcp-12,0x1.ffa000008p-13,0x1.7f28000a2p-11,0x1.3ed400271p-10,
+0x1.bdb400961p-10,0x1.1e1a00cd08p-9,0x1.5d2a01c988p-9,0x1.9c0a037c88p-9,
+0x1.daba062e08p-9,0x1.0c9d051904p-8,0x1.2bc507f444p-8,0x1.4ad50bdec4p-8,
+0x1.69cd111484p-8,0x1.88ad17d784p-8,0x1.a775206fc4p-8,0x1.c6252b2b44p-8,
+0x1.e4bd385e04p-8,0x1.019ea43102p-7,0x1.10d2adcba2p-7,0x1.1ffab931e2p-7,
+0x1.2f16c699c2p-7,0x1.3e26d63c42p-7,0x1.4d2ae85562p-7,0x1.5c22fd2422p-7,
+0x1.6b0f14ea82p-7,0x1.79ef2fed82p-7,0x1.88c34e7522p-7,0x1.978b70cc62p-7,
+0x1.a647974142p-7,0x1.b4f7c224c2p-7,0x1.c39bf1cae2p-7,0x1.d234268aa2p-7,
+0x1.e0c060be02p-7,0x1.ef40a0c202p-7,0x1.fdb4e6f6a2p-7,0x1.060e99df71p-6,
+0x1.0d3cc3c061p-6,0x1.1464f152a1p-6,0x1.1b8722cc31p-6,0x1.22a3586491p-6,
+0x1.29b99254c1p-6,0x1.30c9d0d741p-6,0x1.37d4142811p-6,0x1.3ed85c84b1p-6,
+0x1.45d6aa2c21p-6,0x1.4ccefd5ee1p-6,0x1.53c1565ef1p-6,0x1.5aadb56fd1p-6,
+0x1.61941ad681p-6,0x1.687486d981p-6,0x1.6f4ef9c0d1p-6,0x1.762373d5f1p-6,
+0x1.7cf1f563e1p-6,0x1.83ba7eb721p-6,0x1.8a7d101db1p-6,0x1.9139a9e711p-6,
+0x1.97f04c6441p-6,0x1.9ea0f7e7c1p-6,0x1.a54bacc591p-6,0x1.abf06b5331p-6,
+0x1.b28f33e7a1p-6,0x1.b92806db61p-6,0x1.bfbae48871p-6,0x1.c647cd4a51p-6,
+0x1.cccec17e01p-6,0x1.d34fc18201p-6,0x1.d9cacdb651p-6,0x1.e03fe67c71p-6,
+0x1.e6af0c3761p-6,0x1.ed183f4ba1p-6,0x1.f37b801f31p-6,0x1.f9d8cf1991p-6,
+0x1.00181651e08p-5,0x1.0340cc94208p-5,0x1.06668a89888p-5,0x1.09895068d88p-5,
+0x1.0ca91e69908p-5,0x1.0fc5f4c3f08p-5,0x1.12dfd3b0f88p-5,0x1.15f6bb6a688p-5,
+0x1.190aac2ac08p-5,0x1.1c1ba62d408p-5,0x1.1f29a9ade88p-5,0x1.2234b6e9788p-5,
+0x1.253cce1d708p-5,0x1.2841ef88108p-5,0x1.2b441b68588p-5,0x1.2e4351fe088p-5,
+0x1.313f9389a08p-5,0x1.3438e04c608p-5,0x1.372f3888488p-5,0x1.3a229c80188p-5,
+0x1.3d130c77508p-5,0x1.400088b2308p-5,0x1.42eb1175b88p-5,0x1.45d2a707a88p-5,
+0x1.48b749ae808p-5,0x1.4b98f9b1808p-5,0x1.4e77b758a88p-5,0x1.515382ecb88p-5,
+0x1.542c5cb7308p-5,0x1.57024502508p-5,0x1.59d53c19188p-5,0x1.5ca54247488p-5,
+0x1.5f7257d9608p-5,0x1.623c7d1ca08p-5,0x1.6503b25f088p-5,0x1.67c7f7ef588p-5,
+0x1.6a894e1d108p-5,0x1.6d47b538708p-5,0x1.70032d92788p-5,0x1.72bbb77ce88p-5,
+0x1.7571534a408p-5,0x1.7824014dc08p-5,0x1.7ad3c1db688p-5,0x1.7d809547f88p-5,
+0x1.802a7be8f08p-5,0x1.82d17614908p-5,0x1.85758421d88p-5,0x1.8816a668888p-5,
+0x1.8ab4dd41208p-5,0x1.8d502904e08p-5,0x1.8fe88a0dc88p-5,0x1.927e00b6988p-5,
+0x1.95108d5ad08p-5,0x1.97a03056b08p-5,0x1.9a2cea07388p-5,0x1.9cb6baca288p-5,
+0x1.9f3da2fe008p-5,0x1.a1c1a302008p-5,0x1.a442bb36288p-5,0x1.a6c0ebfb388p-5,
+0x1.a93c35b2b08p-5,0x1.abb498bed08p-5,0x1.ae2a1582988p-5,0x1.b09cac61c88p-5,
+0x1.b30c5dc0e08p-5,0x1.b5792a05208p-5,0x1.b7e31194888p-5,0x1.ba4a14d5d88p-5,
+0x1.bcae3430908p-5,0x1.bf0f700cf08p-5,0x1.c16dc8d3f88p-5,0x1.c3c93eef688p-5,
+0x1.c621d2c9c08p-5,0x1.c87784ce408p-5,0x1.caca5568e88p-5,0x1.cd1a4506788p-5,
+0x1.cf675414708p-5,0x1.d1b18301108p-5,0x1.d3f8d23b588p-5,0x1.d63d4233088p-5,
+0x1.d87ed358a08p-5,0x1.dabd861d608p-5,0x1.dcf95af3488p-5,0x1.df32524d188p-5,
+0x1.e1686c9e508p-5,0x1.e39baa5b308p-5,0x1.e5cc0bf8b88p-5,0x1.e7f991eca88p-5,
+0x1.ea243cad808p-5,0x1.ec4c0cb2808p-5,0x1.ee710273a88p-5,0x1.f0931e69b88p-5,
+0x1.f2b2610e308p-5,0x1.f4cecadb508p-5,0x1.f6e85c4c188p-5,0x1.f8ff15dc488p-5,
+0x1.fb12f808608p-5,0x1.fd24034da08p-5,0x1.ff32382a088p-5,0x1.009ecb8e2c4p-4,
+0x1.01a31052084p-4,0x1.02a5eaa0b84p-4,0x1.03a75ababc4p-4,0x1.04a760e0f44p-4,
+0x1.05a5fd54a04p-4,0x1.06a33057604p-4,0x1.079efa2b344p-4,0x1.08995b127c4p-4,
+0x1.0992534ff84p-4,0x1.0a89e326c84p-4,0x1.0b800ada6c4p-4,0x1.0c74caaec44p-4,
+0x1.0d6822e8104p-4,0x1.0e5a13caf04p-4,0x1.0f4a9d9c644p-4,0x1.1039c0a1cc4p-4,
+0x1.11277d20e84p-4,0x1.1213d35fd84p-4,0x1.12fec3a51c4p-4,0x1.13e84e37944p-4,
+0x1.14d0735e804p-4,0x1.15b73361804p-4,0x1.169c8e88944p-4,0x1.1780851c1c4p-4,
+0x1.18631764d84p-4,0x1.194445abe84p-4,0x1.1a24103acc4p-4,0x1.1b02775b644p-4,
+0x1.1bdf7b57f04p-4,0x1.1cbb1c7b104p-4,0x1.1d955b0fc44p-4,0x1.1e6e37616c4p-4,
+0x1.1f45b1bbc84p-4,0x1.201bca6af84p-4,0x1.20f081bb7c4p-4,0x1.21c3d7fa344p-4,
+0x1.2295cd74604p-4,0x1.23666277a04p-4,0x1.24359751f44p-4,0x1.25036c51bc4p-4,
+0x1.25cfe1c5b84p-4,0x1.269af7fd084p-4,0x1.2764af472c4p-4,0x1.282d07f4044p-4,
+0x1.28f40253d04p-4,0x1.29b99eb7304p-4,0x1.2a7ddd6f244p-4,0x1.2b40becd0c4p-4,
+0x1.2c024322a84p-4,0x1.2cc26ac2184p-4,0x1.2d8135fddc4p-4,0x1.2e3ea528d44p-4,
+0x1.2efab896404p-4,0x1.2fb57099c04p-4,0x1.306ecd87544p-4,0x1.3126cfb35c4p-4,
+0x1.31dd7772984p-4,0x1.3292c51a284p-4,0x1.3346b8ff8c4p-4,0x1.33f95378a44p-4,
+0x1.34aa94dbb04p-4,0x1.355a7d7f504p-4,0x1.36090dba844p-4,0x1.36b645e4ac4p-4,
+0x1.37622655884p-4,0x1.380caf65384p-4,0x1.38b5e16c3c4p-4,0x1.395dbcc3744p-4,
+0x1.3a0441c4204p-4,0x1.3aa970c7e04p-4,0x1.3b4d4a28b44p-4,0x1.3befce40fc4p-4,
+0x1.3c90fd6b784p-4,0x1.3d30d803484p-4,0x1.3dcf5e63ec4p-4,0x1.3e6c90e9444p-4,
+0x1.3f086fef904p-4,0x1.3fa2fbd3704p-4,0x1.403c34f1e44p-4,0x1.40d41ba84c4p-4,
+0x1.416ab054684p-4,0x1.41fff354584p-4,0x1.4293e5069c4p-4,0x1.432685ca144p-4,
+0x1.43b7d5fe004p-4,0x1.4447d602004p-4,0x1.44d68636144p-4,0x1.4563e6fa9c4p-4,
+0x1.45eff8b0584p-4,0x1.467abbb8684p-4,0x1.470430744c4p-4,0x1.478c5745e44p-4,
+0x1.4813308f704p-4,0x1.4898bcb3904p-4,0x1.491cfc15444p-4,0x1.499fef17ec4p-4,
+0x1.4a21961f484p-4,0x1.4aa1f18f784p-4,0x1.4b2101ccfc4p-4,0x1.4b9ec73cb44p-4,
+0x1.4c1b4243e04p-4,0x1.4c967348204p-4,0x1.4d105aaf744p-4,0x1.4d88f8e03c4p-4,
+0x1.4e004e41384p-4,0x1.4e765b39884p-4,0x1.4eeb2030ac4p-4,0x1.4f5e9d8e844p-4,
+0x1.4fd0d3bb504p-4,0x1.5041c31fb04p-4,0x1.50b16c24a44p-4,0x1.511fcf338c4p-4,
+0x1.518cecb6284p-4,0x1.51f8c516984p-4,0x1.526358bf5c4p-4,0x1.52cca81b544p-4,
+0x1.5334b395c04p-4,0x1.539b7b9a404p-4,0x1.54010094d44p-4,0x1.546542f1dc4p-4,
+0x1.54c8431e184p-4,0x1.552a0186a84p-4,0x1.558a7e990c4p-4,0x1.55e9bac3244p-4,
+0x1.5647b673304p-4,0x1.56a47217d04p-4,0x1.56ffee20044p-4,0x1.575a2afb2c4p-4,
+0x1.57b32919084p-4,0x1.580ae8e9b84p-4,0x1.58616addbc4p-4,0x1.58b6af65f44p-4,
+0x1.590ab6f3a04p-4,0x1.595d81f8604p-4,0x1.59af10e6344p-4,0x1.59ff642f7c4p-4,
+0x1.5a4e7c46f84p-4,0x1.5a9c599fc84p-4,0x1.5ae8fcad6c4p-4,0x1.5b3465e3c44p-4,
+0x1.5b7e95b7104p-4,0x1.5bc78c9bf04p-4,0x1.5c0f4b07644p-4,0x1.5c55d16ecc4p-4,
+0x1.5c9b2047e84p-4,0x1.5cdf3808d84p-4,0x1.5d2219281c4p-4,0x1.5d63c41c944p-4,
+0x1.5da4395d804p-4,0x1.5de37962804p-4,0x1.5e2184a3944p-4,0x1.5e5e5b991c4p-4,
+0x1.5e99febbd84p-4,0x1.5ed46e84e84p-4,0x1.5f0dab6dcc4p-4,0x1.5f45b5f0644p-4,
+0x1.5f7c8e86f04p-4,0x1.5fb235ac104p-4,0x1.5fe6abdac44p-4,0x1.6019f18e6c4p-4,
+0x1.604c0742c84p-4,0x1.607ced73f84p-4,0x1.60aca49e7c4p-4,0x1.60db2d3f344p-4,
+0x1.610887d3604p-4,0x1.6134b4d8a04p-4,0x1.615fb4ccf44p-4,0x1.6189882ebc4p-4,
+0x1.61b22f7cb84p-4,0x1.61d9ab36084p-4,0x1.61fffbda2c4p-4,0x1.622521e9044p-4,
+0x1.62491de2d04p-4,0x1.626bf048304p-4,0x1.628d999a244p-4,0x1.62ae1a5a0c4p-4,
+0x1.62cd7309a84p-4,0x1.62eba42b184p-4,0x1.6308ae40dc4p-4,0x1.632491cdd44p-4,
+0x1.633f4f55404p-4,0x1.6358e75ac04p-4,0x1.63715a62544p-4,0x1.6388a8f05c4p-4,
+0x1.639ed389984p-4,0x1.63b3dab3284p-4,0x1.63c7bef28c4p-4,0x1.63da80cda44p-4,
+0x1.63ec20cab04p-4,0x1.63fc9f70504p-4,0x1.640bfd45844p-4,0x1.641a3ad1ac4p-4,
+0x1.6427589c884p-4,0x1.6433572e384p-4,0x1.643e370f3c4p-4,0x1.6447f8c8744p-4,
+0x1.64509ce3204p-4,0x1.645823e8e04p-4,0x1.645e8e63b44p-4,0x1.6463dcddfc4p-4,
+0x1.64680fe2784p-4,0x1.646b27fc484p-4,0x1.646d25b6ec4p-4,0x1.646e099e444p-4,
+0x1.646dd43e904p-4,0x1.646c8624704p-4,0x1.646a1fdce44p-4,0x1.6466a1f54c4p-4,
+0x1.64620cfb684p-4,0x1.645c617d584p-4,0x1.6455a0099c4p-4,0x1.644dc92f144p-4,
+0x1.6444dd7d004p-4,0x1.643add83004p-4,0x1.642fc9d1144p-4,0x1.6423a2f79c4p-4,
+0x1.64166987584p-4,0x1.64081e11684p-4,0x1.63f8c1274c4p-4,0x1.63e8535ae44p-4,
+0x1.63d6d53e704p-4,0x1.63c44764904p-4,0x1.63b0aa60444p-4,0x1.639bfec4ec4p-4,
+0x1.63864526484p-4,0x1.636f7e18784p-4,0x1.6357aa2ffc4p-4,0x1.633eca01b44p-4,
+0x1.6324de22e04p-4,0x1.6309e729204p-4,0x1.62ede5aa744p-4,0x1.62d0da3d3c4p-4,
+0x1.62b2c578384p-4,0x1.6293a7f2884p-4,0x1.62738243ac4p-4,0x1.62525503844p-4,
+0x1.623020ca504p-4,0x1.620ce630b04p-4,0x1.61e8a5cfa44p-4,0x1.61c360408c4p-4,
+0x1.619d161d284p-4,0x1.6175c7ff984p-4,0x1.614d76825c4p-4,0x1.61242240544p-4,
+0x1.60f9cbd4c04p-4,0x1.60ce73db404p-4,0x1.60a21aefd44p-4,0x1.6074c1aedc4p-4,
+0x1.604668b5184p-4,0x1.6017109fa84p-4,0x1.5fe6ba0c0c4p-4,0x1.5fb56598244p-4,
+0x1.5f8313e2304p-4,0x1.5f4fc588d04p-4,0x1.5f1b7b2b044p-4,0x1.5ee635682c4p-4,
+0x1.5eaff4e0084p-4,0x1.5e78ba32b84p-4,0x1.5e408600bc4p-4,0x1.5e0758eaf44p-4,
+0x1.5dcd3392a04p-4,0x1.5d921699604p-4,0x1.5d5602a1344p-4,0x1.5d18f84c7c4p-4,
+0x1.5cdaf83df84p-4,0x1.5c9c0318c84p-4,0x1.5c5c19806c4p-4,0x1.5c1b3c18c44p-4,
+0x1.5bd96b86104p-4,0x1.5b96a86cf04p-4,0x1.5b52f372644p-4,0x1.5b0e4d3bcc4p-4,
+0x1.5ac8b66ee84p-4,0x1.5a822fb1d84p-4,0x1.5a3ab9ab1c4p-4,0x1.59f25501944p-4,
+0x1.59a9025c804p-4,0x1.595ec263804p-4,0x1.591395be944p-4,0x1.58c77d161c4p-4,
+0x1.587a7912d84p-4,0x1.582c8a5de84p-4,0x1.57ddb1a0cc4p-4,0x1.578def85644p-4,
+0x1.573d44b5f04p-4,0x1.56ebb1dd104p-4,0x1.569937a5c44p-4,0x1.5645d6bb6c4p-4,
+0x1.55f18fc9c84p-4,0x1.559c637cf84p-4,0x1.554652817c4p-4,0x1.54ef5d84344p-4,
+0x1.54978532604p-4,0x1.543eca39a04p-4,0x1.53e52d47f44p-4,0x1.538aaf0bbc4p-4,
+0x1.532f5033b84p-4,0x1.52d3116f084p-4,0x1.5275f36d2c4p-4,0x1.5217f6de044p-4,
+0x1.51b91c71d04p-4,0x1.515964d9304p-4,0x1.50f8d0c5244p-4,0x1.509760e70c4p-4,
+0x1.503515f0a84p-4,0x1.4fd1f094184p-4,0x1.4f6df183dc4p-4,0x1.4f091972d44p-4,
+0x1.4ea36914404p-4,0x1.4e3ce11bc04p-4,0x1.4dd5823d544p-4,0x1.4d6d4d2d5c4p-4,
+0x1.4d0442a0984p-4,0x1.4c9a634c284p-4,0x1.4c2fafe58c4p-4,0x1.4bc42922a44p-4,
+0x1.4b57cfb9b04p-4,0x1.4aeaa461504p-4,0x1.4a7ca7d0844p-4,0x1.4a0ddabeac4p-4,
+0x1.499e3de3884p-4,0x1.492dd1f7384p-4,0x1.48bc97b23c4p-4,0x1.484a8fcd744p-4,
+0x1.47d7bb02204p-4,0x1.47641a09e04p-4,0x1.46efad9eb44p-4,0x1.467a767afc4p-4,
+0x1.46047559784p-4,0x1.458daaf5484p-4,0x1.45161809ec4p-4,0x1.449dbd53444p-4,
+0x1.44249b8d904p-4,0x1.43aab375704p-4,0x1.433005c7e44p-4,0x1.42b493424c4p-4,
+0x1.42385ca2684p-4,0x1.41bb62a6584p-4,0x1.413da60c9c4p-4,0x1.40bf2794144p-4,
+0x1.403fe7fc004p-4,0x1.3fbfe804004p-4,0x1.3f3f286c144p-4,0x1.3ebda9f49c4p-4,
+0x1.3e3b6d5e584p-4,0x1.3db8736a684p-4,0x1.3d34bcda4c4p-4,0x1.3cb04a6fe44p-4,
+0x1.3c2b1ced704p-4,0x1.3ba53515904p-4,0x1.3b1e93ab444p-4,0x1.3a973971ec4p-4,
+0x1.3a0f272d484p-4,0x1.39865da1784p-4,0x1.38fcdd92fc4p-4,0x1.3872a7c6b44p-4,
+0x1.37e7bd01e04p-4,0x1.375c1e0a204p-4,0x1.36cfcba5744p-4,0x1.3642c69a3c4p-4,
+0x1.35b50faf384p-4,0x1.3526a7ab884p-4,0x1.34978f56ac4p-4,0x1.3407c778844p-4,
+0x1.337750d9504p-4,0x1.32e62c41b04p-4,0x1.32545a7aa44p-4,0x1.31c1dc4d8c4p-4,
+0x1.312eb284284p-4,0x1.309adde8984p-4,0x1.30065f455c4p-4,0x1.2f713765544p-4,
+0x1.2edb6713c04p-4,0x1.2e44ef1c404p-4,0x1.2dadd04ad44p-4,0x1.2d160b6bdc4p-4,
+0x1.2c7da14c184p-4,0x1.2be492b8a84p-4,0x1.2b4ae07f0c4p-4,0x1.2ab08b6d244p-4,
+0x1.2a159451304p-4,0x1.2979fbf9d04p-4,0x1.28ddc336044p-4,0x1.2840ead52c4p-4,
+0x1.27a373a7084p-4,0x1.27055e7bb84p-4,0x1.2666ac23bc4p-4,0x1.25c75d6ff44p-4,
+0x1.25277331a04p-4,0x1.2486ee3a604p-4,0x1.23e5cf5c344p-4,0x1.234417697c4p-4,
+0x1.22a1c734f84p-4,0x1.21fedf91c84p-4,0x1.215b61536c4p-4,0x1.20b74d4dc44p-4,
+0x1.2012a455104p-4,0x1.1f6d673df04p-4,0x1.1ec796dd644p-4,0x1.1e213408cc4p-4,
+0x1.1d7a3f95e84p-4,0x1.1cd2ba5ad84p-4,0x1.1c2aa52e1c4p-4,0x1.1b8200e6944p-4,
+0x1.1ad8ce5b804p-4,0x1.1a2f0e64804p-4,0x1.1984c1d9944p-4,0x1.18d9e9931c4p-4,
+0x1.182e8669d84p-4,0x1.17829936e84p-4,0x1.16d622d3cc4p-4,0x1.1629241a644p-4,
+0x1.157b9de4f04p-4,0x1.14cd910e104p-4,0x1.141efe70c44p-4,0x1.136fe6e86c4p-4,
+0x1.12c04b50c84p-4,0x1.12102c85f84p-4,0x1.115f8b647c4p-4,0x1.10ae68c9344p-4,
+0x1.0ffcc591604p-4,0x1.0f4aa29aa04p-4,0x1.0e9800c2f44p-4,0x1.0de4e0e8bc4p-4,
+0x1.0d3143eab84p-4,0x1.0c7d2aa8084p-4,0x1.0bc896002c4p-4,0x1.0b1386d3044p-4,
+0x1.0a5dfe00d04p-4,0x1.09a7fc6a304p-4,0x1.08f182f0244p-4,0x1.083a92740c4p-4,
+0x1.07832bd7a84p-4,0x1.06cb4ffd184p-4,0x1.0612ffc6dc4p-4,0x1.055a3c17d44p-4,
+0x1.04a105d3404p-4,0x1.03e75ddcc04p-4,0x1.032d4518544p-4,0x1.0272bc6a5c4p-4,
+0x1.01b7c4b7984p-4,0x1.00fc5ee5284p-4,0x1.00408bd88c4p-4,0x1.ff0898ef488p-5,
+0x1.fd8f4351608p-5,0x1.fc1518a4a08p-5,0x1.fa9a1ab7088p-5,0x1.f91e4b57588p-5,
+0x1.f7a1ac55108p-5,0x1.f6243f80708p-5,0x1.f4a606aa788p-5,0x1.f32703a4e88p-5,
+0x1.f1a73842408p-5,0x1.f026a655c08p-5,0x1.eea54fb3688p-5,0x1.ed23362ff88p-5,
+0x1.eba05ba0f08p-5,0x1.ea1cc1dc908p-5,0x1.e8986ab9d88p-5,0x1.e7135810888p-5,
+0x1.e58d8bb9208p-5,0x1.e407078ce08p-5,0x1.e27fcd65c88p-5,0x1.e0f7df1e988p-5,
+0x1.df6f3e92d08p-5,0x1.dde5ed9eb08p-5,0x1.dc5bee1f388p-5,0x1.dad141f2288p-5,
+0x1.d945eaf6008p-5,0x1.d7b9eb0a008p-5,0x1.d62d440e288p-5,0x1.d49ff7e3388p-5,
+0x1.d312086ab08p-5,0x1.d1837786d08p-5,0x1.cff4471a988p-5,0x1.ce647909c88p-5,
+0x1.ccd40f38e08p-5,0x1.cb430b8d208p-5,0x1.c9b16fec888p-5,0x1.c81f3e3dd88p-5,
+0x1.c68c7868908p-5,0x1.c4f92054f08p-5,0x1.c36537ebf88p-5,0x1.c1d0c117688p-5,
+0x1.c03bbdc1c08p-5,0x1.bea62fd6408p-5,0x1.bd101940e88p-5,0x1.bb797bee788p-5,
+0x1.b9e259cc708p-5,0x1.b84ab4c9108p-5,0x1.b6b28ed3588p-5,0x1.b519e9db088p-5,
+0x1.b380c7d0a08p-5,0x1.b1e72aa5608p-5,0x1.b04d144b488p-5,0x1.aeb286b5188p-5,
+0x1.ad1783d6508p-5,0x1.ab7c0da3308p-5,0x1.a9e02610b88p-5,0x1.a843cf14a88p-5,
+0x1.a6a70aa5808p-5,0x1.a509daba808p-5,0x1.a36c414ba88p-5,0x1.a1ce4051b88p-5,
+0x1.a02fd9c6308p-5,0x1.9e910fa3508p-5,0x1.9cf1e3e4188p-5,0x1.9b525884488p-5,
+0x1.99b26f80608p-5,0x1.98122ad5a08p-5,0x1.96718c82088p-5,0x1.94d09684588p-5,
+0x1.932f4adc108p-5,0x1.918dab89708p-5,0x1.8febba8d788p-5,0x1.8e4979e9e88p-5,
+0x1.8ca6eba1408p-5,0x1.8b0411b6c08p-5,0x1.8960ee2e688p-5,0x1.87bd830cf88p-5,
+0x1.8619d257f08p-5,0x1.8475de15908p-5,0x1.82d1a84cd88p-5,0x1.812d3305888p-5,
+0x1.7f888048208p-5,0x1.7de3921de08p-5,0x1.7c3e6a90c88p-5,0x1.7a990bab988p-5,
+0x1.78f37779d08p-5,0x1.774db007b08p-5,0x1.75a7b762388p-5,0x1.74018f97288p-5,
+0x1.725b3ab5008p-5,0x1.70b4bacb008p-5,0x1.6f0e11e9288p-5,0x1.6d674220388p-5,
+0x1.6bc04d81b08p-5,0x1.6a19361fd08p-5,0x1.6871fe0d988p-5,0x1.66caa75ec88p-5,
+0x1.65233427e08p-5,0x1.637ba67e208p-5,0x1.61d40077888p-5,0x1.602c442ad88p-5,
+0x1.5e8473af908p-5,0x1.5cdc911df08p-5,0x1.5b349e8ef88p-5,0x1.598c9e1c688p-5,
+0x1.57e491e0c08p-5,0x1.563c7bf7408p-5,0x1.54945e7be88p-5,0x1.52ec3b8b788p-5,
+0x1.51441543708p-5,0x1.4f9bedc2108p-5,0x1.4df3c726588p-5,0x1.4c4ba390088p-5,
+0x1.4aa3851fa08p-5,0x1.48fb6df6608p-5,0x1.47536036488p-5,0x1.45ab5e02188p-5,
+0x1.4403697d508p-5,0x1.425b84cc308p-5,0x1.40b3b213b88p-5,0x1.3f0bf379a88p-5,
+0x1.3d644b24808p-5,0x1.3bbcbb3b808p-5,0x1.3a1545e6a88p-5,0x1.386ded4eb88p-5,
+0x1.36c6b39d308p-5,0x1.351f9afc508p-5,0x1.3378a597188p-5,0x1.31d1d599488p-5,
+0x1.302b2d2f608p-5,0x1.2e84ae86a08p-5,0x1.2cde5bcd088p-5,0x1.2b383731588p-5,
+0x1.299242e3108p-5,0x1.27ec8112708p-5,0x1.2646f3f0788p-5,0x1.24a19daee88p-5,
+0x1.22fc8080408p-5,0x1.21579e97c08p-5,0x1.1fb2fa29688p-5,0x1.1e0e9569f88p-5,
+0x1.1c6a728ef08p-5,0x1.1ac693ce908p-5,0x1.1922fb5fd88p-5,0x1.177fab7a888p-5,
+0x1.15dca657208p-5,0x1.1439ee2ee08p-5,0x1.1297853bc88p-5,0x1.10f56db8988p-5,
+0x1.0f53a9e0d08p-5,0x1.0db23bf0b08p-5,0x1.0c112625388p-5,0x1.0a706abc288p-5,
+0x1.08d00bf4008p-5,0x1.07300c0c008p-5,0x1.05906d44288p-5,0x1.03f131dd388p-5,
+0x1.02525c18b08p-5,0x1.00b3ee38d08p-5,0x1.fe2bd50131p-6,0x1.faf0a66791p-6,
+0x1.f7b6552dc1p-6,0x1.f47ce5de41p-6,0x1.f1445d0511p-6,0x1.ee0cbf2fb1p-6,
+0x1.ead610ed21p-6,0x1.e7a056cde1p-6,0x1.e46b9563f1p-6,0x1.e137d142d1p-6,
+0x1.de050eff81p-6,0x1.dad3533081p-6,0x1.d7a2a26dd1p-6,0x1.d4730150f1p-6,
+0x1.d1447474e1p-6,0x1.ce17007621p-6,0x1.caeaa9f2b1p-6,0x1.c7bf758a11p-6,
+0x1.c49567dd41p-6,0x1.c16c858ec1p-6,0x1.be44d34291p-6,0x1.bb1e559e31p-6,
+0x1.b7f91148a1p-6,0x1.b4d50aea61p-6,0x1.b1b2472d71p-6,0x1.ae90cabd51p-6,
+0x1.ab709a4701p-6,0x1.a851ba7901p-6,0x1.a534300351p-6,0x1.a217ff9771p-6,
+0x1.9efd2de861p-6,0x1.9be3bfaaa1p-6,0x1.98cbb99431p-6,0x1.95b5205c91p-6,
+0x1.929ff8bcc1p-6,0x1.8f8c476f41p-6,0x1.8c7a113011p-6,0x1.89695abcb1p-6,
+0x1.865a28d421p-6,0x1.834c8036e1p-6,0x1.804065a6f1p-6,0x1.7d35dde7d1p-6,
+0x1.7a2cedbe81p-6,0x1.772599f181p-6,0x1.741fe748d1p-6,0x1.711bda8df1p-6,
+0x1.6e19788be1p-6,0x1.6b18c60f21p-6,0x1.6819c7e5b1p-6,0x1.651c82df11p-6,
+0x1.6220fbcc41p-6,0x1.5f27377fc1p-6,0x1.5c2f3acd91p-6,0x1.59390a8b31p-6,
+0x1.5644ab8fa1p-6,0x1.535222b361p-6,0x1.506174d071p-6,0x1.4d72a6c251p-6,
+0x1.4a85bd6601p-6,0x1.479abd9a01p-6,0x1.44b1ac3e51p-6,0x1.41ca8e3471p-6,
+0x1.3ee5685f61p-6,0x1.3c023fa3a1p-6,0x1.392118e731p-6,0x1.3641f91191p-6,
+0x1.3364e50bc1p-6,0x1.3089e1c041p-6,0x1.2db0f41b11p-6,0x1.2ada2109b1p-6,
+0x1.28056d7b21p-6,0x1.2532de5fe1p-6,0x1.226278a9f1p-6,0x1.1f94414cd1p-6,
+0x1.1cc83d3d81p-6,0x1.19fe717281p-6,0x1.1736e2e3d1p-6,0x1.1471968af1p-6,
+0x1.11ae9162e1p-6,0x1.0eedd86821p-6,0x1.0c2f7098b1p-6,0x1.09735ef411p-6,
+0x1.06b9a87b41p-6,0x1.04025230c1p-6,0x1.014d611891p-6,0x1.fd35b47062p-7,
+0x1.f7d5852d42p-7,0x1.f27a3e78c2p-7,0x1.ed23ea66e2p-7,0x1.e7d2930ea2p-7,
+0x1.e286428a02p-7,0x1.dd3f02f602p-7,0x1.d7fcde72a2p-7,0x1.d2bfdf22e2p-7,
+0x1.cd880f2cc2p-7,0x1.c85578b942p-7,0x1.c32825f462p-7,0x1.be00210d22p-7,
+0x1.b8dd743582p-7,0x1.b3c029a282p-7,0x1.aea84b8c22p-7,0x1.a995e42d62p-7,
+0x1.a488fdc442p-7,0x1.9f81a291c2p-7,0x1.9a7fdcd9e2p-7,0x1.9583b6e3a2p-7,
+0x1.908d3af902p-7,0x1.8b9c736702p-7,0x1.86b16a7da2p-7,0x1.81cc2a8fe2p-7,
+0x1.7cecbdf3c2p-7,0x1.78132f0242p-7,0x1.733f881762p-7,0x1.6e71d39222p-7,
+0x1.69aa1bd482p-7,0x1.64e86b4382p-7,0x1.602ccc4722p-7,0x1.5b77494a62p-7,
+0x1.56c7ecbb42p-7,0x1.521ec10ac2p-7,0x1.4d7bd0ace2p-7,0x1.48df2618a2p-7,
+0x1.4448cbc802p-7,0x1.3fb8cc3802p-7,0x1.3b2f31e8a2p-7,0x1.36ac075ce2p-7,
+0x1.322f571ac2p-7,0x1.2db92bab42p-7,0x1.29498f9a62p-7,0x1.24e08d7722p-7,
+0x1.207e2fd382p-7,0x1.1c22814482p-7,0x1.17cd8c6222p-7,0x1.137f5bc762p-7,
+0x1.0f37fa1242p-7,0x1.0af771e3c2p-7,0x1.06bdcddfe2p-7,0x1.028b18ada2p-7,
+0x1.fcbeb9ee04p-8,0x1.f4754ad204p-8,0x1.ec39f96744p-8,0x1.e40cdb13c4p-8,
+0x1.dbee054384p-8,0x1.d3dd8d6884p-8,0x1.cbdb88fac4p-8,0x1.c3e80d7844p-8,
+0x1.bc03306504p-8,0x1.b42d074b04p-8,0x1.ac65a7ba44p-8,0x1.a4ad2748c4p-8,
+0x1.9d039b9284p-8,0x1.95691a3984p-8,0x1.8dddb8e5c4p-8,0x1.86618d4544p-8,
+0x1.7ef4ad0c04p-8,0x1.77972df404p-8,0x1.704925bd44p-8,0x1.690aaa2dc4p-8,
+0x1.61dbd11184p-8,0x1.5abcb03a84p-8,0x1.53ad5d80c4p-8,0x1.4cadeec244p-8,
+0x1.45be79e304p-8,0x1.3edf14cd04p-8,0x1.380fd57044p-8,0x1.3150d1c2c4p-8,
+0x1.2aa21fc084p-8,0x1.2403d56b84p-8,0x1.1d7608cbc4p-8,0x1.16f8cfef44p-8,
+0x1.108c40ea04p-8,0x1.0a3071d604p-8,0x1.03e578d344p-8,0x1.fb56d80f88p-9,
+0x1.ef04c33f08p-9,0x1.e2d4df9908p-9,0x1.d6c7598d88p-9,0x1.cadc5d9888p-9,
+0x1.bf14184208p-9,0x1.b36eb61e08p-9,0x1.a7ec63cc88p-9,0x1.9c8d4df988p-9,
+0x1.9151a15d08p-9,0x1.86398abb08p-9,0x1.7b4536e388p-9,0x1.7074d2b288p-9,
+0x1.65c88b1008p-9,0x1.5b408cf008p-9,0x1.50dd055288p-9,0x1.469e214388p-9,
+0x1.3c840ddb08p-9,0x1.328ef83d08p-9,0x1.28bf0d9988p-9,0x1.1f147b2c88p-9,
+0x1.158f6e3e08p-9,0x1.0c30142208p-9,0x1.02f69a3888p-9,0x1.f3c65bdb1p-10,
+0x1.e1ebf9721p-10,0x1.d05e683e1p-10,0x1.bf1e035f1p-10,0x1.ae2b260d1p-10,
+0x1.9d862b981p-10,0x1.8d2f6f681p-10,0x1.7d274cfd1p-10,0x1.6d6e1fef1p-10,
+0x1.5e0443ee1p-10,0x1.4eea14c21p-10,0x1.401fee4b1p-10,0x1.31a62c811p-10,
+0x1.237d2b741p-10,0x1.15a5474c1p-10,0x1.081edc491p-10,0x1.f5d48d862p-11,
+0x1.dc0fc6542p-11,0x1.c2f01c0c2p-11,0x1.aa7647ee2p-11,0x1.92a3036a2p-11,
+0x1.7b7708202p-11,0x1.64f30fe02p-11,0x1.4f17d4aa2p-11,0x1.39e610ae2p-11,
+0x1.255e7e4c2p-11,0x1.1181d8142p-11,0x1.fca1b18c4p-12,0x1.d79876a44p-12,
+0x1.b3e975b04p-12,0x1.919625504p-12,0x1.709ffc844p-12,0x1.510872ac4p-12,
+0x1.32d0ff884p-12,0x1.15fb1b384p-12,0x1.f5107c788p-13,0x1.c0f3c2e88p-13,
+0x1.8fa2fc408p-13,0x1.61211bc08p-13,0x1.357115688p-13,0x1.0c95ddf88p-13,
+0x1.cd24d5e1p-14,0x1.86d36521p-14,0x1.463d57b1p-14,0x1.0b689d11p-14,
+0x1.acb64c82p-15,0x1.4e35cb82p-15,0x1.f6b73e44p-16,0x1.686764c4p-16,
+0x1.e327cd08p-17,0x1.24a94b08p-17,0x1.2b06271p-18,0x1.af28144p-20,
+0x1.7fc002p-23,0x1.804002p-23,0x1.b0d8144p-20,0x1.2cfa271p-18,0x1.27574b08p-17,
+0x1.e8d9cd08p-17,0x1.6d9a64c4p-16,0x1.ff4c3e44p-16,0x1.54cd4b82p-15,
+0x1.b64ecc82p-15,0x1.121b5d11p-14,0x1.4f4897b1p-14,0x1.92b52521p-14,
+0x1.dc6715e1p-14,0x1.16323df88p-13,0x1.4159b5688p-13,0x1.6facfbc08p-13,
+0x1.a12f1c408p-13,0x1.d5e322e88p-13,0x1.06e60e3c4p-12,0x1.24768b384p-12,
+0x1.43a48f884p-12,0x1.6471a2ac4p-12,0x1.86df4c844p-12,0x1.aaef15504p-12,
+0x1.d0a285b04p-12,0x1.f7fb26a44p-12,0x1.107d40c62p-11,0x1.25d110142p-11,
+0x1.3bf9c64c2p-11,0x1.52f828ae2p-11,0x1.6accfcaa2p-11,0x1.837907e02p-11,
+0x1.9cfd10202p-11,0x1.b759db6a2p-11,0x1.d2902fee2p-11,0x1.eea0d40c2p-11,
+0x1.05c6472a1p-10,0x1.14aa12c31p-10,0x1.23fc30491p-10,0x1.33bd034c1p-10,
+0x1.43ecef741p-10,0x1.548c58811p-10,0x1.659ba24b1p-10,0x1.771b30c21p-10,
+0x1.890b67ee1p-10,0x1.9b6cabef1p-10,0x1.ae3f60fd1p-10,0x1.c183eb681p-10,
+0x1.d53aaf981p-10,0x1.e964120d1p-10,0x1.fe00775f1p-10,0x1.0988221f08p-9,
+0x1.1449eeb908p-9,0x1.1f45d3ed88p-9,0x1.2a7c043888p-9,0x1.35ecb22208p-9,
+0x1.4198103e08p-9,0x1.4d7e512c88p-9,0x1.599fa79988p-9,0x1.65fc463d08p-9,
+0x1.72945fdb08p-9,0x1.7f68274388p-9,0x1.8c77cf5288p-9,0x1.99c38af008p-9,
+0x1.a74b8d1008p-9,0x1.b51008b288p-9,0x1.c31130e388p-9,0x1.d14f38bb08p-9,
+0x1.dfca535d08p-9,0x1.ee82b3f988p-9,0x1.fd788dcc88p-9,0x1.06560a0f04p-8,
+0x1.0e0ebd2104p-8,0x1.15e679cc44p-8,0x1.1ddd59c6c4p-8,0x1.25f376cc84p-8,
+0x1.2e28ea9f84p-8,0x1.367dcf07c4p-8,0x1.3ef23dd344p-8,0x1.478650d604p-8,
+0x1.503a21ea04p-8,0x1.590dcaef44p-8,0x1.620165cbc4p-8,0x1.6b150c6b84p-8,
+0x1.7448d8c084p-8,0x1.7d9ce4c2c4p-8,0x1.87114a7044p-8,0x1.90a623cd04p-8,
+0x1.9a5b8ae304p-8,0x1.a43199c244p-8,0x1.ae286a80c4p-8,0x1.b840173a84p-8,
+0x1.c278ba1184p-8,0x1.ccd26d2dc4p-8,0x1.d74d4abd44p-8,0x1.e1e96cf404p-8,
+0x1.eca6ee0c04p-8,0x1.f785e84544p-8,0x1.01433af2e2p-7,0x1.06d4589cc2p-7,
+0x1.0c765a4942p-7,0x1.12294d2462p-7,0x1.17ed3e5d22p-7,0x1.1dc23b2582p-7,
+0x1.23a850b282p-7,0x1.299f8c3c22p-7,0x1.2fa7fafd62p-7,0x1.35c1aa3442p-7,
+0x1.3beca721c2p-7,0x1.4228ff09e2p-7,0x1.4876bf33a2p-7,0x1.4ed5f4e902p-7,
+0x1.5546ad7702p-7,0x1.5bc8f62da2p-7,0x1.625cdc5fe2p-7,0x1.69026d63c2p-7,
+0x1.6fb9b69242p-7,0x1.7682c54762p-7,0x1.7d5da6e222p-7,0x1.844a68c482p-7,
+0x1.8b49185382p-7,0x1.9259c2f722p-7,0x1.997c761a62p-7,0x1.a0b13f2b42p-7,
+0x1.a7f82b9ac2p-7,0x1.af5148dce2p-7,0x1.b6bca468a2p-7,0x1.be3a4bb802p-7,
+0x1.c5ca4c4802p-7,0x1.cd6cb398a2p-7,0x1.d5218f2ce2p-7,0x1.dce8ec8ac2p-7,
+0x1.e4c2d93b42p-7,0x1.ecaf62ca62p-7,0x1.f4ae96c722p-7,0x1.fcc082c382p-7,
+0x1.02729a2a41p-6,0x1.068e5c8911p-6,0x1.0ab38f4bb1p-6,0x1.0ee2394121p-6,
+0x1.131a6139e1p-6,0x1.175c0e07f1p-6,0x1.1ba7467ed1p-6,0x1.1ffc117381p-6,
+0x1.245a75bc81p-6,0x1.28c27a31d1p-6,0x1.2d3425acf1p-6,0x1.31af7f08e1p-6,
+0x1.36348d2221p-6,0x1.3ac356d6b1p-6,0x1.3f5be30611p-6,0x1.43fe389141p-6,
+0x1.48aa5e5ac1p-6,0x1.4d605b4691p-6,0x1.5220363a31p-6,0x1.56e9f61ca1p-6,
+0x1.5bbda1d661p-6,0x1.609b405171p-6,0x1.6582d87951p-6,0x1.6a74713b01p-6,
+0x1.6f70118501p-6,0x1.7475c04751p-6,0x1.7985847371p-6,0x1.7e9f64fc61p-6,
+0x1.83c368d6a1p-6,0x1.88f196f831p-6,0x1.8e29f65891p-6,0x1.936c8df0c1p-6,
+0x1.98b964bb41p-6,0x1.9e1081b411p-6,0x1.a371ebd8b1p-6,0x1.a8ddaa2821p-6,
+0x1.ae53c3a2e1p-6,0x1.b3d43f4af1p-6,0x1.b95f2423d1p-6,0x1.bef4793281p-6,
+0x1.c494457d81p-6,0x1.ca3e900cd1p-6,0x1.cff35fe9f1p-6,0x1.d5b2bc1fe1p-6,
+0x1.db7cabbb21p-6,0x1.e15135c9b1p-6,0x1.e730615b11p-6,0x1.ed1a358041p-6,
+0x1.f30eb94bc1p-6,0x1.f90df3d191p-6,0x1.ff17ec2731p-6,0x1.029654b1d08p-5,
+0x1.05a6194fb08p-5,0x1.08bb477a388p-5,0x1.0bd5e2bf288p-5,0x1.0ef5eead008p-5,
+0x1.121b6ed3008p-5,0x1.154666c1288p-5,0x1.1876da08388p-5,0x1.1baccc39b08p-5,
+0x1.1ee840e7d08p-5,0x1.22293ba5988p-5,0x1.256fc006c88p-5,0x1.28bbd19fe08p-5,
+0x1.2c0d7406208p-5,0x1.2f64aacf888p-5,0x1.32c17992d88p-5,0x1.3623e3e7908p-5,
+0x1.398bed65f08p-5,0x1.3cf999a6f88p-5,0x1.406cec44688p-5,0x1.43e5e8d8c08p-5,
+0x1.476492ff408p-5,0x1.4ae8ee53e88p-5,0x1.4e72fe73788p-5,0x1.5202c6fb708p-5,
+0x1.55984b8a108p-5,0x1.59338fbe588p-5,0x1.5cd49738088p-5,0x1.607b6597a08p-5,
+0x1.6427fe7e608p-5,0x1.67da658e488p-5,0x1.6b929e6a188p-5,0x1.6f50acb5508p-5,
+0x1.73149414308p-5,0x1.76de582bb88p-5,0x1.7aadfca1a88p-5,0x1.7e83851c808p-5,
+0x1.825ef543808p-5,0x1.864050bea88p-5,0x1.8a279b36b88p-5,0x1.8e14d855308p-5,
+0x1.92080bc4508p-5,0x1.9601392f188p-5,0x1.9a006441488p-5,0x1.9e0590a7608p-5,
+0x1.a210c20ea08p-5,0x1.a621fc25088p-5,0x1.aa394299588p-5,0x1.ae56991b108p-5,
+0x1.b27a035a708p-5,0x1.b6a38508788p-5,0x1.bad321d6e88p-5,0x1.bf08dd78408p-5,
+0x1.c344bb9fc08p-5,0x1.c786c001688p-5,0x1.cbceee51f88p-5,0x1.d01d4a46f08p-5,
+0x1.d471d796908p-5,0x1.d8cc99f7d88p-5,0x1.dd2d9522888p-5,0x1.e194cccf208p-5,
+0x1.e60244b6e08p-5,0x1.ea760093c88p-5,0x1.eef00420988p-5,0x1.f3705318d08p-5,
+0x1.f7f6f138b08p-5,0x1.fc83e23d388p-5,0x1.008b94f2144p-4,0x1.02d865f6004p-4,
+0x1.0528660a004p-4,0x1.077b970e144p-4,0x1.09d1fae29c4p-4,0x1.0c2b9368584p-4,
+0x1.0e886280684p-4,0x1.10e86a0c4c4p-4,0x1.134babede44p-4,0x1.15b22a07704p-4,
+0x1.181be63b904p-4,0x1.1a88e26d444p-4,0x1.1cf9207fec4p-4,0x1.1f6ca257484p-4,
+0x1.21e369d7784p-4,0x1.245d78e4fc4p-4,0x1.26dad164b44p-4,0x1.295b753be04p-4,
+0x1.2bdf6650204p-4,0x1.2e66a687744p-4,0x1.30f137c83c4p-4,0x1.337f1bf9384p-4,
+0x1.36105501884p-4,0x1.38a4e4c8ac4p-4,0x1.3b3ccd36844p-4,0x1.3dd81033504p-4,
+0x1.4076afa7b04p-4,0x1.4318ad7ca44p-4,0x1.45be0b9b8c4p-4,0x1.4866cbee284p-4,
+0x1.4b12f05e984p-4,0x1.4dc27ad75c4p-4,0x1.50756d43544p-4,0x1.532bc98dc04p-4,
+0x1.55e591a2404p-4,0x1.58a2c76cd44p-4,0x1.5b636cd9dc4p-4,0x1.5e2783d6184p-4,
+0x1.60ef0e4ea84p-4,0x1.63ba0e310c4p-4,0x1.6688856b244p-4,0x1.695a75eb304p-4,
+0x1.6c2fe19fd04p-4,0x1.6f08ca78044p-4,0x1.71e532632c4p-4,0x1.74c51b51084p-4,
+0x1.77a88731b84p-4,0x1.7a8f77f5bc4p-4,0x1.7d79ef8df44p-4,0x1.8067efeba04p-4,
+0x1.83597b00604p-4,0x1.864e92be344p-4,0x1.894739177c4p-4,0x1.8c436ffef84p-4,
+0x1.8f433967c84p-4,0x1.924697456c4p-4,0x1.954d8b8bc44p-4,0x1.9858182f104p-4,
+0x1.9b663f23f04p-4,0x1.9e78025f644p-4,0x1.a18d63d6cc4p-4,0x1.a4a6657fe84p-4,
+0x1.a7c30950d84p-4,0x1.aae351401c4p-4,0x1.ae073f44944p-4,0x1.b12ed555804p-4,
+0x1.b45a156a804p-4,0x1.b789017b944p-4,0x1.babb9b811c4p-4,0x1.bdf1e573d84p-4,
+0x1.c12be14ce84p-4,0x1.c4699105cc4p-4,0x1.c7aaf698644p-4,0x1.caf013fef04p-4,
+0x1.ce38eb34104p-4,0x1.d1857e32c44p-4,0x1.d4d5cef66c4p-4,0x1.d829df7ac84p-4,
+0x1.db81b1bbf84p-4,0x1.dedd47b67c4p-4,0x1.e23ca367344p-4,0x1.e59fc6cb604p-4,
+0x1.e906b3e0a04p-4,0x1.ec716ca4f44p-4,0x1.efdff316bc4p-4,0x1.f3524934b84p-4,
+0x1.f6c870fe084p-4,0x1.fa426c722c4p-4,0x1.fdc03d91044p-4,0x1.00a0f32d682p-3,
+0x1.0263b468182p-3,0x1.04286379122p-3,0x1.05ef0161062p-3,0x1.07b78f20d42p-3,
+0x1.09820db98c2p-3,0x1.0b4e7e2c6e2p-3,0x1.0d1ce17aea2p-3,0x1.0eed38a6a02p-3,
+0x1.10bf84b1602p-3,0x1.1293c69d2a2p-3,0x1.1469ff6c2e2p-3,0x1.16423020cc2p-3,
+0x1.181c59bd942p-3,0x1.19f87d45462p-3,0x1.1bd69bbad22p-3,0x1.1db6b621582p-3,
+0x1.1f98cd7c282p-3,0x1.217ce2cec22p-3,0x1.2362f71cd62p-3,0x1.254b0b6a442p-3,
+0x1.273520bb1c2p-3,0x1.292138139e2p-3,0x1.2b0f52783a2p-3,0x1.2cff70ed902p-3,
+0x1.2ef19478702p-3,0x1.30e5be1dda2p-3,0x1.32dbeee2fe2p-3,0x1.34d427cd3c2p-3,
+0x1.36ce69e2242p-3,0x1.38cab627762p-3,0x1.3ac90da3222p-3,0x1.3cc9715b482p-3,
+0x1.3ecbe256382p-3,0x1.40d0619a722p-3,0x1.42d6f02ea62p-3,0x1.44df8f19b42p-3,
+0x1.46ea3f62ac2p-3,0x1.48f70210ce2p-3,0x1.4b05d82b8a2p-3,0x1.4d16c2ba802p-3,
+0x1.4f29c2c5802p-3,0x1.513ed9548a2p-3,0x1.5356076fce2p-3,0x1.556f4e1fac2p-3,
+0x1.578aae6cb42p-3,0x1.59a8295fa62p-3,0x1.5bc7c001722p-3,0x1.5de9735b382p-3,
+0x1.600d4476482p-3,0x1.6233345c222p-3,0x1.645b4416762p-3,0x1.668574af242p-3,
+0x1.68b1c7303c2p-3,0x1.6ae03ca3fe2p-3,0x1.6d10d614da2p-3,0x1.6f43948d702p-3,
+0x1.71787918902p-3,0x1.73af84c13a2p-3,0x1.75e8b8929e2p-3,0x1.782415981c2p-3,
+0x1.7a619cdd442p-3,0x1.7ca14f6dd62p-3,0x1.7ee32e55c22p-3,0x1.81273aa1282p-3,
+0x1.836d755c582p-3,0x1.85b5df93d22p-3,0x1.88007a54462p-3,0x1.8a4d46aa942p-3,
+0x1.8c9c45a3cc2p-3,0x1.8eed784d2e2p-3,0x1.9140dfb42a2p-3,0x1.93967ce6602p-3,
+0x1.95ee50f1a02p-3,0x1.98485ce3ea2p-3,0x1.9aa4a1cb6e2p-3,0x1.9d0320b68c2p-3,
+0x1.9f63dab3d42p-3,0x1.a1c6d0d2062p-3,0x1.a42c0420122p-3,0x1.a69375ad182p-3,
+0x1.a8fd2688682p-3,0x1.ab6917c1822p-3,0x1.add74a68162p-3,0x1.b047bf8c042p-3,
+0x1.b2ba783d5c2p-3,0x1.b52f758c5e2p-3,0x1.b7a6b8897a2p-3,0x1.ba204245502p-3,
+0x1.bc9c13d0b02p-3,0x1.bf1a2e3c9a2p-3,0x1.c19a929a3e2p-3,0x1.c41d41fafc2p-3,
+0x1.c6a23d70642p-3,0x1.c929860c362p-3,0x1.cbb31ce0622p-3,0x1.ce3f02ff082p-3,
+0x1.d0cd397a782p-3,0x1.d35dc165322p-3,0x1.d5f09bd1e62p-3,0x1.d885c9d3742p-3,
+0x1.db1d4c7cec2p-3,0x1.ddb724e18e2p-3,0x1.e0535414ca2p-3,0x1.e2f1db2a402p-3,
+0x1.e592bb35c02p-3,0x1.e835f54b4a2p-3,0x1.eadb8a7f0e2p-3,0x1.ed837be56c2p-3,
+0x1.f02dca92f42p-3,0x1.f2da779c662p-3,0x1.f5898416b22p-3,0x1.f83af116f82p-3,
+0x1.faeebfb2882p-3,0x1.fda4f0fee22p-3,0x1.002ec308db1p-2,0x1.018c4000721p-2,
+0x1.02eaeff13e1p-2,0x1.044ad3665f1p-2,0x1.05abeaeb0d1p-2,0x1.070e370a981p-2,
+0x1.0871b850681p-2,0x1.09d66f47fd1p-2,0x1.0b3c5c7cef1p-2,0x1.0ca3807aee1p-2,
+0x1.0e0bdbcdc21p-2,0x1.0f756f014b1p-2,0x1.10e03aa1811p-2,0x1.124c3f3a741p-2,
+0x1.13b97d584c1p-2,0x1.1527f587491p-2,0x1.1697a853c31p-2,0x1.1808964a2a1p-2,
+0x1.197abff7061p-2,0x1.1aee25e6f71p-2,0x1.1c62c8a6b51p-2,0x1.1dd8a8c3101p-2,
+0x1.1f4fc6c8f01p-2,0x1.20c82345551p-2,0x1.2241bec5571p-2,0x1.23bc99d6261p-2,
+0x1.2538b5050a1p-2,0x1.26b610df631p-2,0x1.2834adf2a91p-2,0x1.29b48ccc6c1p-2,
+0x1.2b35adfa541p-2,0x1.2cb8120a211p-2,0x1.2e3bb989ab1p-2,0x1.2fc0a506e21p-2,
+0x1.3146d50fce1p-2,0x1.32ce4a328f1p-2,0x1.345704fd5d1p-2,0x1.35e105fe881p-2,
+0x1.376c4dc4781p-2,0x1.38f8dcddad1p-2,0x1.3a86b3d8bf1p-2,0x1.3c15d3445e1p-2,
+0x1.3da63baf521p-2,0x1.3f37eda87b1p-2,0x1.40cae9bed11p-2,0x1.425f3081641p-2,
+0x1.43f4c27f5c1p-2,0x1.458ba047f91p-2,0x1.4723ca6a931p-2,0x1.48bd41769a1p-2,
+0x1.4a5805fb961p-2,0x1.4bf41889271p-2,0x1.4d9179af051p-2,0x1.4f3029fd001p-2,
+0x1.50d02a03001p-2,0x1.52717a51051p-2,0x1.54141b77271p-2,0x1.55b80e05961p-2,
+0x1.575d528c9a1p-2,0x1.5903e99c931p-2,0x1.5aabd3c5f91p-2,0x1.5c5511995c1p-2,
+0x1.5dffa3a7641p-2,0x1.5fab8a80d11p-2,0x1.6158c6b67b1p-2,0x1.630758d9521p-2,
+0x1.64b7417a5e1p-2,0x1.6668812abf1p-2,0x1.681b187bad1p-2,0x1.69cf07fe781p-2,
+0x1.6b845044881p-2,0x1.6d3af1df5d1p-2,0x1.6ef2ed608f1p-2,0x1.70ac4359ce1p-2,
+0x1.7266f45ce21p-2,0x1.742300fbab1p-2,0x1.75e069c8211p-2,0x1.779f2f54541p-2,
+0x1.795f52326c1p-2,0x1.7b20d2f4a91p-2,0x1.7ce3b22d631p-2,0x1.7ea7f06f0a1p-2,
+0x1.806d8e4c261p-2,0x1.82348c57571p-2,0x1.83fceb23551p-2,0x1.85c6ab42f01p-2,
+0x1.8791cd49101p-2,0x1.895e51c8b51p-2,0x1.8b2c3954f71p-2,0x1.8cfb8481061p-2,
+0x1.8ecc33e02a1p-2,0x1.909e4805c31p-2,0x1.9271c185491p-2,0x1.9446a0f24c1p-2,
+0x1.961ce6e0741p-2,0x1.97f493e3811p-2,0x1.99cda88f4b1p-2,0x1.9ba82577c21p-2,
+0x1.9d840b30ee1p-2,0x1.9f615a4eef1p-2,0x1.a1401365fd1p-2,0x1.a320370a681p-2,
+0x1.a501c5d0981p-2,0x1.a6e4c04d0d1p-2,0x1.a8c927145f1p-2,0x1.aaaefabb3e1p-2,
+0x1.ac963bd6721p-2,0x1.ae7eeafadb1p-2,0x1.b06908bd711p-2,0x1.b25495b3441p-2,
+0x1.b44192717c1p-2,0x1.b62fff8d591p-2,0x1.b81fdd9c331p-2,0x1.ba112d337a1p-2,
+0x1.bc03eee8b61p-2,0x1.bdf82351871p-2,0x1.bfedcb03a51p-2,0x1.c1e4e694e01p-2,
+0x1.c3dd769b201p-2,0x1.c5d77bac651p-2,0x1.c7d2f65ec71p-2,0x1.c9cfe748761p-2,
+0x1.cbce4effba1p-2,0x1.cdce2e1af31p-2,0x1.cfcf8530991p-2,0x1.d1d254d73c1p-2,
+0x1.d3d69da5841p-2,0x1.d5dc6032311p-2,0x1.d7e39d141b1p-2,0x1.d9ec54e2321p-2,
+0x1.dbf688337e1p-2,0x1.de02379f1f1p-2,0x1.e00f63bc4d1p-2,0x1.e21e0d22581p-2,
+0x1.e42e3468a81p-2,0x1.e63fda26bd1p-2,0x1.e852fef42f1p-2,0x1.ea67a368ae1p-2,
+0x1.ec7dc81c021p-2,0x1.ee956da60b1p-2,0x1.f0ae949ec11p-2,0x1.f2c93d9e341p-2,
+0x1.f4e5693c8c1p-2,0x1.f7031812091p-2,0x1.f9224ab7031p-2,0x1.fb4301c3ea1p-2,
+0x1.fd653dd1461p-2,0x1.ff88ff77b71p-2,0x1.00d723a7fa88p-1,0x1.01ea8af96808p-1,
+0x1.02feb5fc9808p-1,0x1.0413a4fe0a88p-1,0x1.0529584a4b88p-1,0x1.063fd02df308p-1,
+0x1.07570cf5a508p-1,0x1.086f0eee1188p-1,0x1.0987d663f488p-1,0x1.0aa163a41608p-1,
+0x1.0bbbb6fb4a08p-1,0x1.0cd6d0b67088p-1,0x1.0df2b1227588p-1,0x1.0f0f588c5108p-1,
+0x1.102cc7410708p-1,0x1.114afd8da788p-1,0x1.1269fbbf4e88p-1,0x1.1389c2232408p-1,
+0x1.14aa51065c08p-1,0x1.15cba8b63688p-1,0x1.16edc97fff88p-1,0x1.1810b3b10f08p-1,
+0x1.19346796c908p-1,0x1.1a58e57e9d88p-1,0x1.1b7e2db60888p-1,0x1.1ca4408a9208p-1,
+0x1.1dcb1e49ce08p-1,0x1.1ef2c7415c88p-1,0x1.201b3bbee988p-1,0x1.21447c102d08p-1,
+0x1.226e8882eb08p-1,0x1.23996164f388p-1,0x1.24c507042288p-1,0x1.25f179ae6008p-1,
+0x1.271eb9b1a008p-1,0x1.284cc75be288p-1,0x1.297ba2fb3388p-1,0x1.2aab4cddab08p-1,
+0x1.2bdbc5516d08p-1,0x1.2d0d0ca4a988p-1,0x1.2e3f23259c88p-1,0x1.2f7209228e08p-1,
+0x1.30a5bee9d208p-1,0x1.31da44c9c888p-1,0x1.330f9b10dd88p-1,0x1.3445c20d8908p-1,
+0x1.357cba0e4f08p-1,0x1.36b48361bf88p-1,0x1.37ed1e567688p-1,0x1.39268b3b1c08p-1,
+0x1.3a60ca5e6408p-1,0x1.3b9bdc0f0e88p-1,0x1.3cd7c09be788p-1,0x1.3e147853c708p-1,
+0x1.3f5203859108p-1,0x1.409062803588p-1,0x1.41cf9592b088p-1,0x1.430f9d0c0a08p-1,
+0x1.4450793b5608p-1,0x1.45922a6fb488p-1,0x1.46d4b0f85188p-1,0x1.48180d246508p-1,
+0x1.495c3f433308p-1,0x1.4aa147a40b88p-1,0x1.4be726964a88p-1,0x1.4d2ddc695808p-1,
+0x1.4e75696ca808p-1,0x1.4fbdcdefba88p-1,0x1.51070a421b88p-1,0x1.52511eb36308p-1,
+0x1.539c0b933508p-1,0x1.54e7d1314188p-1,0x1.56346fdd4488p-1,0x1.5781e7e70608p-1,
+0x1.58d0399e5a08p-1,0x1.5a1f65532088p-1,0x1.5b6f6b554588p-1,0x1.5cc04bf4c108p-1,
+0x1.5e1207819708p-1,0x1.5f649e4bd788p-1,0x1.60b810a39e88p-1,0x1.620c5ed91408p-1,
+0x1.6361893c6c08p-1,0x1.64b7901de688p-1,0x1.660e73cdcf88p-1,0x1.6766349c7f08p-1,
+0x1.68bed2da5908p-1,0x1.6a184ed7cd88p-1,0x1.6b72a8e55888p-1,0x1.6ccde1538208p-1,
+0x1.6e29f872de08p-1,0x1.6f86ee940c88p-1,0x1.70e4c407b988p-1,0x1.7243791e9d08p-1,
+0x1.73a30e297b08p-1,0x1.750383792388p-1,0x1.7664d95e7288p-1,0x1.77c7102a5008p-1,
+0x1.792a282db008p-1,0x1.7a8e21b99288p-1,0x1.7bf2fd1f0388p-1,0x1.7d58baaf1b08p-1,
+0x1.7ebf5abafd08p-1,0x1.8026dd93d988p-1,0x1.818f438aec88p-1,0x1.82f88cf17e08p-1,
+0x1.8462ba18e208p-1,0x1.85cdcb527888p-1,0x1.8739c0efad88p-1,0x1.88a69b41f908p-1,
+0x1.8a145a9adf08p-1,0x1.8b82ff4bef88p-1,0x1.8cf289a6c688p-1,0x1.8e62f9fd0c08p-1,
+0x1.8fd450a07408p-1,0x1.91468de2be88p-1,0x1.92b9b215b788p-1,0x1.942dbd8b3708p-1,
+0x1.95a2b0952108p-1,0x1.97188b856588p-1,0x1.988f4eae0088p-1,0x1.9a06fa60fa08p-1,
+0x1.9b7f8ef06608p-1,0x1.9cf90cae6488p-1,0x1.9e7373ed2188p-1,0x1.9feec4fed508p-1,
+0x1.a16b0035c308p-1,0x1.a2e825e43b88p-1,0x1.a466365c9a88p-1,0x1.a5e531f14808p-1,
+0x1.a76518f4b808p-1,0x1.a8e5ebb96a88p-1,0x1.aa67aa91eb88p-1,0x1.abea55d0d308p-1,
+0x1.ad6dedc8c508p-1,0x1.aef272cc7188p-1,0x1.b077e52e9488p-1,0x1.b1fe4541f608p-1,
+0x1.b38593596a08p-1,0x1.b50dcfc7d088p-1,0x1.b696fae01588p-1,0x1.b82114f53108p-1,
+0x1.b9ac1e5a2708p-1,0x1.bb3817620788p-1,0x1.bcc5005fee88p-1,0x1.be52d9a70408p-1,
+0x1.bfe1a38a7c08p-1,0x1.c1715e5d9688p-1,0x1.c3020a739f88p-1,0x1.c493a81fef08p-1,
+0x1.c62637b5e908p-1,0x1.c7b9b988fd88p-1,0x1.c94e2deca888p-1,0x1.cae395347208p-1,
+0x1.cc79efb3ee08p-1,0x1.ce113dbebc88p-1,0x1.cfa97fa88988p-1,0x1.d142b5c50d08p-1,
+0x1.d2dce0680b08p-1,0x1.d477ffe55388p-1,0x1.d6141490c288p-1,0x1.d7b11ebe4008p-1,
+0x1.d94f1ec1c008p-1,0x1.daee14ef4288p-1,0x1.dc8e019ad388p-1,0x1.de2ee5188b08p-1,
+0x1.dfd0bfbc8d08p-1,0x1.e17391db0988p-1,0x1.e3175bc83c88p-1,0x1.e4bc1dd86e08p-1,
+0x1.e661d85ff208p-1,0x1.e8088bb32888p-1,0x1.e9b038267d88p-1,0x1.eb58de0e6908p-1,
+0x1.ed027dbf6f08p-1,0x1.eead178e1f88p-1,0x1.f058abcf1688p-1,0x1.f2053ad6fc08p-1,
+0x1.f3b2c4fa8408p-1,0x1.f5614a8e6e88p-1,0x1.f710cbe78788p-1,0x1.f8c1495aa708p-1,
+0x1.fa72c33cb108p-1,0x1.fc2539e29588p-1,0x1.fdd8ada15088p-1,0x1.ff8d1ecdea08p-1,
+0x1.00a146debb04p+0,0x1.017c7d628a44p+0,0x1.0258331cf8c4p+0,0x1.03346838a284p+0,
+0x1.04111ce02984p+0,0x1.04ee513e35c4p+0,0x1.05cc057d7544p+0,0x1.06aa39c89c04p+0,
+0x1.0788ee4a6404p+0,0x1.0868232d8d44p+0,0x1.0947d89cddc4p+0,0x1.0a280ec32184p+0,
+0x1.0b08c5cb2a84p+0,0x1.0be9fddfd0c4p+0,0x1.0ccbb72bf244p+0,0x1.0dadf1da7304p+0,
+0x1.0e90ae163d04p+0,0x1.0f73ec0a4044p+0,0x1.1057abe172c4p+0,0x1.113bedc6d084p+0,
+0x1.1220b1e55b84p+0,0x1.1305f8681bc4p+0,0x1.13ebc17a1f44p+0,0x1.14d20d467a04p+0,
+0x1.15b8dbf84604p+0,0x1.16a02dbaa344p+0,0x1.178802b8b7c4p+0,0x1.18705b1daf84p+0,
+0x1.19593714bc84p+0,0x1.1a4296c916c4p+0,0x1.1b2c7a65fc44p+0,0x1.1c16e216b104p+0,
+0x1.1d01ce067f04p+0,0x1.1ded3e60b644p+0,0x1.1ed93350acc4p+0,0x1.1fc5ad01be84p+0,
+0x1.20b2ab9f4d84p+0,0x1.21a02f54c1c4p+0,0x1.228e384d8944p+0,0x1.237cc6b51804p+0,
+0x1.246bdab6e804p+0,0x1.255b747e7944p+0,0x1.264b943751c4p+0,0x1.273c3a0cfd84p+0,
+0x1.282d662b0e84p+0,0x1.291f18bd1cc4p+0,0x1.2a1151eec644p+0,0x1.2b0411ebaf04p+0,
+0x1.2bf758df8104p+0,0x1.2ceb26f5ec44p+0,0x1.2ddf7c5aa6c4p+0,0x1.2ed459396c84p+0,
+0x1.2fc9bdbdff84p+0,0x1.30bfaa1427c4p+0,0x1.31b61e67b344p+0,0x1.32ad1ae47604p+0,
+0x1.33a49fb64a04p+0,0x1.349cad090f44p+0,0x1.35954308abc4p+0,0x1.368e61e10b84p+0,
+0x1.378809be2084p+0,0x1.38823acbe2c4p+0,0x1.397cf5365044p+0,0x1.3a7839296d04p+0,
+0x1.3b7406d14304p+0,0x1.3c705e59e244p+0,0x1.3d6d3fef60c4p+0,0x1.3e6aabbdda84p+0,
+0x1.3f68a1f17184p+0,0x1.406722b64dc4p+0,0x1.41662e389d44p+0,0x1.4265c4a49404p+0,
+0x1.4365e6266c04p+0,0x1.446692ea6544p+0,0x1.4567cb1cc5c4p+0,0x1.46698ee9d984p+0,
+0x1.476bde7df284p+0,0x1.486eba0568c4p+0,0x1.497221ac9a44p+0,0x1.4a76159feb04p+0,
+0x1.4b7a960bc504p+0,0x1.4c7fa31c9844p+0,0x1.4d853cfedac4p+0,0x1.4e8b63df0884p+0,
+0x1.4f9217e9a384p+0,0x1.5099594b33c4p+0,0x1.51a128304744p+0,0x1.52a984c57204p+0,
+0x1.53b26f374e04p+0,0x1.54bbe7b27b44p+0,0x1.55c5ee639fc4p+0,0x1.56d083776784p+0,
+0x1.57dba71a8484p+0,0x1.58e75979aec4p+0,0x1.59f39ac1a444p+0,0x1.5b006b1f2904p+0,
+0x1.5c0dcabf0704p+0,0x1.5d1bb9ce0e44p+0,0x1.5e2a387914c4p+0,0x1.5f3946ecf684p+0,
+0x1.6048e5569584p+0,0x1.615913e2d9c4p+0,0x1.6269d2beb144p+0,0x1.637b22171004p+0,
+0x1.648d0218f004p+0,0x1.659f72f15144p+0,0x1.66b274cd39c4p+0,0x1.67c607d9b584p+0,
+0x1.68da2c43d684p+0,0x1.69eee238b4c4p+0,0x1.6b0429e56e44p+0,0x1.6c1a03772704p+0,
+0x1.6d306f1b0904p+0,0x1.6e476cfe4444p+0,0x1.6f5efd4e0ec4p+0,0x1.70772037a484p+0,
+0x1.718fd5e84784p+0,0x1.72a91e8d3fc4p+0,0x1.73c2fa53db44p+0,0x1.74dd69696e04p+0,
+0x1.75f86bfb5204p+0,0x1.77140236e744p+0,0x1.78302c4993c4p+0,0x1.794cea60c384p+0,
+0x1.7a6a3ca9e884p+0,0x1.7b8823527ac4p+0,0x1.7ca69e87f844p+0,0x1.7dc5ae77e504p+0,
+0x1.7ee5534fcb04p+0,0x1.80058d3d3a44p+0,0x1.81265c6dc8c4p+0,0x1.8247c10f1284p+0,
+0x1.8369bb4eb984p+0,0x1.848c4b5a65c4p+0,0x1.85af715fc544p+0,0x1.86d32d8c8c04p+0,
+0x1.87f7800e7404p+0,0x1.891c69133d44p+0,0x1.8a41e8c8adc4p+0,0x1.8b67ff5c9184p+0,
+0x1.8c8eacfcba84p+0,0x1.8db5f1d700c4p+0,0x1.8eddce194244p+0,0x1.900641f16304p+0,
+0x1.912f4d8d4d04p+0,0x1.9258f11af044p+0,0x1.93832cc842c4p+0,0x1.94ae00c34084p+0,
+0x1.95d96d39eb84p+0,0x1.9705725a4bc4p+0,0x1.983210526f44p+0,0x1.995f47506a04p+0,
+0x1.9a8d17825604p+0,0x1.9bbb81165344p+0,0x1.9cea843a87c4p+0,0x1.9e1a211d1f84p+0,
+0x1.9f4a57ec4c84p+0,0x1.a07b28d646c4p+0,0x1.a1ac94094c44p+0,0x1.a2de99b3a104p+0,
+0x1.a4113a038f04p+0,0x1.a54475276644p+0,0x1.a6784b4d7cc4p+0,0x1.a7acbca42e84p+0,
+0x1.a8e1c959dd84p+0,0x1.aa17719cf1c4p+0,0x1.ab4db59bd944p+0,0x1.ac8495850804p+0,
+0x1.adbc1186f804p+0,0x1.aef429d02944p+0,0x1.b02cde8f21c4p+0,0x1.b1662ff26d84p+0,
+0x1.b2a01e289e84p+0,0x1.b3daa9604cc4p+0,0x1.b515d1c81644p+0,0x1.b651978e9f04p+0,
+0x1.b78dfae29104p+0,0x1.b8cafbf29c44p+0,0x1.ba089aed76c4p+0,0x1.bb46d801dc84p+0,
+0x1.bc85b35e8f84p+0,0x1.bdc52d3257c4p+0,0x1.bf0545ac0344p+0,0x1.c045fcfa6604p+0,
+0x1.c187534c5a04p+0,0x1.c2c948d0bf44p+0,0x1.c40bddb67bc4p+0,0x1.c54f122c7b84p+0,
+0x1.c692e661b084p+0,0x1.c7d75a8512c4p+0,0x1.c91c6ec5a044p+0,0x1.ca6223525d04p+0,
+0x1.cba8785a5304p+0,0x1.ccef6e0c9244p+0,0x1.ce37049830c4p+0,0x1.cf7f3c2c4a84p+0,
+0x1.d0c814f80184p+0,0x1.d2118f2a7dc4p+0,0x1.d35baaf2ed44p+0,0x1.d4a668808404p+0,
+0x1.d5f1c8027c04p+0,0x1.d73dc9a81544p+0,0x1.d88a6da095c4p+0,0x1.d9d7b41b4984p+0,
+0x1.db259d478284p+0,0x1.dc74295498c4p+0,0x1.ddc35871ea44p+0,0x1.df132acedb04p+0,
+0x1.e063a09ad504p+0,0x1.e1b4ba054844p+0,0x1.e306773daac4p+0,0x1.e458d8737884p+0,
+0x1.e5abddd63384p+0,0x1.e6ff879563c4p+0,0x1.e853d5e09744p+0,0x1.e9a8c8e76204p+0,
+0x1.eafe60d95e04p+0,0x1.ec549de62b44p+0,0x1.edab803d6fc4p+0,0x1.ef03080ed784p+0,
+0x1.f05b358a1484p+0,0x1.f1b408dedec4p+0,0x1.f30d823cf444p+0,0x1.f467a1d41904p+0,
+0x1.f5c267d41704p+0,0x1.f71dd46cbe44p+0,0x1.f879e7cde4c4p+0,0x1.f9d6a2276684p+0,
+0x1.fb3403a92584p+0,0x1.fc920c8309c4p+0,0x1.fdf0bce50144p+0,0x1.ff5014ff0004p+0,
+},{
+0x1.2d135e9804p-6,0x1.a30f0838a2p-5,0x1.4365015c71p-4,0x1.a263b83961p-4,
+0x1.effd0e07a1p-4,0x1.16ceb24e988p-3,0x1.2e520d28c88p-3,0x1.3f31c4fee08p-3,
+0x1.4a10857e208p-3,0x1.4f8a7894888p-3,0x1.50354670d88p-3,0x1.4ca01582908p-3,
+0x1.45538a79f08p-3,0x1.3ad1c847f88p-3,0x1.2d96701e688p-3,0x1.1e16a16fc08p-3,
+0x1.0cc0f9ef408p-3,0x1.f3fb2b21d1p-4,0x1.cc5c1d12f1p-4,0x1.a35afa9ce1p-4,
+0x1.79a0f12c21p-4,0x1.4fca2aaeb1p-4,0x1.2665cd9411p-4,0x1.fbebf99a82p-5,
+0x1.addfaf9982p-5,0x1.6376f50d22p-5,0x1.1d67fae062p-5,0x1.b89dd60284p-6,
+0x1.415bd0c184p-6,0x1.abb43bcb88p-7,0x1.dad39d751p-8,0x1.22a248e02p-9,
+-0x1.089d771fep-9,-0x1.660c028afp-8,-0x1.0a5b743478p-7,-0x1.48f7ee7cf8p-7,
+-0x1.7013c3faf8p-7,-0x1.814f647e78p-7,-0x1.7eb35bcb78p-7,-0x1.6ab05199f8p-7,
+-0x1.481f0995f8p-7,-0x1.1a40635f78p-7,-0x1.c97ab514fp-8,-0x1.574e0d3dfp-8,
+-0x1.cdda6c63ep-9,-0x1.04359da1ep-9,-0x1.9b4d6f178p-11,-0x1.8f3885fcp-14,
+-0x1.b1ec81fcp-14,-0x1.083670cbcp-10,-0x1.8bc4ae01ep-9,-0x1.a0e9d0c1fp-8,
+-0x1.714c17d6f8p-7,-0x1.26cc74793cp-6,-0x1.b6f2d35bbcp-6,-0x1.36c92e077ep-5,
+-0x1.a7ac28047ep-5,-0x1.18497fae6fp-4,-0x1.6a043162cfp-4,-0x1.ca5883f85fp-4,
+-0x1.1d52eae34f8p-3,-0x1.5e2c4451c78p-3,-0x1.a87500f1d78p-3,-0x1.fcf0552cff8p-3,
+0x1.a30f0838a2p-5,0x1.23a35435d08p-3,0x1.c21fae3ae08p-3,0x1.232c1b3f6c4p-2,
+0x1.592d1b2ffc4p-2,0x1.84106d1ca04p-2,0x1.a4ca98b1384p-2,0x1.bc471718044p-2,
+0x1.cb6852f9a44p-2,0x1.d307a87d184p-2,0x1.d3f56547c04p-2,0x1.cef8c87d5c4p-2,
+0x1.c4d002c00c4p-2,0x1.b6303630504p-2,0x1.a3c5766d084p-2,0x1.8e32c893744p-2,
+0x1.7612233f344p-2,0x1.5bf46e8a484p-2,0x1.4061840d104p-2,0x1.23d82ede4c4p-2,
+0x1.06ce2b931c4p-2,0x1.d360507e008p-3,0x1.99c388e7b08p-3,0x1.617b2283c88p-3,
+0x1.2b2a226f888p-3,0x1.eec2e189e1p-4,0x1.8d3fb13581p-4,0x1.32a41008f1p-4,
+0x1.bf4a404962p-5,0x1.29a7934582p-5,0x1.4a72ea5a84p-6,0x1.948670d51p-8,
+-0x1.704f6f2afp-8,-0x1.f25afb4af8p-7,-0x1.72bc3174fcp-6,-0x1.c9e1c76d3cp-6,
+-0x1.00287bee1ep-5,-0x1.0c26b194fep-5,-0x1.0a55c8ec3ep-5,-0x1.f8d0f483bcp-6,
+-0x1.c8b3e3e1bcp-6,-0x1.88dba0c27cp-6,-0x1.3e60540ffcp-6,-0x1.ddd61d9c78p-7,
+-0x1.416b943678p-7,-0x1.6a2d9cbbfp-8,-0x1.1e3d7adbep-9,-0x1.15d5032fp-12,
+-0x1.2dfbb22fp-12,-0x1.6fc0097bep-9,-0x1.136de9f5f8p-7,-0x1.22251bff3cp-6,
+-0x1.0101d8151ep-5,-0x1.9a5269c1fep-5,-0x1.317ae40b9fp-4,-0x1.b092f6196fp-4,
+-0x1.26d950cff78p-3,-0x1.861fab9d8f8p-3,-0x1.f7e160c6bf8p-3,-0x1.3efab15003cp-2,
+-0x1.8d22604093cp-2,-0x1.e76553628fcp-2,-0x1.276517b28bep-1,-0x1.623053bc75ep-1,
+0x1.4365015c71p-4,0x1.c21fae3ae08p-3,0x1.5b5e3220f84p-2,0x1.c167ab2a744p-2,
+0x1.0a60d0c6822p-1,0x1.2b79bd13142p-1,0x1.44bb4faee02p-1,0x1.56db4093062p-1,
+0x1.62884a7dd62p-1,0x1.686a2af2d02p-1,0x1.6921a23aa42p-1,0x1.65487363322p-1,
+0x1.5d71643f8a2p-1,0x1.52283d67ec2p-1,0x1.43f1ca39c82p-1,0x1.334bd8d7be2p-1,
+0x1.20ad3a299e2p-1,0x1.0c85c1dc682p-1,0x1.ee7c8cc4984p-2,0x1.c27141e5544p-2,
+0x1.959f5b14244p-2,0x1.68ae95d4884p-2,0x1.3c38b534604p-2,0x1.10c981cbec4p-2,
+0x1.cdbd937b988p-3,0x1.7dd0c16e008p-3,0x1.32903fddd08p-3,0x1.d947989d11p-4,
+0x1.592e5eb0d1p-4,0x1.cb68f2a1c2p-5,0x1.fe06980304p-6,0x1.382dc36b88p-7,
+-0x1.1c3b2c9478p-7,-0x1.8096cffcfcp-6,-0x1.1e1a395e3ep-5,-0x1.615ae69e5ep-5,
+-0x1.8b5ceac5dep-5,-0x1.9ddf9488bep-5,-0x1.9b120647fep-5,-0x1.859336119ep-5,
+-0x1.6071eda09ep-5,-0x1.2f2cca5cfep-5,-0x1.eb647ab77cp-6,-0x1.70c116bdbcp-6,
+-0x1.f017335578p-7,-0x1.177fb76cf8p-7,-0x1.b9cae397ep-9,-0x1.acd0b30fp-12,
+-0x1.d217420fp-12,-0x1.1bcc831bfp-8,-0x1.a91b5604f8p-7,-0x1.bfd1c00ebcp-6,
+-0x1.8cac65ccdep-5,-0x1.3ca6f82adfp-4,-0x1.d77cee697fp-4,-0x1.4dd31708a78p-3,
+-0x1.c7145cb3e78p-3,-0x1.2d109f223fcp-2,-0x1.84da5359d7cp-2,-0x1.ec52baf2fbcp-2,
+-0x1.3279a02ac5ep-1,-0x1.7821a42f83ep-1,-0x1.c7ec193147ep-1,-0x1.1155560a38fp+0,
+0x1.a263b83961p-4,0x1.232c1b3f6c4p-2,0x1.c167ab2a744p-2,0x1.22b51306182p-1,
+0x1.589fff42e02p-1,0x1.8371c8ce522p-1,0x1.a41e935d5e2p-1,0x1.bb9177d7242p-1,
+0x1.caac8454f42p-1,0x1.d248bc224e2p-1,0x1.d33617bce22p-1,0x1.ce3b84d4902p-1,
+0x1.c416e64b682p-1,0x1.b57d1435aa2p-1,0x1.a319dbd9c62p-1,0x1.8d8fffb05c2p-1,
+0x1.757937643c2p-1,0x1.5b662fd2662p-1,0x1.3fde8b0a0a2p-1,0x1.2360e04c882p-1,
+0x1.0662bc0d702p-1,0x1.d2a13fe5044p-2,0x1.991c05a75c4p-2,0x1.60eaa176284p-2,
+0x1.2aafd5ca084p-2,0x1.edf89efff88p-3,0x1.8c9d4bb2c88p-3,0x1.3226b4f8008p-3,
+0x1.be9365c7c1p-4,0x1.292de4a6d1p-4,0x1.49ebd3b162p-5,0x1.93e111d308p-7,
+-0x1.6fb8de2cf8p-7,-0x1.f18f409d3cp-6,-0x1.7224a2b25ep-5,-0x1.c92698707ep-5,
+-0x1.ff7f881ffep-5,-0x1.0bb9129a6fp-4,-0x1.09e8e8000fp-4,-0x1.f80295afbep-5,
+-0x1.c7f9304ebep-5,-0x1.883b06c51ep-5,-0x1.3dde2cd7dep-5,-0x1.dd12c651fcp-6,
+-0x1.40e82e6efcp-6,-0x1.69998d7d78p-7,-0x1.1dc876ccfp-8,-0x1.15636f0f8p-11,
+-0x1.2d803e8f8p-11,-0x1.6f29b31cfp-8,-0x1.12fd514abcp-6,-0x1.21ae7f497ep-5,
+-0x1.0098c75b7fp-4,-0x1.99aaac18efp-4,-0x1.30fe0276c78p-3,-0x1.afe21fac2f8p-3,
+-0x1.2660c7d1b7cp-2,-0x1.85802fc543cp-2,-0x1.f71363e35bcp-2,-0x1.3e784afd1fep-1,
+-0x1.8c8006b9e7ep-1,-0x1.e69e13aac5ep-1,-0x1.26ec559024fp+0,-0x1.619f889c69fp+0,
+0x1.effd0e07a1p-4,0x1.592d1b2ffc4p-2,0x1.0a60d0c6822p-1,0x1.589fff42e02p-1,
+0x1.988af4e1a82p-1,0x1.cb4dd5559a2p-1,0x1.f20a0c2fa62p-1,0x1.06eb266f761p+0,
+0x1.0fdf49585e1p+0,0x1.146210684b1p+0,0x1.14eec124151p+0,0x1.11fb44ffac1p+0,
+0x1.0bf8295e181p+0,0x1.03509f91791p+0,0x1.f0d4f9b60e2p-1,0x1.d74c74d6242p-1,
+0x1.babdeac2042p-1,0x1.9bd4dd96ae2p-1,0x1.7b32174f522p-1,0x1.596ba9c5502p-1,
+0x1.370ceeb0382p-1,0x1.149687a5ca2p-1,0x1.e4fcbc33ec4p-2,0x1.a25f46bdb84p-2,
+0x1.6215a149984p-2,0x1.24cb4df48c4p-2,0x1.d62cbd2fe88p-3,0x1.6aeee993208p-3,
+0x1.08b383b7008p-3,0x1.604c1b7111p-4,0x1.871ca4b5e2p-5,0x1.dec9724508p-7,
+-0x1.b3ec7dbaf8p-7,-0x1.26ebcf4a1ep-5,-0x1.b6cb351ddep-5,-0x1.0ef82a91ffp-4,
+-0x1.2f2edad9bfp-4,-0x1.3d60afa02fp-4,-0x1.3b3a6e2dcfp-4,-0x1.2abe9cd99fp-4,
+-0x1.0e4583091fp-4,-0x1.d0fa52609ep-5,-0x1.78d2b1a35ep-5,-0x1.1ac738fc7ep-5,
+-0x1.7c6cff55fcp-6,-0x1.acaa7c2b78p-7,-0x1.52c994a8fp-8,-0x1.48d5f7ef8p-11,
+-0x1.656ba76f8p-11,-0x1.b342c4f8fp-8,-0x1.45fdf3a1bcp-6,-0x1.5768b83cfep-5,
+-0x1.30301e053fp-4,-0x1.e5a5d7beafp-4,-0x1.698f2fbda78p-3,-0x1.fffc263d0f8p-3,
+-0x1.5cf9fdc227cp-2,-0x1.cdbdde20b3cp-2,-0x1.2a30d56a65ep-1,-0x1.7989655e57ep-1,
+-0x1.d60a0a7d1fep-1,-0x1.206f743cbefp+0,-0x1.5d9f6d9400fp+0,-0x1.a335bb3f85fp+0,
+0x1.16ceb24e988p-3,0x1.84106d1ca04p-2,0x1.2b79bd13142p-1,0x1.8371c8ce522p-1,
+0x1.cb4dd5559a2p-1,0x1.022fa893d61p+0,0x1.17f5ced63c1p+0,0x1.2796079a8f1p+0,
+0x1.31a6f67df71p+0,0x1.36b93892341p+0,0x1.3757645d9e1p+0,0x1.340609db251p+0,
+0x1.2d43b27a511p+0,0x1.2388e11f421p+0,0x1.17481222b01p+0,0x1.08edbb51eb1p+0,
+0x1.f1c097ddb62p-1,0x1.cf005960002p-1,0x1.aa4f7f80e42p-1,0x1.8456c17fc22p-1,
+0x1.5db2c9852a2p-1,0x1.36f434a2dc2p-1,0x1.109f92d3c82p-1,0x1.d65acdf81c4p-2,
+0x1.8e144dd1fc4p-2,0x1.492c76a2304p-2,0x1.084bffa8184p-2,0x1.98070beae88p-3,
+0x1.299718dcc88p-3,0x1.8c11ef25a1p-4,0x1.b7b5147b02p-5,0x1.0d2351b8c4p-6,
+-0x1.ea164c8e78p-7,-0x1.4b909f84fep-5,-0x1.ed504db4bep-5,-0x1.30a320466fp-4,
+-0x1.54da762a2fp-4,-0x1.64cfcb5f9fp-4,-0x1.62652b773fp-4,-0x1.4fdd0ab80fp-4,
+-0x1.2fda461f8fp-4,-0x1.05602361bfp-4,-0x1.a7a4a1d23ep-5,-0x1.3de9cbad5ep-5,
+-0x1.abb18807bcp-6,-0x1.e1ed6fc6f8p-7,-0x1.7ce1affffp-8,-0x1.71b189278p-11,
+-0x1.91d470a78p-11,-0x1.e9577d4ffp-8,-0x1.6e7f102f7cp-6,-0x1.8213d4b5dep-5,
+-0x1.55fbb04dafp-4,-0x1.10fea2130f8p-3,-0x1.967b9e6e5f8p-3,-0x1.1fcca68823cp-2,
+-0x1.88563115c3cp-2,-0x1.038e719387ep-1,-0x1.4f3da59853ep-1,-0x1.a87208ea65ep-1,
+-0x1.08387e78d6fp+0,-0x1.4445f81675fp+0,-0x1.89102f18d7fp+0,-0x1.d74be7d62cfp+0,
+0x1.2e520d28c88p-3,0x1.a4ca98b1384p-2,0x1.44bb4faee02p-1,0x1.a41e935d5e2p-1,
+0x1.f20a0c2fa62p-1,0x1.17f5ced63c1p+0,0x1.2f920d0ae21p+0,0x1.4083a134551p+0,
+0x1.4b6de32ebd1p+0,0x1.50eda233da1p+0,0x1.519924db041p+0,0x1.4e0029192b1p+0,
+0x1.46abe440d71p+0,0x1.3c1f0302281p+0,0x1.2ed5a96ad61p+0,0x1.1f4572e6311p+0,
+0x1.0ddd723d211p+0,0x1.f60c632c4c2p-1,0x1.ce4364eab02p-1,0x1.a516db78ce2p-1,
+0x1.7b30a755362p-1,0x1.512d97b9a82p-1,0x1.279d6a9b142p-1,0x1.fe059953344p-2,
+0x1.afa6b2a1144p-2,0x1.64ef356cc84p-2,0x1.1e961379b04p-2,0x1.ba703803188p-3,
+0x1.42aff768f88p-3,0x1.ad78f2e401p-4,0x1.dcca355fc2p-5,0x1.23d5ea0a44p-6,
+-0x1.09b58df5bcp-6,-0x1.6786fea03ep-5,-0x1.0b75631bffp-4,-0x1.4a54232e0fp-4,
+-0x1.71995df9cfp-4,-0x1.82e73c193fp-4,-0x1.8048704cdfp-4,-0x1.6c30377bafp-4,
+-0x1.497a58b32fp-4,-0x1.1b6b25275fp-4,-0x1.cb5ef0657ep-5,-0x1.58b96eac9ep-5,
+-0x1.cfc348e63cp-6,-0x1.05490aa9fcp-6,-0x1.9d00c9d9fp-8,-0x1.90df16f78p-11,
+-0x1.b3b7ce778p-11,-0x1.094e1a94f8p-7,-0x1.8d679775fcp-6,-0x1.a2a31be51ep-5,
+-0x1.72d2fc6d4fp-4,-0x1.28047e27df8p-3,-0x1.b8c371612f8p-3,-0x1.381223c50bcp-2,
+-0x1.a96c9aaeabcp-2,-0x1.19722d2a3bep-1,-0x1.6b83611387ep-1,-0x1.cc3daa1059ep-1,
+-0x1.1e80ed3150fp+0,-0x1.5f9eeac88ffp+0,-0x1.aa364833b1fp+0,-0x1.ff0b087ae6fp+0,
+0x1.3f31c4fee08p-3,0x1.bc471718044p-2,0x1.56db4093062p-1,0x1.bb9177d7242p-1,
+0x1.06eb266f761p+0,0x1.2796079a8f1p+0,0x1.4083a134551p+0,0x1.52674f06581p+0,
+0x1.5ded86dc401p+0,0x1.63bbd883cd1p+0,0x1.6470edccd71p+0,0x1.60a48a894e1p+0,
+0x1.58e78c8d3a1p+0,0x1.4dc3ebaebb1p+0,0x1.3fbcb9c6091p+0,0x1.2f4e22ad741p+0,
+0x1.1ced6c41641p+0,0x1.0908f660591p+0,0x1.e81075d5d62p-1,0x1.bc979b87942p-1,
+0x1.905ab99f7c2p-1,0x1.63ff5feb4e2p-1,0x1.381d523cfa2p-1,0x1.0d3e886aa02p-1,
+0x1.c7be5c9d204p-2,0x1.78db478e944p-2,0x1.2e94f96efc4p-2,0x1.d3220418308p-3,
+0x1.54b2b278108p-3,0x1.c5717b7531p-4,0x1.f766d6b622p-5,0x1.341fd17b04p-6,
+-0x1.188a2684fcp-6,-0x1.7b981d49dep-5,-0x1.1a62fa8acfp-4,-0x1.5cc40d0fdfp-4,
+-0x1.863a65cf9fp-4,-0x1.987f84440fp-4,-0x1.95bb47c5afp-4,-0x1.8083ef8b7fp-4,
+-0x1.5bde1aaaffp-4,-0x1.2b3cc8182fp-4,-0x1.e502ad4b1ep-5,-0x1.6bf70a083ep-5,
+-0x1.e9a5c70d7cp-6,-0x1.13de6d453cp-6,-0x1.b40dffa6fp-8,-0x1.a73ef4df8p-11,
+-0x1.cc09945f8p-11,-0x1.181cecfb78p-7,-0x1.a395ec513cp-6,-0x1.ba00d258bep-5,
+-0x1.8785856b1fp-4,-0x1.388a2699478p-3,-0x1.d15d4ee1978p-3,-0x1.497d2d0effcp-2,
+-0x1.c12b4b669fcp-2,-0x1.2927a0d755ep-1,-0x1.7fcd738ae1ep-1,-0x1.e5edd56113ep-1,
+-0x1.2e7ea4f46dfp+0,-0x1.733f10567cfp+0,-0x1.c2003a99fefp+0,
+-0x1.0dc88bc011f8p+1,0x1.4a10857e208p-3,0x1.cb6852f9a44p-2,0x1.62884a7dd62p-1,
+0x1.caac8454f42p-1,0x1.0fdf49585e1p+0,0x1.31a6f67df71p+0,0x1.4b6de32ebd1p+0,
+0x1.5ded86dc401p+0,0x1.69d836d6281p+0,0x1.6fd9264a351p+0,0x1.709466443f1p+0,
+0x1.6ca6e5ae361p+0,0x1.64a67150221p+0,0x1.5921b3d0231p+0,0x1.4aa035b2711p+0,
+0x1.39a25d595c1p+0,0x1.26a16f054c1p+0,0x1.120f8cd4c11p+0,0x1.f8af6d88a62p-1,
+0x1.cbbb955d642p-1,0x1.9dfd08994c2p-1,0x1.701efa6a1e2p-1,0x1.42be59b9ca2p-1,
+0x1.1669d12e702p-1,0x1.d7438e54c04p-2,0x1.85b0bb98344p-2,0x1.38e2e5dc9c4p-2,
+0x1.e30a809f708p-3,0x1.604ceb2f508p-3,0x1.d4e29f4bb1p-4,0x1.0445c26191p-4,
+0x1.3e9e0f7504p-6,-0x1.2217e88afcp-6,-0x1.88856f3cdep-5,-0x1.2400d6b44fp-4,
+-0x1.68a49ba15fp-4,-0x1.93846cc11fp-4,-0x1.a668d28d8fp-4,-0x1.a38c779f2fp-4,
+-0x1.8d9c28acffp-4,-0x1.67b6d48c7fp-4,-0x1.356d8c31afp-4,-0x1.f587055e1ep-5,
+-0x1.785c1a6b3ep-5,-0x1.fa528c537cp-6,-0x1.1d4376eb3cp-6,-0x1.c2e78b3efp-8,
+-0x1.b5a8d59f8p-11,-0x1.dbb4351f8p-11,-0x1.21a6f6c778p-7,-0x1.b1dfe3f73cp-6,
+-0x1.c90e39fbbep-5,-0x1.94dad31c9fp-4,-0x1.432ee2de078p-3,-0x1.e13660ae578p-3,
+-0x1.54b5ad275fcp-2,-0x1.d0772c0effcp-2,-0x1.33463ce285ep-1,-0x1.8cdf75c411ep-1,
+-0x1.f67a2f8f43ep-1,-0x1.38cbceb585fp+0,-0x1.7fe39b6114fp+0,-0x1.d1535ba196fp+0,
+-0x1.16f887b81df8p+1,0x1.4f8a7894888p-3,0x1.d307a87d184p-2,0x1.686a2af2d02p-1,
+0x1.d248bc224e2p-1,0x1.146210684b1p+0,0x1.36b93892341p+0,0x1.50eda233da1p+0,
+0x1.63bbd883cd1p+0,0x1.6fd9264a351p+0,0x1.75f395e0d21p+0,0x1.76b1f132fc1p+0,
+0x1.72b3c1bda31p+0,0x1.6a91508f4f1p+0,0x1.5edba648201p+0,0x1.501c8b19ce1p+0,
+0x1.3ed686c7a91p+0,0x1.2b84e0a6991p+0,0x1.169b9f9d1e1p+0,0x1.00878a23501p+0,
+0x1.d35c4c85be2p-1,0x1.a4db732e262p-1,0x1.763a9299982p-1,0x1.48193445042p-1,
+0x1.1b0860d08a2p-1,0x1.df153ffef44p-2,0x1.8c27f170a84p-2,0x1.3e13e209904p-2,
+0x1.eb0e3846d88p-3,0x1.662550bcb88p-3,0x1.dcaa368381p-4,0x1.0897445f61p-4,
+0x1.43e7636844p-6,-0x1.26e81497bcp-6,-0x1.8f08ab413ep-5,-0x1.28d91f7c7fp-4,
+-0x1.6ea070868fp-4,-0x1.9a365d724fp-4,-0x1.ad6b01d9bfp-4,-0x1.aa82803d5fp-4,
+-0x1.943502042fp-4,-0x1.6daeb77bafp-4,-0x1.3a8fd7d7dfp-4,-0x1.fdd942667ep-5,
+-0x1.7e9ab11d9ep-5,-0x1.015c93a41ep-5,-0x1.21ff1f2bfcp-6,-0x1.ca62c2e1fp-8,
+-0x1.bcebcb378p-11,-0x1.e398c2b78p-11,-0x1.26754318f8p-7,-0x1.b912c5f7fcp-6,
+-0x1.d0a392161ep-5,-0x1.9b927225cfp-4,-0x1.488b9b681f8p-3,-0x1.e93253f96f8p-3,
+-0x1.5a5cd7572bcp-2,-0x1.d82bfd70cbcp-2,-0x1.385f62d84bep-1,-0x1.93752d9b97ep-1,
+-0x1.fed0756f69ep-1,-0x1.3dfc68ced8fp+0,-0x1.86422d2697fp+0,-0x1.d90bd440b9fp+0,
+-0x1.1b997586b778p+1,0x1.50354670d88p-3,0x1.d3f56547c04p-2,0x1.6921a23aa42p-1,
+0x1.d33617bce22p-1,0x1.14eec124151p+0,0x1.3757645d9e1p+0,0x1.519924db041p+0,
+0x1.6470edccd71p+0,0x1.709466443f1p+0,0x1.76b1f132fc1p+0,0x1.7770ad6b661p+0,
+0x1.737075a06d1p+0,0x1.6b49e065991p+0,0x1.5f8e402f0a1p+0,0x1.50c7a351781p+0,
+0x1.3f78d402331p+0,0x1.2c1d5857231p+0,0x1.17297246c81p+0,0x1.010a1fa83a1p+0,
+0x1.d44a3466522p-1,0x1.a5b1aeffba2p-1,0x1.76f9120e6c2p-1,0x1.48c03845582p-1,
+0x1.1b9874189e2p-1,0x1.e0091f7b1c4p-2,0x1.8cf19a55504p-2,0x1.3eb5cc2f384p-2,
+0x1.ec082ff5288p-3,0x1.66dba057088p-3,0x1.dd9cdae221p-4,0x1.091df46a01p-4,
+0x1.448c44cac4p-6,-0x1.277e33353cp-6,-0x1.8fd3cb2bfep-5,-0x1.29703b1ddfp-4,
+-0x1.6f5b1151efp-4,-0x1.9b072e15afp-4,-0x1.ae4599431fp-4,-0x1.ab5b9caabfp-4,
+-0x1.9502c4138fp-4,-0x1.6e68dd3b0fp-4,-0x1.3b2ff7d53fp-4,-0x1.fedccb193ep-5,
+-0x1.7f5d74045ep-5,-0x1.01df959adep-5,-0x1.2292bdf17cp-6,-0x1.cb4c1937fp-8,
+-0x1.bdce46e78p-11,-0x1.e48eee678p-11,-0x1.270b2743f8p-7,-0x1.b9f34c3d7cp-6,
+-0x1.d190174cdep-5,-0x1.9c63f3f92fp-4,-0x1.4932d9a4cf8p-3,-0x1.ea2b59681f8p-3,
+-0x1.5b0d276f03cp-2,-0x1.d91c584ca3cp-2,-0x1.38fe6589f7ep-1,-0x1.94428e04c3ep-1,
+-0x1.ffd47bf7d5ep-1,-0x1.3e9e47018efp+0,-0x1.8708d582adfp+0,-0x1.d9fca10e0ffp+0,
+-0x1.1c29d2a8f278p+1,0x1.4ca01582908p-3,0x1.cef8c87d5c4p-2,0x1.65487363322p-1,
+0x1.ce3b84d4902p-1,0x1.11fb44ffac1p+0,0x1.340609db251p+0,0x1.4e0029192b1p+0,
+0x1.60a48a894e1p+0,0x1.6ca6e5ae361p+0,0x1.72b3c1bda31p+0,0x1.737075a06d1p+0,
+0x1.6f7b27f2841p+0,0x1.676acf02f01p+0,0x1.5bcf30d3d11p+0,0x1.4d30e31a5f1p+0,
+0x1.3c114b3eea1p+0,0x1.28ea9e5cda1p+0,0x1.142fe142af1p+0,0x1.fc99d0e4022p-1,
+0x1.cf4cb03f002p-1,0x1.a1334865e82p-1,0x1.72fa208e7a2p-1,0x1.453f5f54a62p-1,
+0x1.1892caba8c2p-1,0x1.daeb9050f84p-2,0x1.88b6b8d9ec4p-2,0x1.3b505779544p-2,
+0x1.e6c9e6c9e08p-3,0x1.6308a53dc08p-3,0x1.d885e7d691p-4,0x1.064ab41071p-4,
+0x1.4116e31884p-6,-0x1.245814e77cp-6,-0x1.8b910bdf1ep-5,-0x1.2644ce296fp-4,
+-0x1.6b70e7847fp-4,-0x1.96a5e06c3fp-4,-0x1.a9afcc1aafp-4,-0x1.a6cdc2984fp-4,
+-0x1.90b1e0bc1fp-4,-0x1.6a81482b9fp-4,-0x1.37d41f5acfp-4,-0x1.f96b23185ep-5,
+-0x1.7b479da17ep-5,-0x1.fe40301ffcp-6,-0x1.1f7a0b7fbcp-6,-0x1.c6671d50fp-8,
+-0x1.b90e192f8p-11,-0x1.df6508af8p-11,-0x1.23e642d078p-7,-0x1.b53da30bbcp-6,
+-0x1.cc9a03a1fep-5,-0x1.97feeed7bfp-4,-0x1.45b0c7fc978p-3,-0x1.e4f22512e78p-3,
+-0x1.575a61c727cp-2,-0x1.d411ad5ac7cp-2,-0x1.35a8890da9ep-1,-0x1.8ff3b709b5ep-1,
+-0x1.fa603040a7ep-1,-0x1.3b391275b7fp+0,-0x1.82de12ee66fp+0,-0x1.d4ef9240a8fp+0,
+-0x1.19229cb7d6f8p+1,0x1.45538a79f08p-3,0x1.c4d002c00c4p-2,0x1.5d71643f8a2p-1,
+0x1.c416e64b682p-1,0x1.0bf8295e181p+0,0x1.2d43b27a511p+0,0x1.46abe440d71p+0,
+0x1.58e78c8d3a1p+0,0x1.64a67150221p+0,0x1.6a91508f4f1p+0,0x1.6b49e065991p+0,
+0x1.676acf02f01p+0,0x1.5f87c2ac5c1p+0,0x1.542d59bbfd1p+0,0x1.45e12aa10b1p+0,
+0x1.3521c3dfd61p+0,0x1.2266ac11c61p+0,0x1.0e2061e55b1p+0,0x1.f170b83c5a2p-1,
+0x1.c5221329d82p-1,0x1.980ba26ec02p-1,0x1.6ad62410d22p-1,0x1.3e1c463ffe2p-1,
+0x1.126aa756642p-1,0x1.d07fabb0a84p-2,0x1.8018a0e89c4p-2,0x1.34650c06044p-2,
+0x1.dc1b561d408p-3,0x1.5b3e38b9208p-3,0x1.ce277a7951p-4,0x1.0089435b31p-4,
+0x1.3a0b25d384p-6,-0x1.1dedd22c7cp-6,-0x1.82e2ed499ep-5,-0x1.1fcfbb86afp-4,
+-0x1.6377408dbfp-4,-0x1.8db981c57fp-4,-0x1.a05879e7efp-4,-0x1.9d86a25d8fp-4,
+-0x1.87e6f33d5fp-4,-0x1.628ce34cdfp-4,-0x1.30fc68000fp-4,-0x1.ee53eaf2dep-5,
+-0x1.72f4fd13fep-5,-0x1.f30dd2c4fcp-6,-0x1.192b2074bcp-6,-0x1.bc6e7aa4fp-8,
+-0x1.af6071cf8p-11,-0x1.d4e0014f8p-11,-0x1.1d7e7f7a78p-7,-0x1.aba56900bcp-6,
+-0x1.c27e8e747ep-5,-0x1.8f0afdd0ffp-4,-0x1.3e8b31d3378p-3,-0x1.da4dee85878p-3,
+-0x1.4fd1933f77cp-2,-0x1.c9cc454b17cp-2,-0x1.2edd02be51ep-1,-0x1.872cf5cb5dep-1,
+-0x1.ef439783cfep-1,-0x1.344e49ba4bfp+0,-0x1.7a60d2803afp+0,-0x1.caa54baffcfp+0,
+-0x1.12f7516860f8p+1,0x1.3ad1c847f88p-3,0x1.b6303630504p-2,0x1.52283d67ec2p-1,
+0x1.b57d1435aa2p-1,0x1.03509f91791p+0,0x1.2388e11f421p+0,0x1.3c1f0302281p+0,
+0x1.4dc3ebaebb1p+0,0x1.5921b3d0231p+0,0x1.5edba648201p+0,0x1.5f8e402f0a1p+0,
+0x1.5bcf30d3d11p+0,0x1.542d59bbfd1p+0,0x1.4930cea3ae1p+0,0x1.3b5ad57d9c1p+0,
+0x1.2b25e673171p+0,0x1.1905abe4071p+0,0x1.05670266ec1p+0,0x1.e15ff191bc2p-1,
+0x1.b67fa01b1a2p-1,0x1.8addf6de822p-1,0x1.5f1e40bdb42p-1,0x1.33d62d07a02p-1,
+0x1.098dcf78662p-1,0x1.c17f4072ac4p-2,0x1.73b0f7c1e04p-2,0x1.2a6f46e5c84p-2,
+0x1.ccbaf180488p-3,0x1.5007421a288p-3,0x1.bf3a718c61p-4,0x1.f080819882p-5,
+0x1.2fe6ac83c4p-6,-0x1.14b1cb7c3cp-6,-0x1.766432677ep-5,-0x1.168424739fp-4,
+-0x1.57fc4dcbafp-4,-0x1.80e12aff6fp-4,-0x1.92e62e68dfp-4,-0x1.902ba6f87fp-4,
+-0x1.7b3ec0354fp-4,-0x1.5719823ccfp-4,-0x1.2722d1c2ffp-4,-0x1.de5ce024bep-5,
+-0x1.66f9f617dep-5,-0x1.e2efb49cbcp-6,-0x1.101675c87cp-6,-0x1.ae13f913fp-8,
+-0x1.a171dfc78p-11,-0x1.c5bb67478p-11,-0x1.14461131f8p-7,-0x1.9dd5af147cp-6,
+-0x1.b3f1ec805ep-5,-0x1.8227c0c2efp-4,-0x1.34418387af8p-3,-0x1.cafc70beff8p-3,
+-0x1.44f9113f73cp-2,-0x1.bb0340c513cp-2,-0x1.2514f93bafep-1,-0x1.7a8ac4817bep-1,
+-0x1.df44cf1d0dep-1,-0x1.2a5940c52afp+0,-0x1.6e286fec09fp+0,-0x1.bbd544d3ebfp+0,
+-0x1.0a15ee8b8078p+1,0x1.2d96701e688p-3,0x1.a3c5766d084p-2,0x1.43f1ca39c82p-1,
+0x1.a319dbd9c62p-1,0x1.f0d4f9b60e2p-1,0x1.17481222b01p+0,0x1.2ed5a96ad61p+0,
+0x1.3fbcb9c6091p+0,0x1.4aa035b2711p+0,0x1.501c8b19ce1p+0,0x1.50c7a351781p+0,
+0x1.4d30e31a5f1p+0,0x1.45e12aa10b1p+0,0x1.3b5ad57d9c1p+0,0x1.2e19bab3ca1p+0,
+0x1.1e932cb2e51p+0,0x1.0d35f955d51p+0,0x1.f4d4d3c6342p-1,0x1.cd248619982p-1,
+0x1.a41189e1362p-1,0x1.7a45562f9e2p-1,0x1.505c58ee902p-1,0x1.26e5f6defc2p-1,
+0x1.fcc91732044p-2,0x1.ae9ad317e44p-2,0x1.6411b3fc984p-2,0x1.1de43a1b804p-2,
+0x1.b95da6bcb88p-3,0x1.41e7b6ba988p-3,0x1.ac6e6d7b41p-4,0x1.dba252be42p-5,
+0x1.2320ceb744p-6,-0x1.0910a948bcp-6,-0x1.66a7e141bep-5,-0x1.0acf6884bfp-4,
+-0x1.4987248acfp-4,-0x1.70b400868fp-4,-0x1.81f72191ffp-4,-0x1.7f59f60d9fp-4,
+-0x1.6b4e35a06fp-4,-0x1.48ade137efp-4,-0x1.1abb43081fp-4,-0x1.ca41dd16fep-5,
+-0x1.57e381061ep-5,-0x1.cea37bd93cp-6,-0x1.04a6e4ccfcp-6,-0x1.9c007ce5fp-8,
+-0x1.8fe651578p-11,-0x1.b2a968d78p-11,-0x1.08a9761af8p-7,-0x1.8c70f898fcp-6,
+-0x1.a19f4fde9ep-5,-0x1.71ecdc5a0fp-4,-0x1.274cca743f8p-3,-0x1.b7b1ea318f8p-3,
+-0x1.375079b63bcp-2,-0x1.a8649867dbcp-2,-0x1.18c3846a53ep-1,-0x1.6aa1ca7a9fep-1,
+-0x1.cb200c89f1ep-1,-0x1.1dcf20f31cfp+0,-0x1.5ec4b5831bfp+0,-0x1.a92dc8c4bdfp+0,
+-0x1.fdcde41c32fp+0,0x1.1e16a16fc08p-3,0x1.8e32c893744p-2,0x1.334bd8d7be2p-1,
+0x1.8d8fffb05c2p-1,0x1.d74c74d6242p-1,0x1.08edbb51eb1p+0,0x1.1f4572e6311p+0,
+0x1.2f4e22ad741p+0,0x1.39a25d595c1p+0,0x1.3ed686c7a91p+0,0x1.3f78d402331p+0,
+0x1.3c114b3eea1p+0,0x1.3521c3dfd61p+0,0x1.2b25e673171p+0,0x1.1e932cb2e51p+0,
+0x1.0fd8e185901p+0,0x1.fec041fb002p-1,0x1.db17b0b26a2p-1,0x1.b5718c068e2p-1,
+0x1.8e7af324cc2p-1,0x1.66d4a792b42p-1,0x1.3f130d2e062p-1,0x1.17be2a2cb22p-1,
+0x1.e2a34e39b04p-2,0x1.98799dc9904p-2,0x1.51c51d86044p-2,0x1.0f32ec9c6c4p-2,
+0x1.a2aeddd5108p-3,0x1.315c99fcf08p-3,0x1.9669d05af1p-4,0x1.c330b111a2p-5,
+0x1.142a9c0204p-6,-0x1.f6e2b7fbf8p-7,-0x1.543942ee5ep-5,-0x1.fa324b4a1ep-5,
+-0x1.3897be061fp-4,-0x1.5dc13255dfp-4,-0x1.6e21378e4fp-4,-0x1.6ba66fe7efp-4,
+-0x1.58a26ad9bfp-4,-0x1.37c9a5193fp-4,-0x1.0c33889a6fp-4,-0x1.b2b4d91f9ep-5,
+-0x1.46372ad4bep-5,-0x1.b6dcd3667cp-6,-0x1.ee834e5c78p-7,-0x1.86d406cafp-8,
+-0x1.7b5913ff8p-11,-0x1.9c52d37f8p-11,-0x1.f61eed1afp-8,-0x1.78113b3a3cp-6,
+-0x1.8c28e8053ep-5,-0x1.5ee9fa115fp-4,-0x1.181fb4ee678p-3,-0x1.a1191cc2b78p-3,
+-0x1.2750b31a8fcp-2,-0x1.92951cca2fcp-2,-0x1.0a55ad739dep-1,-0x1.57fedc1c29ep-1,
+-0x1.b3879d69dbep-1,-0x1.0f1ee907d1fp+0,-0x1.4cbddc3420fp+0,-0x1.9353f63b22fp+0,
+-0x1.e39ab3f207fp+0,0x1.0cc0f9ef408p-3,0x1.7612233f344p-2,0x1.20ad3a299e2p-1,
+0x1.757937643c2p-1,0x1.babdeac2042p-1,0x1.f1c097ddb62p-1,0x1.0ddd723d211p+0,
+0x1.1ced6c41641p+0,0x1.26a16f054c1p+0,0x1.2b84e0a6991p+0,0x1.2c1d5857231p+0,
+0x1.28ea9e5cda1p+0,0x1.2266ac11c61p+0,0x1.1905abe4071p+0,0x1.0d35f955d51p+0,
+0x1.fec041fb002p-1,0x1.dfcdc10ae02p-1,0x1.be4e4d584a2p-1,0x1.9af026886e2p-1,
+0x1.7655ee68ac2p-1,0x1.5116a8ee942p-1,0x1.2bbdbc37e62p-1,0x1.06caf08a922p-1,
+0x1.c564e0a9704p-2,0x1.7fb99059504p-2,0x1.3d4dcda1c44p-2,0x1.fd8874a0588p-3,
+0x1.89507904908p-3,0x1.1edbfd4c708p-3,0x1.7dc9bde9f1p-4,0x1.a7da106fa2p-5,
+0x1.036edbfe04p-6,-0x1.d86a3803f8p-7,-0x1.3f9be3905ep-5,-0x1.db86702c1ep-5,
+-0x1.25a6f7671fp-4,-0x1.488ffbf6dfp-4,-0x1.57f200bf4fp-4,-0x1.559daf78efp-4,
+-0x1.43c0a09abfp-4,-0x1.24e55b5a3fp-4,-0x1.f7e6ab56dep-5,-0x1.985de8819ep-5,
+-0x1.32731516bep-5,-0x1.9c456aea7cp-6,-0x1.d08cade478p-7,-0x1.6f25b3dafp-8,
+-0x1.645cd47f8p-11,-0x1.835713ff8p-11,-0x1.d7b24a2afp-8,-0x1.6147defe3cp-6,
+-0x1.7427e1c73ep-5,-0x1.49a6c8325fp-4,-0x1.07269246e78p-3,-0x1.87d34dcb378p-3,
+-0x1.156bec6acfcp-2,-0x1.7a30767a6fcp-2,-0x1.f464dd8b7bcp-2,-0x1.4326fae249ep-1,
+-0x1.9923e77dfbep-1,-0x1.fd62da5bc3ep-1,-0x1.38948b8b30fp+0,-0x1.7ae3bf9032fp+0,
+-0x1.c64d48e217fp+0,0x1.f3fb2b21d1p-4,0x1.5bf46e8a484p-2,0x1.0c85c1dc682p-1,
+0x1.5b662fd2662p-1,0x1.9bd4dd96ae2p-1,0x1.cf005960002p-1,0x1.f60c632c4c2p-1,
+0x1.0908f660591p+0,0x1.120f8cd4c11p+0,0x1.169b9f9d1e1p+0,0x1.17297246c81p+0,
+0x1.142fe142af1p+0,0x1.0e2061e55b1p+0,0x1.05670266ec1p+0,0x1.f4d4d3c6342p-1,
+0x1.db17b0b26a2p-1,0x1.be4e4d584a2p-1,0x1.9f258d44d42p-1,0x1.7e3f85cc382p-1,
+0x1.5c337e09d62p-1,0x1.398deee03e2p-1,0x1.16d082f9302p-1,0x1.e8e42d8b384p-2,
+0x1.a5bd70fb444p-2,0x1.64ef5041244p-2,0x1.2726aee9d84p-2,0x1.d9f5a821808p-3,
+0x1.6ddad4bf388p-3,0x1.0ad5001d188p-3,0x1.63221b9041p-4,0x1.8a42a1a842p-5,
+0x1.e2a41c9688p-7,-0x1.b76ed36978p-7,-0x1.294b9257bep-5,-0x1.ba5374df7ep-5,
+-0x1.112691c5cfp-4,-0x1.319fa4818fp-4,-0x1.3feeb9bcffp-4,-0x1.3dc40a589fp-4,
+-0x1.2d2640fb6fp-4,-0x1.10727a12efp-4,-0x1.d4b887a63ep-5,-0x1.7bdb3c6cfep-5,
+-0x1.1d0df5fc1ep-5,-0x1.7f7cf6c53cp-6,-0x1.b01ddcf1f8p-7,-0x1.5583bd95fp-8,
+-0x1.4b7b9ed78p-11,-0x1.684c36578p-11,-0x1.b6c3bce5fp-8,-0x1.489dbe44fcp-6,
+-0x1.5a2c67549ep-5,-0x1.32a2f9d50fp-4,-0x1.e98ea5937fp-4,-0x1.6c7846170f8p-3,
+-0x1.020d9d2cfbcp-2,-0x1.5fc925fe9bcp-2,-0x1.d175682767cp-2,-0x1.2c97555fffep-1,
+-0x1.7c9368a951ep-1,-0x1.d9d2aded99ep-1,-0x1.22c1d9b1cbfp+0,-0x1.606feabd6dfp+0,
+-0x1.a6959f6de2fp+0,0x1.cc5c1d12f1p-4,0x1.4061840d104p-2,0x1.ee7c8cc4984p-2,
+0x1.3fde8b0a0a2p-1,0x1.7b32174f522p-1,0x1.aa4f7f80e42p-1,0x1.ce4364eab02p-1,
+0x1.e81075d5d62p-1,0x1.f8af6d88a62p-1,0x1.00878a23501p+0,0x1.010a1fa83a1p+0,
+0x1.fc99d0e4022p-1,0x1.f170b83c5a2p-1,0x1.e15ff191bc2p-1,0x1.cd248619982p-1,
+0x1.b5718c068e2p-1,0x1.9af026886e2p-1,0x1.7e3f85cc382p-1,0x1.5ff4e6fc1c2p-1,
+0x1.409b943f7a2p-1,0x1.20b4e4bae22p-1,0x1.00b83c90142p-1,0x1.c22619bc004p-2,
+0x1.8451a7818c4p-2,0x1.48a638a36c4p-2,0x1.0fc2fd4ea04p-2,0x1.b4667f55108p-3,
+0x1.50dcc7b1c88p-3,0x1.eb5f9fd751p-4,0x1.46fd905f61p-4,0x1.6b04527e82p-5,
+0x1.bc64d51f88p-7,-0x1.949c1ae078p-7,-0x1.11bc61817ep-5,-0x1.97460b413ep-5,
+-0x1.f70264515ep-5,-0x1.19677e9c6fp-4,-0x1.26944b55dfp-4,-0x1.249590c57fp-4,
+-0x1.1548df724fp-4,-0x1.f5b6bff39ep-5,-0x1.af93a61ffep-5,-0x1.5dc122febep-5,
+-0x1.06771851dep-5,-0x1.61193010bcp-6,-0x1.8ddf90f8f8p-7,-0x1.3a7379e3fp-8,
+-0x1.3136de478p-11,-0x1.4bbee5c78p-11,-0x1.93fe9333fp-8,-0x1.2e9325c87cp-6,
+-0x1.3ebda03a5ep-5,-0x1.1a5646dfefp-4,-0x1.c2c30f7c5fp-4,-0x1.4f9651e57f8p-3,
+-0x1.db350add678p-3,-0x1.43e883d453cp-2,-0x1.ac92b4aa9fcp-2,-0x1.14c5473f1bep-1,
+-0x1.5e6ab6f0adep-1,-0x1.b4464ab5f5ep-1,-0x1.0bb74b6ed9fp+0,-0x1.4482115cbbfp+0,
+-0x1.8518b44ed0fp+0,0x1.a35afa9ce1p-4,0x1.23d82ede4c4p-2,0x1.c27141e5544p-2,
+0x1.2360e04c882p-1,0x1.596ba9c5502p-1,0x1.8456c17fc22p-1,0x1.a516db78ce2p-1,
+0x1.bc979b87942p-1,0x1.cbbb955d642p-1,0x1.d35c4c85be2p-1,0x1.d44a3466522p-1,
+0x1.cf4cb03f002p-1,0x1.c5221329d82p-1,0x1.b67fa01b1a2p-1,0x1.a41189e1362p-1,
+0x1.8e7af324cc2p-1,0x1.7655ee68ac2p-1,0x1.5c337e09d62p-1,0x1.409b943f7a2p-1,
+0x1.240d131af82p-1,0x1.06fdcc87e02p-1,0x1.d3b50497e44p-2,0x1.9a0dcc0e3c4p-2,
+0x1.61bb3267084p-2,0x1.2b605a4ae84p-2,0x1.ef1c8c2db88p-3,0x1.8d87afb8888p-3,
+0x1.32dba2c1c08p-3,0x1.bf9b507b41p-4,0x1.29dd851251p-4,0x1.4aaecda862p-5,
+0x1.94cfc0ef08p-7,-0x1.70922f10f8p-7,-0x1.f2b54caf3cp-6,-0x1.72ff61db5ep-5,
+-0x1.ca34c3097ep-5,-0x1.0056e87c7fp-4,-0x1.0c574a8eefp-4,-0x1.0a860da48fp-4,
+-0x1.f92c71a8bep-5,-0x1.c906a8c7bep-5,-0x1.8922d38e1ep-5,-0x1.3e9a0740dep-5,
+-0x1.de2cb703fcp-6,-0x1.41a5d4a0fcp-6,-0x1.6a6f402178p-7,-0x1.1e715b14fp-8,
+-0x1.16075d4f8p-11,-0x1.2e326ccf8p-11,-0x1.7002af64fp-8,-0x1.139fd49cbcp-6,
+-0x1.2259b1627ep-5,-0x1.01306c07ffp-4,-0x1.9a9cc6cd6fp-4,-0x1.31b240e9078p-3,
+-0x1.b0e15b8a6f8p-3,-0x1.270ec070d7cp-2,-0x1.86665f8e63cp-2,-0x1.f83cb2807bcp-2,
+-0x1.3f34807aafep-1,-0x1.8d6a597377ep-1,-0x1.e7bda84d55ep-1,-0x1.279aa0a86cfp+0,
+-0x1.6270847631fp+0,0x1.79a0f12c21p-4,0x1.06ce2b931c4p-2,0x1.959f5b14244p-2,
+0x1.0662bc0d702p-1,0x1.370ceeb0382p-1,0x1.5db2c9852a2p-1,0x1.7b30a755362p-1,
+0x1.905ab99f7c2p-1,0x1.9dfd08994c2p-1,0x1.a4db732e262p-1,0x1.a5b1aeffba2p-1,
+0x1.a1334865e82p-1,0x1.980ba26ec02p-1,0x1.8addf6de822p-1,0x1.7a45562f9e2p-1,
+0x1.66d4a792b42p-1,0x1.5116a8ee942p-1,0x1.398deee03e2p-1,0x1.20b4e4bae22p-1,
+0x1.06fdcc87e02p-1,0x1.d9a57e0d904p-2,0x1.a52b575ab44p-2,0x1.7140b14f0c4p-2,
+0x1.3e88c5aed84p-2,0x1.0d967baab84p-2,0x1.bdd8cfbf588p-3,0x1.65f998ae288p-3,
+0x1.1453310d608p-3,0x1.9311a54281p-4,0x1.0c3a240d91p-4,0x1.29c77acee2p-5,
+0x1.6c882f6908p-7,-0x1.4be5c096f8p-7,-0x1.c115f2623cp-6,-0x1.4e1523e4dep-5,
+-0x1.9c9d197afep-5,-0x1.cdaa97ca7ep-5,-0x1.e347f1475ep-5,-0x1.e0020d029ep-5,
+-0x1.c6e866aa3ep-5,-0x1.9b8d0e893ep-5,-0x1.6204a9879ep-5,-0x1.1ee6712a5ep-5,
+-0x1.ae986726fcp-6,-0x1.21a4a703fcp-6,-0x1.465f214778p-7,-0x1.01f0efe0fp-8,
+-0x1.f4ba8b5fp-12,-0x1.1020b52f8p-11,-0x1.4b648830fp-8,-0x1.f065f85f78p-7,
+-0x1.0575bd13fep-5,-0x1.cf3255a17ep-5,-0x1.71c172022fp-4,-0x1.13476647678p-3,
+-0x1.85cece9acf8p-3,-0x1.09b2e44107cp-2,-0x1.5f8de7d593cp-2,-0x1.c6108275abcp-2,
+-0x1.1f718b8fc7ep-1,-0x1.65df2db28fep-1,-0x1.b735abb5edep-1,-0x1.0a30d97b38fp+0,
+-0x1.3f2c0d0d3dfp+0,0x1.4fca2aaeb1p-4,0x1.d360507e008p-3,0x1.68ae95d4884p-2,
+0x1.d2a13fe5044p-2,0x1.149687a5ca2p-1,0x1.36f434a2dc2p-1,0x1.512d97b9a82p-1,
+0x1.63ff5feb4e2p-1,0x1.701efa6a1e2p-1,0x1.763a9299982p-1,0x1.76f9120e6c2p-1,
+0x1.72fa208e7a2p-1,0x1.6ad62410d22p-1,0x1.5f1e40bdb42p-1,0x1.505c58ee902p-1,
+0x1.3f130d2e062p-1,0x1.2bbdbc37e62p-1,0x1.16d082f9302p-1,0x1.00b83c90142p-1,
+0x1.d3b50497e44p-2,0x1.a52b575ab44p-2,0x1.76819ccc184p-2,0x1.48577cb1f04p-2,
+0x1.1b3e1b347c4p-2,0x1.df7031bcb88p-3,0x1.8c732539208p-3,0x1.3e50437cf08p-3,
+0x1.eb6b6fd751p-4,0x1.66694d5b11p-4,0x1.dd04b2be42p-5,0x1.08c97e8e02p-5,
+0x1.4424dffd88p-7,-0x1.2720100278p-7,-0x1.8f546ae3fcp-6,-0x1.29117941bep-5,
+-0x1.6ee60949dep-5,-0x1.9a843c515ep-5,-0x1.adbc860c3ep-5,-0x1.aad3771b7ep-5,
+-0x1.9481bd0d1ep-5,-0x1.6df4225c1ep-5,-0x1.3acb8e707ep-5,-0x1.fe3a0b3e7cp-6,
+-0x1.7ee35254bcp-6,-0x1.018d6e81bcp-6,-0x1.22362bfaf8p-7,-0x1.cab9c6cfep-9,
+-0x1.bd4040cfp-12,-0x1.e3f48fcfp-12,-0x1.26ad28b7fp-8,-0x1.b9668092f8p-7,
+-0x1.d0fbc5e5bcp-6,-0x1.9be093185ep-5,-0x1.48c9f98c9fp-4,-0x1.e98f31333fp-4,
+-0x1.5a9e9757878p-3,-0x1.d8859f52c78p-3,-0x1.389aaf0cafcp-2,-0x1.93c1c43a47cp-2,
+-0x1.ff316d346bcp-2,-0x1.3e38c5cd7dep-1,-0x1.868c4255bbep-1,-0x1.d965a0a07fep-1,
+-0x1.1bcf4b7514fp+0,0x1.2665cd9411p-4,0x1.99c388e7b08p-3,0x1.3c38b534604p-2,
+0x1.991c05a75c4p-2,0x1.e4fcbc33ec4p-2,0x1.109f92d3c82p-1,0x1.279d6a9b142p-1,
+0x1.381d523cfa2p-1,0x1.42be59b9ca2p-1,0x1.48193445042p-1,0x1.48c03845582p-1,
+0x1.453f5f54a62p-1,0x1.3e1c463ffe2p-1,0x1.33d62d07a02p-1,0x1.26e5f6defc2p-1,
+0x1.17be2a2cb22p-1,0x1.06caf08a922p-1,0x1.e8e42d8b384p-2,0x1.c22619bc004p-2,
+0x1.9a0dcc0e3c4p-2,0x1.7140b14f0c4p-2,0x1.48577cb1f04p-2,0x1.1fde27d0c84p-2,
+0x1.f0a7e557a88p-3,0x1.a456c753688p-3,0x1.5b948f2ed08p-3,0x1.17136350a08p-3,
+0x1.aed7edd8b1p-4,0x1.3a3b140471p-4,0x1.a237a57d02p-5,0x1.d04b74e984p-6,
+0x1.1c30022888p-7,-0x1.02beedd778p-7,-0x1.5e1af3167cp-6,-0x1.04730682fep-5,
+-0x1.41abfbf71ep-5,-0x1.67e9c04e9ep-5,-0x1.78c386bd7ep-5,-0x1.76364f44bep-5,
+-0x1.62a4e6b25ep-5,-0x1.40d7e6a15ep-5,-0x1.13fdb579bep-5,-0x1.bf550ce0fcp-6,
+-0x1.4fb0b30f3cp-6,-0x1.c39bee3878p-7,-0x1.fce030fffp-8,-0x1.922dfa63ep-9,
+-0x1.865dab6fp-12,-0x1.a84c9a6fp-12,-0x1.025a3081fp-8,-0x1.82fd6e17f8p-7,
+-0x1.97aa80003cp-6,-0x1.691b26b59ep-5,-0x1.204287d53fp-4,-0x1.ad3663d7dfp-4,
+-0x1.2fe47a18d78p-3,-0x1.9e46760c178p-3,-0x1.1211f949d7cp-2,-0x1.61fc97d86fcp-2,
+-0x1.c02df04c13cp-2,-0x1.16fecaec51ep-1,-0x1.5667eaa5cfep-1,-0x1.9f0ada8613ep-1,
+-0x1.f1a67a8d7dep-1,0x1.fbebf99a82p-5,0x1.617b2283c88p-3,0x1.10c981cbec4p-2,
+0x1.60eaa176284p-2,0x1.a25f46bdb84p-2,0x1.d65acdf81c4p-2,0x1.fe059953344p-2,
+0x1.0d3e886aa02p-1,0x1.1669d12e702p-1,0x1.1b0860d08a2p-1,0x1.1b9874189e2p-1,
+0x1.1892caba8c2p-1,0x1.126aa756642p-1,0x1.098dcf78662p-1,0x1.fcc91732044p-2,
+0x1.e2a34e39b04p-2,0x1.c564e0a9704p-2,0x1.a5bd70fb444p-2,0x1.8451a7818c4p-2,
+0x1.61bb3267084p-2,0x1.3e88c5aed84p-2,0x1.1b3e1b347c4p-2,0x1.f0a7e557a88p-3,
+0x1.ac702342408p-3,0x1.6a9a86f2008p-3,0x1.2bd6b2e0e88p-3,0x1.e17caa7371p-4,
+0x1.73aa4fafe1p-4,0x1.0f11e08fa1p-4,0x1.68c5ff1962p-5,0x1.90859a0a44p-6,
+0x1.ea4e6ae41p-8,-0x1.be69751bfp-8,-0x1.2e044df5bcp-6,-0x1.c159d9cd3cp-6,
+-0x1.157d22e0bep-5,-0x1.367a3ca03ep-5,-0x1.45037f191ep-5,-0x1.42d0007c5ep-5,
+-0x1.31eea837fep-5,-0x1.14c62ef6fep-5,-0x1.dc2a3d42bcp-6,-0x1.81e3a4b83cp-6,
+-0x1.2194ed127cp-6,-0x1.8594231ef8p-7,-0x1.b6fabf9cfp-8,-0x1.5af0425dep-9,
+-0x1.50bf5a3fp-12,-0x1.6e05193fp-12,-0x1.bdbba6fdep-9,-0x1.4dd5d1e678p-7,
+-0x1.5fabdd337cp-6,-0x1.3781b0573ep-5,-0x1.f15512761ep-5,-0x1.72421f7bafp-4,
+-0x1.0626cc463f8p-3,-0x1.655f6d557f8p-3,-0x1.d8d9da59978p-3,-0x1.315d7787e3cp-2,
+-0x1.829ebdc247cp-2,-0x1.e1592209d7cp-2,-0x1.2760005a09ep-1,-0x1.6608d81f0dep-1,
+-0x1.ad4bc0a657ep-1,0x1.addfaf9982p-5,0x1.2b2a226f888p-3,0x1.cdbd937b988p-3,
+0x1.2aafd5ca084p-2,0x1.6215a149984p-2,0x1.8e144dd1fc4p-2,0x1.afa6b2a1144p-2,
+0x1.c7be5c9d204p-2,0x1.d7438e54c04p-2,0x1.df153ffef44p-2,0x1.e0091f7b1c4p-2,
+0x1.daeb9050f84p-2,0x1.d07fabb0a84p-2,0x1.c17f4072ac4p-2,0x1.ae9ad317e44p-2,
+0x1.98799dc9904p-2,0x1.7fb99059504p-2,0x1.64ef5041244p-2,0x1.48a638a36c4p-2,
+0x1.2b605a4ae84p-2,0x1.0d967baab84p-2,0x1.df7031bcb88p-3,0x1.a456c753688p-3,
+0x1.6a9a86f2008p-3,0x1.32e2aac1c08p-3,0x1.fb87b07951p-4,0x1.9780405af1p-4,
+0x1.3a8dfd5f61p-4,0x1.cad56cbe42p-5,0x1.315621a862p-5,0x1.52fa236844p-6,
+0x1.9ef712dc1p-8,-0x1.79d0cd23fp-8,-0x1.ff37892f78p-7,-0x1.7c4d94af3cp-6,
+-0x1.d5b2ee837cp-6,-0x1.06c4e1413ep-5,-0x1.1312534a1ep-5,-0x1.11356b0d5ep-5,
+-0x1.02ec18f8fep-5,-0x1.d47d406ffcp-6,-0x1.92ff2d64bcp-6,-0x1.4697ca1a3cp-6,
+-0x1.ea2b1aa8f8p-7,-0x1.49b726a2f8p-7,-0x1.73867724fp-8,-0x1.25a09f6dep-9,
+-0x1.1d009abfp-12,-0x1.35c6d9bfp-12,-0x1.793db40dep-9,-0x1.1a89a1aa78p-7,
+-0x1.29a20cf57cp-6,-0x1.07a3d9783ep-5,-0x1.a4e958271ep-5,-0x1.395d26042fp-4,
+-0x1.bbbce8acffp-4,-0x1.2e7555c5bf8p-3,-0x1.903127bdd78p-3,-0x1.027137ae03cp-2,
+-0x1.4736233667cp-2,-0x1.97622db5f7cp-2,-0x1.f3f978c233cp-2,-0x1.2f04b8241dep-1,
+-0x1.6b54654667ep-1,0x1.6376f50d22p-5,0x1.eec2e189e1p-4,0x1.7dd0c16e008p-3,
+0x1.edf89efff88p-3,0x1.24cb4df48c4p-2,0x1.492c76a2304p-2,0x1.64ef356cc84p-2,
+0x1.78db478e944p-2,0x1.85b0bb98344p-2,0x1.8c27f170a84p-2,0x1.8cf19a55504p-2,
+0x1.88b6b8d9ec4p-2,0x1.8018a0e89c4p-2,0x1.73b0f7c1e04p-2,0x1.6411b3fc984p-2,
+0x1.51c51d86044p-2,0x1.3d4dcda1c44p-2,0x1.2726aee9d84p-2,0x1.0fc2fd4ea04p-2,
+0x1.ef1c8c2db88p-3,0x1.bdd8cfbf588p-3,0x1.8c732539208p-3,0x1.5b948f2ed08p-3,
+0x1.2bd6b2e0e88p-3,0x1.fb87b07951p-4,0x1.a3add3b821p-4,0x1.50f6ea0bc1p-4,
+0x1.041b535b31p-4,0x1.7b6969cde2p-5,0x1.f8f7e52404p-6,0x1.184d41d384p-6,
+0x1.5722fb791p-8,-0x1.386ae486fp-8,-0x1.a6ba4c58f8p-7,-0x1.3a7972dbfcp-6,
+-0x1.846574643cp-6,-0x1.b291ea933cp-6,-0x1.c6ea7fd0fcp-6,-0x1.c3d5c91f7cp-6,
+-0x1.ac35461abcp-6,-0x1.836560f8bcp-6,-0x1.4d3d6e897cp-6,-0x1.0e0fae36fcp-6,
+-0x1.9552940a78p-7,-0x1.10a4ad2478p-7,-0x1.33374c57fp-8,-0x1.e59a9627cp-10,
+-0x1.d756f1dep-13,-0x1.0027e7efp-12,-0x1.37f141b3ep-9,-0x1.d3436f87fp-8,
+-0x1.ec3a72ec78p-7,-0x1.b402aa613cp-6,-0x1.5c0dc1557ep-5,-0x1.031f403d5fp-4,
+-0x1.6eedd39f2fp-4,-0x1.f4355fc5afp-4,-0x1.4aebb2266f8p-3,-0x1.ab6a0dbb9f8p-3,
+-0x1.0e929e8b73cp-2,-0x1.50de0c0003cp-2,-0x1.9d6e69c8ffcp-2,-0x1.f522811d87cp-2,
+-0x1.2c7064ef2dep-1,0x1.1d67fae062p-5,0x1.8d3fb13581p-4,0x1.32903fddd08p-3,
+0x1.8c9d4bb2c88p-3,0x1.d62cbd2fe88p-3,0x1.084bffa8184p-2,0x1.1e961379b04p-2,
+0x1.2e94f96efc4p-2,0x1.38e2e5dc9c4p-2,0x1.3e13e209904p-2,0x1.3eb5cc2f384p-2,
+0x1.3b505779544p-2,0x1.34650c06044p-2,0x1.2a6f46e5c84p-2,0x1.1de43a1b804p-2,
+0x1.0f32ec9c6c4p-2,0x1.fd8874a0588p-3,0x1.d9f5a821808p-3,0x1.b4667f55108p-3,
+0x1.8d87afb8888p-3,0x1.65f998ae288p-3,0x1.3e50437cf08p-3,0x1.17136350a08p-3,
+0x1.e17caa7371p-4,0x1.9780405af1p-4,0x1.50f6ea0bc1p-4,0x1.0e8d5d0361p-4,
+0x1.a1af4511a2p-5,0x1.30a22f5922p-5,0x1.9571b52284p-6,0x1.c21d400408p-7,
+0x1.138204131p-8,-0x1.f5afb7d9ep-9,-0x1.53698ffbf8p-7,-0x1.f8fd45baf8p-7,
+-0x1.37d8e94dbcp-6,-0x1.5cebaddcbcp-6,-0x1.6d41b3f27cp-6,-0x1.6ac86fd0fcp-6,
+-0x1.57d006943cp-6,-0x1.370b4e323cp-6,-0x1.0b8fcd7afcp-6,-0x1.b1ab7830f8p-7,
+-0x1.4570051d78p-7,-0x1.b5d0e8eefp-8,-0x1.ed556abbep-9,-0x1.85e56f3fcp-10,
+-0x1.7a717e9ep-13,-0x1.9b571c9ep-13,-0x1.f4ec647fcp-10,-0x1.772ba68dfp-8,
+-0x1.8b370f3f78p-7,-0x1.5e13c06abcp-6,-0x1.1774b2863ep-5,-0x1.a01a7bb37ep-5,
+-0x1.269c6a8d8fp-4,-0x1.919f58440fp-4,-0x1.09b3160c9f8p-3,-0x1.572cdbafcf8p-3,
+-0x1.b27dbbd0178p-3,-0x1.0e7965a69bcp-2,-0x1.4bf2ba9117cp-2,-0x1.925dbd329fcp-2,
+-0x1.e2737923f3cp-2,0x1.b89dd60284p-6,0x1.32a41008f1p-4,0x1.d947989d11p-4,
+0x1.3226b4f8008p-3,0x1.6aeee993208p-3,0x1.98070beae88p-3,0x1.ba703803188p-3,
+0x1.d3220418308p-3,0x1.e30a809f708p-3,0x1.eb0e3846d88p-3,0x1.ec082ff5288p-3,
+0x1.e6c9e6c9e08p-3,0x1.dc1b561d408p-3,0x1.ccbaf180488p-3,0x1.b95da6bcb88p-3,
+0x1.a2aeddd5108p-3,0x1.89507904908p-3,0x1.6ddad4bf388p-3,0x1.50dcc7b1c88p-3,
+0x1.32dba2c1c08p-3,0x1.1453310d608p-3,0x1.eb6b6fd751p-4,0x1.aed7edd8b1p-4,
+0x1.73aa4fafe1p-4,0x1.3a8dfd5f61p-4,0x1.041b535b31p-4,0x1.a1af4511a2p-5,
+0x1.426a607e82p-5,0x1.d64cd91c04p-6,0x1.38f78b6844p-6,0x1.5b72c51f88p-7,
+0x1.a955d8342p-9,-0x1.8341e7cbep-9,-0x1.05ff0ae078p-7,-0x1.85ce992f78p-7,
+-0x1.e16fddc7f8p-7,-0x1.0d55f702fcp-6,-0x1.19f21ddcbcp-6,-0x1.18094a933cp-6,
+-0x1.096492827cp-6,-0x1.e0327280f8p-7,-0x1.9d11613a78p-7,-0x1.4ec1314578p-7,
+-0x1.f66afe53fp-8,-0x1.51f487c7fp-8,-0x1.7ccf538dep-9,-0x1.2cf72063cp-10,
+-0x1.241fedbep-13,-0x1.3d84abbep-13,-0x1.82ab21a3cp-10,-0x1.21992ff6fp-8,
+-0x1.31122e2bf8p-7,-0x1.0e3a81b0fcp-6,-0x1.af6e2856bcp-6,-0x1.4131eae49ep-5,
+-0x1.c6d3c1823ep-5,-0x1.360455cf9fp-4,-0x1.9a3169f9cfp-4,-0x1.08e69f15178p-3,
+-0x1.4f637f6cdf8p-3,-0x1.a1907207ff8p-3,-0x1.003c0c58bbcp-2,-0x1.36974d7dc3cp-2,
+-0x1.7468d31fd7cp-2,0x1.415bd0c184p-6,0x1.bf4a404962p-5,0x1.592e5eb0d1p-4,
+0x1.be9365c7c1p-4,0x1.08b383b7008p-3,0x1.299718dcc88p-3,0x1.42aff768f88p-3,
+0x1.54b2b278108p-3,0x1.604ceb2f508p-3,0x1.662550bcb88p-3,0x1.66dba057088p-3,
+0x1.6308a53dc08p-3,0x1.5b3e38b9208p-3,0x1.5007421a288p-3,0x1.41e7b6ba988p-3,
+0x1.315c99fcf08p-3,0x1.1edbfd4c708p-3,0x1.0ad5001d188p-3,0x1.eb5f9fd751p-4,
+0x1.bf9b507b41p-4,0x1.9311a54281p-4,0x1.66694d5b11p-4,0x1.3a3b140471p-4,
+0x1.0f11e08fa1p-4,0x1.cad56cbe42p-5,0x1.7b6969cde2p-5,0x1.30a22f5922p-5,
+0x1.d64cd91c04p-6,0x1.5702117b04p-6,0x1.c8848d6e88p-7,0x1.fad09ffb1p-8,
+0x1.3636a62c2p-9,-0x1.1a7119d3ep-9,-0x1.7e2b0004fp-8,-0x1.1c4d229178p-7,
+-0x1.5f216d09f8p-7,-0x1.88dfbdc7f8p-7,-0x1.9b44929b78p-7,-0x1.987b88c878p-7,
+-0x1.831f5d06f8p-7,-0x1.5e39eb82f8p-7,-0x1.2d442fdc78p-7,-0x1.e84c8a4efp-8,
+-0x1.6e6ecbd7fp-8,-0x1.ecf7b097ep-9,-0x1.15bd4515ep-9,-0x1.b702e2e78p-11,
+-0x1.aa1d9c7cp-14,-0x1.cf28187cp-14,-0x1.1a0322b3cp-10,-0x1.a66e3975ep-9,
+-0x1.bd0008dbfp-8,-0x1.8a2d1c23f8p-7,-0x1.3aa8a547bcp-6,-0x1.d485121a3cp-6,
+-0x1.4bb91742bep-5,-0x1.c436f21fbep-5,-0x1.2b2b6b2e0fp-4,-0x1.8267a4466fp-4,
+-0x1.e9394a91ffp-4,-0x1.308bb41c1f8p-3,-0x1.75c375a7978p-3,-0x1.c50d52eda78p-3,
+-0x1.0f9cd373e7cp-2,0x1.abb43bcb88p-7,0x1.29a7934582p-5,0x1.cb68f2a1c2p-5,
+0x1.292de4a6d1p-4,0x1.604c1b7111p-4,0x1.8c11ef25a1p-4,0x1.ad78f2e401p-4,
+0x1.c5717b7531p-4,0x1.d4e29f4bb1p-4,0x1.dcaa368381p-4,0x1.dd9cdae221p-4,
+0x1.d885e7d691p-4,0x1.ce277a7951p-4,0x1.bf3a718c61p-4,0x1.ac6e6d7b41p-4,
+0x1.9669d05af1p-4,0x1.7dc9bde9f1p-4,0x1.63221b9041p-4,0x1.46fd905f61p-4,
+0x1.29dd851251p-4,0x1.0c3a240d91p-4,0x1.dd04b2be42p-5,0x1.a237a57d02p-5,
+0x1.68c5ff1962p-5,0x1.315621a862p-5,0x1.f8f7e52404p-6,0x1.9571b52284p-6,
+0x1.38f78b6844p-6,0x1.c8848d6e88p-7,0x1.2fcb98ef08p-7,0x1.514422dc1p-8,
+0x1.9cdee29c4p-10,-0x1.77e89d63cp-10,-0x1.fca2fa47ep-9,-0x1.7a622e21fp-8,
+-0x1.d3540522fp-8,-0x1.0571592f78p-7,-0x1.11aee5baf8p-7,-0x1.0fd465b7f8p-7,
+-0x1.019d895e78p-7,-0x1.d21fe734fp-8,-0x1.90f67417fp-8,-0x1.44f1ca0dfp-8,
+-0x1.e7b1be4dep-9,-0x1.480d1db5ep-9,-0x1.71a66827cp-10,-0x1.242537df8p-11,
+-0x1.1b90583cp-14,-0x1.3436943cp-14,-0x1.7756425f8p-11,-0x1.191c8e73ep-9,
+-0x1.2821786afp-8,-0x1.064f314b78p-7,-0x1.a2c978eef8p-7,-0x1.37c83df1fcp-6,
+-0x1.b97f8ad13cp-6,-0x1.2cee85159ep-5,-0x1.8e2c0e37fep-5,-0x1.012346da5fp-4,
+-0x1.458f568eefp-4,-0x1.9553c9592fp-4,-0x1.f17370af1fp-4,-0x1.2d7d2e2e9f8p-3,
+-0x1.697eed43478p-3,0x1.dad39d751p-8,0x1.4a72ea5a84p-6,0x1.fe06980304p-6,
+0x1.49ebd3b162p-5,0x1.871ca4b5e2p-5,0x1.b7b5147b02p-5,0x1.dcca355fc2p-5,
+0x1.f766d6b622p-5,0x1.0445c26191p-4,0x1.0897445f61p-4,0x1.091df46a01p-4,
+0x1.064ab41071p-4,0x1.0089435b31p-4,0x1.f080819882p-5,0x1.dba252be42p-5,
+0x1.c330b111a2p-5,0x1.a7da106fa2p-5,0x1.8a42a1a842p-5,0x1.6b04527e82p-5,
+0x1.4aaecda862p-5,0x1.29c77acee2p-5,0x1.08c97e8e02p-5,0x1.d04b74e984p-6,
+0x1.90859a0a44p-6,0x1.52fa236844p-6,0x1.184d41d384p-6,0x1.c21d400408p-7,
+0x1.5b72c51f88p-7,0x1.fad09ffb1p-8,0x1.514422dc1p-8,0x1.766cb8342p-9,
+0x1.ca5be4288p-11,-0x1.a1531bd78p-11,-0x1.1a5687cbep-9,-0x1.a4127a47ep-9,
+-0x1.03688004fp-8,-0x1.223f55c0fp-8,-0x1.2fd61ff7fp-8,-0x1.2dc758b1fp-8,
+-0x1.1dff925efp-8,-0x1.02bd77d6fp-8,-0x1.bd2398b3ep-9,-0x1.68bed71fep-9,
+-0x1.0eb69311ep-9,-0x1.6c31caf3cp-10,-0x1.9a60605f8p-11,-0x1.44552bdfp-12,
+-0x1.3ace4178p-15,-0x1.562bb978p-15,-0x1.a0b0a0dfp-12,-0x1.38154cefcp-10,
+-0x1.48c1d499ep-9,-0x1.23359ef8fp-8,-0x1.d0ed595ffp-8,-0x1.5a220d04f8p-7,
+-0x1.ea23fcf378p-7,-0x1.4e164a93bcp-6,-0x1.ba0a7d407cp-6,-0x1.1d77d784fep-5,
+-0x1.696dbf4a1ep-5,-0x1.c1fc084e9ep-5,-0x1.142103ff3fp-4,-0x1.4eb4ab695fp-4,
+-0x1.9152e828afp-4,0x1.22a248e02p-9,0x1.948670d51p-8,0x1.382dc36b88p-7,
+0x1.93e111d308p-7,0x1.dec9724508p-7,0x1.0d2351b8c4p-6,0x1.23d5ea0a44p-6,
+0x1.341fd17b04p-6,0x1.3e9e0f7504p-6,0x1.43e7636844p-6,0x1.448c44cac4p-6,
+0x1.4116e31884p-6,0x1.3a0b25d384p-6,0x1.2fe6ac83c4p-6,0x1.2320ceb744p-6,
+0x1.142a9c0204p-6,0x1.036edbfe04p-6,0x1.e2a41c9688p-7,0x1.bc64d51f88p-7,
+0x1.94cfc0ef08p-7,0x1.6c882f6908p-7,0x1.4424dffd88p-7,0x1.1c30022888p-7,
+0x1.ea4e6ae41p-8,0x1.9ef712dc1p-8,0x1.5722fb791p-8,0x1.138204131p-8,
+0x1.a955d8342p-9,0x1.3636a62c2p-9,0x1.9cdee29c4p-10,0x1.ca5be4288p-11,
+0x1.188de801p-12,-0x1.fee02ffep-13,-0x1.59a11bd78p-11,-0x1.011e9d63cp-10,
+-0x1.3d8f33a7cp-10,-0x1.634fcf97cp-10,-0x1.73f26fb3cp-10,-0x1.716d921bcp-10,
+-0x1.5e1c348fcp-10,-0x1.3cbdd46fcp-10,-0x1.10766ebbcp-10,-0x1.b99d00278p-11,
+-0x1.4b66096f8p-11,-0x1.bdd5e21fp-12,-0x1.f65eb81ep-13,-0x1.8d09b4bcp-14,
+-0x1.81600fep-17,-0x1.a2dfefep-17,-0x1.fe1948bcp-14,-0x1.7e0adf0fp-12,
+-0x1.9274458f8p-11,-0x1.647d4e77cp-10,-0x1.1c9319a9ep-9,-0x1.a7b9a4bdep-9,
+-0x1.2c01e22bfp-8,-0x1.98fa9a13fp-8,-0x1.0e90fbeb78p-7,-0x1.5d760c8e78p-7,
+-0x1.ba731dbaf8p-7,-0x1.136daf167cp-6,-0x1.5207464a3cp-6,-0x1.99bc7bcabcp-6,
+-0x1.eb49bee3fcp-6,-0x1.089d771fep-9,-0x1.704f6f2afp-8,-0x1.1c3b2c9478p-7,
+-0x1.6fb8de2cf8p-7,-0x1.b3ec7dbaf8p-7,-0x1.ea164c8e78p-7,-0x1.09b58df5bcp-6,
+-0x1.188a2684fcp-6,-0x1.2217e88afcp-6,-0x1.26e81497bcp-6,-0x1.277e33353cp-6,
+-0x1.245814e77cp-6,-0x1.1dedd22c7cp-6,-0x1.14b1cb7c3cp-6,-0x1.0910a948bcp-6,
+-0x1.f6e2b7fbf8p-7,-0x1.d86a3803f8p-7,-0x1.b76ed36978p-7,-0x1.949c1ae078p-7,
+-0x1.70922f10f8p-7,-0x1.4be5c096f8p-7,-0x1.2720100278p-7,-0x1.02beedd778p-7,
+-0x1.be69751bfp-8,-0x1.79d0cd23fp-8,-0x1.386ae486fp-8,-0x1.f5afb7d9ep-9,
+-0x1.8341e7cbep-9,-0x1.1a7119d3ep-9,-0x1.77e89d63cp-10,-0x1.a1531bd78p-11,
+-0x1.fee02ffep-13,0x1.d123d002p-13,0x1.3aafe4288p-11,0x1.d433c5388p-11,
+0x1.21214c584p-10,0x1.4380b0684p-10,0x1.52a6104c4p-10,0x1.505aede44p-10,
+0x1.3ec44b704p-10,0x1.2062ab904p-10,0x1.f02422888p-11,0x1.9213ffd88p-11,
+0x1.2dbaf6908p-11,0x1.95ec1de1p-12,0x1.c96547e2p-13,0x1.697e4b44p-14,
+0x1.5edff02p-17,0x1.7d60102p-17,0x1.d06eb744p-14,0x1.5bd720f1p-12,
+0x1.6e6cba708p-11,0x1.449331884p-10,0x1.031926562p-9,0x1.81ca9b422p-9,
+0x1.11263dd41p-8,0x1.745d85ec1p-8,0x1.ecb028291p-8,0x1.3e2d037188p-7,
+0x1.92d6f24508p-7,0x1.f58ab1d308p-7,0x1.33c441b5c4p-6,0x1.750e0c3544p-6,
+0x1.bf4e491c04p-6,-0x1.660c028afp-8,-0x1.f25afb4af8p-7,-0x1.8096cffcfcp-6,
+-0x1.f18f409d3cp-6,-0x1.26ebcf4a1ep-5,-0x1.4b909f84fep-5,-0x1.6786fea03ep-5,
+-0x1.7b981d49dep-5,-0x1.88856f3cdep-5,-0x1.8f08ab413ep-5,-0x1.8fd3cb2bfep-5,
+-0x1.8b910bdf1ep-5,-0x1.82e2ed499ep-5,-0x1.766432677ep-5,-0x1.66a7e141bep-5,
+-0x1.543942ee5ep-5,-0x1.3f9be3905ep-5,-0x1.294b9257bep-5,-0x1.11bc61817ep-5,
+-0x1.f2b54caf3cp-6,-0x1.c115f2623cp-6,-0x1.8f546ae3fcp-6,-0x1.5e1af3167cp-6,
+-0x1.2e044df5bcp-6,-0x1.ff37892f78p-7,-0x1.a6ba4c58f8p-7,-0x1.53698ffbf8p-7,
+-0x1.05ff0ae078p-7,-0x1.7e2b0004fp-8,-0x1.fca2fa47ep-9,-0x1.1a5687cbep-9,
+-0x1.59a11bd78p-11,0x1.3aafe4288p-11,0x1.a9cc70684p-10,0x1.3cc245b82p-9,
+0x1.8737bff62p-9,0x1.b5ba147e2p-9,0x1.ca3880102p-9,0x1.c71e0e9c2p-9,
+0x1.af519b422p-9,0x1.8635d0522p-9,0x1.4fa9274c2p-9,0x1.1005e8e02p-9,
+0x1.984459dc4p-10,0x1.129fb50c4p-10,0x1.35729fa08p-11,0x1.e921a842p-13,
+0x1.dac37d1p-16,0x1.02044688p-15,0x1.3a355f21p-12,0x1.d6a866208p-11,
+0x1.efcdd6cc4p-10,0x1.b72d820e2p-9,0x1.5e9506a01p-8,0x1.050122fb08p-7,
+0x1.7198330c88p-7,0x1.f7d79ad888p-7,0x1.4d531abf84p-6,0x1.ae84e8f604p-6,
+0x1.1089ccb5e2p-5,0x1.535083b162p-5,0x1.a06f440182p-5,0x1.f8c6752d42p-5,
+0x1.2e9f1dd751p-4,-0x1.0a5b743478p-7,-0x1.72bc3174fcp-6,-0x1.1e1a395e3ep-5,
+-0x1.7224a2b25ep-5,-0x1.b6cb351ddep-5,-0x1.ed504db4bep-5,-0x1.0b75631bffp-4,
+-0x1.1a62fa8acfp-4,-0x1.2400d6b44fp-4,-0x1.28d91f7c7fp-4,-0x1.29703b1ddfp-4,
+-0x1.2644ce296fp-4,-0x1.1fcfbb86afp-4,-0x1.168424739fp-4,-0x1.0acf6884bfp-4,
+-0x1.fa324b4a1ep-5,-0x1.db86702c1ep-5,-0x1.ba5374df7ep-5,-0x1.97460b413ep-5,
+-0x1.72ff61db5ep-5,-0x1.4e1523e4dep-5,-0x1.29117941bep-5,-0x1.04730682fep-5,
+-0x1.c159d9cd3cp-6,-0x1.7c4d94af3cp-6,-0x1.3a7972dbfcp-6,-0x1.f8fd45baf8p-7,
+-0x1.85ce992f78p-7,-0x1.1c4d229178p-7,-0x1.7a622e21fp-8,-0x1.a4127a47ep-9,
+-0x1.011e9d63cp-10,0x1.d433c5388p-11,0x1.3cc245b82p-9,0x1.d748e3bc2p-9,
+0x1.23089add1p-8,0x1.45a1eda11p-8,0x1.54e0d48a1p-8,0x1.5291d4901p-8,
+0x1.40dd8d431p-8,0x1.2248b8cb1p-8,0x1.f36857d02p-9,0x1.94b9abe42p-9,
+0x1.2fb781b22p-9,0x1.989844944p-10,0x1.cc682fb08p-11,0x1.6bdf9041p-12,
+0x1.612f4f88p-15,0x1.7fe2d788p-15,0x1.d37d7b41p-12,0x1.5e2163184p-10,
+0x1.70d64f2a2p-9,0x1.46b63d691p-8,0x1.04cdd71108p-7,0x1.8454d41c08p-7,
+0x1.12f29d2ec4p-6,0x1.76d11dd4c4p-6,0x1.efee8b9004p-6,0x1.4045464b42p-5,
+0x1.957de6e222p-5,0x1.f8d8014da2p-5,0x1.35caf950e1p-4,0x1.7782cda2c1p-4,
+0x1.c2402f7971p-4,-0x1.48f7ee7cf8p-7,-0x1.c9e1c76d3cp-6,-0x1.615ae69e5ep-5,
+-0x1.c92698707ep-5,-0x1.0ef82a91ffp-4,-0x1.30a320466fp-4,-0x1.4a54232e0fp-4,
+-0x1.5cc40d0fdfp-4,-0x1.68a49ba15fp-4,-0x1.6ea070868fp-4,-0x1.6f5b1151efp-4,
+-0x1.6b70e7847fp-4,-0x1.6377408dbfp-4,-0x1.57fc4dcbafp-4,-0x1.4987248acfp-4,
+-0x1.3897be061fp-4,-0x1.25a6f7671fp-4,-0x1.112691c5cfp-4,-0x1.f70264515ep-5,
+-0x1.ca34c3097ep-5,-0x1.9c9d197afep-5,-0x1.6ee60949dep-5,-0x1.41abfbf71ep-5,
+-0x1.157d22e0bep-5,-0x1.d5b2ee837cp-6,-0x1.846574643cp-6,-0x1.37d8e94dbcp-6,
+-0x1.e16fddc7f8p-7,-0x1.5f216d09f8p-7,-0x1.d3540522fp-8,-0x1.03688004fp-8,
+-0x1.3d8f33a7cp-10,0x1.21214c584p-10,0x1.8737bff62p-9,0x1.23089add1p-8,
+0x1.677205ec1p-8,0x1.922d64701p-8,0x1.a501bac91p-8,0x1.a227ce6f1p-8,
+0x1.8c4a25f21p-8,0x1.668508fa1p-8,0x1.346680471p-8,0x1.f3dcab622p-9,
+0x1.771c28502p-9,0x1.f8a41ed04p-10,0x1.1c50f5d44p-10,0x1.c1683a31p-12,
+0x1.b434c708p-15,0x1.da1fcf08p-15,0x1.20b0ba988p-11,0x1.b06f0d144p-10,
+0x1.c789ae482p-9,0x1.9382a7b81p-8,0x1.421c257088p-7,0x1.df9d4bcb88p-7,
+0x1.5394097a84p-6,0x1.ceec53c084p-6,0x1.324105a3e2p-5,0x1.8b8e137322p-5,
+0x1.f4cf06dc02p-5,0x1.37c1e5c7c1p-4,0x1.7e9d42b0d1p-4,0x1.cfc7c824b1p-4,
+0x1.160b6018308p-3,-0x1.7013c3faf8p-7,-0x1.00287bee1ep-5,-0x1.8b5ceac5dep-5,
+-0x1.ff7f881ffep-5,-0x1.2f2edad9bfp-4,-0x1.54da762a2fp-4,-0x1.71995df9cfp-4,
+-0x1.863a65cf9fp-4,-0x1.93846cc11fp-4,-0x1.9a365d724fp-4,-0x1.9b072e15afp-4,
+-0x1.96a5e06c3fp-4,-0x1.8db981c57fp-4,-0x1.80e12aff6fp-4,-0x1.70b400868fp-4,
+-0x1.5dc13255dfp-4,-0x1.488ffbf6dfp-4,-0x1.319fa4818fp-4,-0x1.19677e9c6fp-4,
+-0x1.0056e87c7fp-4,-0x1.cdaa97ca7ep-5,-0x1.9a843c515ep-5,-0x1.67e9c04e9ep-5,
+-0x1.367a3ca03ep-5,-0x1.06c4e1413ep-5,-0x1.b291ea933cp-6,-0x1.5cebaddcbcp-6,
+-0x1.0d55f702fcp-6,-0x1.88dfbdc7f8p-7,-0x1.0571592f78p-7,-0x1.223f55c0fp-8,
+-0x1.634fcf97cp-10,0x1.4380b0684p-10,0x1.b5ba147e2p-9,0x1.45a1eda11p-8,
+0x1.922d64701p-8,0x1.c1fd43f41p-8,0x1.d70ea88d1p-8,0x1.d3ddf5b31p-8,
+0x1.bb66d5f61p-8,0x1.91243afe1p-8,0x1.59105d8b1p-8,0x1.17a4bd751p-8,
+0x1.a3b443582p-9,0x1.1a5130702p-9,0x1.3e1dd8e44p-10,0x1.f6d57e71p-12,
+0x1.e8104908p-15,0x1.093ea884p-14,0x1.4302bcb88p-11,0x1.e3d7c0244p-10,
+0x1.fdb187502p-9,0x1.c37b193c1p-8,0x1.68673f5288p-7,0x1.0c50f236c4p-6,
+0x1.7bf2c4fb84p-6,0x1.02fa7860c2p-5,0x1.56a9900c62p-5,0x1.ba9467aba2p-5,
+0x1.182c532641p-4,0x1.5cd1edf001p-4,0x1.ac19c09d11p-4,0x1.03753e04788p-3,
+0x1.371962c0508p-3,-0x1.814f647e78p-7,-0x1.0c26b194fep-5,-0x1.9ddf9488bep-5,
+-0x1.0bb9129a6fp-4,-0x1.3d60afa02fp-4,-0x1.64cfcb5f9fp-4,-0x1.82e73c193fp-4,
+-0x1.987f84440fp-4,-0x1.a668d28d8fp-4,-0x1.ad6b01d9bfp-4,-0x1.ae4599431fp-4,
+-0x1.a9afcc1aafp-4,-0x1.a05879e7efp-4,-0x1.92e62e68dfp-4,-0x1.81f72191ffp-4,
+-0x1.6e21378e4fp-4,-0x1.57f200bf4fp-4,-0x1.3feeb9bcffp-4,-0x1.26944b55dfp-4,
+-0x1.0c574a8eefp-4,-0x1.e347f1475ep-5,-0x1.adbc860c3ep-5,-0x1.78c386bd7ep-5,
+-0x1.45037f191ep-5,-0x1.1312534a1ep-5,-0x1.c6ea7fd0fcp-6,-0x1.6d41b3f27cp-6,
+-0x1.19f21ddcbcp-6,-0x1.9b44929b78p-7,-0x1.11aee5baf8p-7,-0x1.2fd61ff7fp-8,
+-0x1.73f26fb3cp-10,0x1.52a6104c4p-10,0x1.ca3880102p-9,0x1.54e0d48a1p-8,
+0x1.a501bac91p-8,0x1.d70ea88d1p-8,0x1.ed1c90361p-8,0x1.e9c5a0bc1p-8,
+0x1.d02945af1p-8,0x1.a3ec27371p-8,0x1.69382a141p-8,0x1.24bc6f9e1p-8,
+0x1.b75aab8a2p-9,0x1.2788ee222p-9,0x1.4d02aa884p-10,0x1.073021808p-11,
+0x1.feea0588p-15,0x1.15a9c6c4p-14,0x1.522237008p-11,0x1.fa7ee5c84p-10,
+0x1.0ac741811p-8,0x1.d89e5e551p-8,0x1.7946e5e708p-7,0x1.18e0e09904p-6,
+0x1.8dbcadc9c4p-6,0x1.0f1a7b77e2p-5,0x1.66b493cd82p-5,0x1.cf4cfd40c2p-5,
+0x1.254a5e5fd1p-4,0x1.6d26bf6591p-4,0x1.c024cbbba1p-4,0x1.0f9b009ac08p-3,
+0x1.45aa18b8188p-3,-0x1.7eb35bcb78p-7,-0x1.0a55c8ec3ep-5,-0x1.9b120647fep-5,
+-0x1.09e8e8000fp-4,-0x1.3b3a6e2dcfp-4,-0x1.62652b773fp-4,-0x1.8048704cdfp-4,
+-0x1.95bb47c5afp-4,-0x1.a38c779f2fp-4,-0x1.aa82803d5fp-4,-0x1.ab5b9caabfp-4,
+-0x1.a6cdc2984fp-4,-0x1.9d86a25d8fp-4,-0x1.902ba6f87fp-4,-0x1.7f59f60d9fp-4,
+-0x1.6ba66fe7efp-4,-0x1.559daf78efp-4,-0x1.3dc40a589fp-4,-0x1.249590c57fp-4,
+-0x1.0a860da48fp-4,-0x1.e0020d029ep-5,-0x1.aad3771b7ep-5,-0x1.76364f44bep-5,
+-0x1.42d0007c5ep-5,-0x1.11356b0d5ep-5,-0x1.c3d5c91f7cp-6,-0x1.6ac86fd0fcp-6,
+-0x1.18094a933cp-6,-0x1.987b88c878p-7,-0x1.0fd465b7f8p-7,-0x1.2dc758b1fp-8,
+-0x1.716d921bcp-10,0x1.505aede44p-10,0x1.c71e0e9c2p-9,0x1.5291d4901p-8,
+0x1.a227ce6f1p-8,0x1.d3ddf5b31p-8,0x1.e9c5a0bc1p-8,0x1.e6747b821p-8,
+0x1.cd0487951p-8,0x1.a1141c1d1p-8,0x1.66c5e5da1p-8,0x1.22c0e7241p-8,
+0x1.b460efd62p-9,0x1.25888b6e2p-9,0x1.4ac14ea04p-10,0x1.0567d3b08p-11,
+0x1.fb743888p-15,0x1.13c86044p-14,0x1.4fd7f9308p-11,0x1.f710c1e04p-10,
+0x1.08f8ba271p-8,0x1.d56af67b1p-8,0x1.76b8caaa08p-7,0x1.16f9e70a84p-6,
+0x1.8b0b198344p-6,0x1.0d447474a2p-5,0x1.6446ab6642p-5,0x1.cc29bd1182p-5,
+0x1.234ddfd231p-4,0x1.6aada9fff1p-4,0x1.bd1bd2dc01p-4,0x1.0dc41ac4f08p-3,
+0x1.43757943488p-3,-0x1.6ab05199f8p-7,-0x1.f8d0f483bcp-6,-0x1.859336119ep-5,
+-0x1.f80295afbep-5,-0x1.2abe9cd99fp-4,-0x1.4fdd0ab80fp-4,-0x1.6c30377bafp-4,
+-0x1.8083ef8b7fp-4,-0x1.8d9c28acffp-4,-0x1.943502042fp-4,-0x1.9502c4138fp-4,
+-0x1.90b1e0bc1fp-4,-0x1.87e6f33d5fp-4,-0x1.7b3ec0354fp-4,-0x1.6b4e35a06fp-4,
+-0x1.58a26ad9bfp-4,-0x1.43c0a09abfp-4,-0x1.2d2640fb6fp-4,-0x1.1548df724fp-4,
+-0x1.f92c71a8bep-5,-0x1.c6e866aa3ep-5,-0x1.9481bd0d1ep-5,-0x1.62a4e6b25ep-5,
+-0x1.31eea837fep-5,-0x1.02ec18f8fep-5,-0x1.ac35461abcp-6,-0x1.57d006943cp-6,
+-0x1.096492827cp-6,-0x1.831f5d06f8p-7,-0x1.019d895e78p-7,-0x1.1dff925efp-8,
+-0x1.5e1c348fcp-10,0x1.3ec44b704p-10,0x1.af519b422p-9,0x1.40dd8d431p-8,
+0x1.8c4a25f21p-8,0x1.bb66d5f61p-8,0x1.d02945af1p-8,0x1.cd0487951p-8,
+0x1.b4e918381p-8,0x1.8b44de401p-8,0x1.54032a6d1p-8,0x1.138cb7971p-8,
+0x1.9d8f555c2p-9,0x1.162f25742p-9,0x1.3975a36c4p-10,0x1.ef790491p-12,
+0x1.e0eb2a08p-15,0x1.055c9904p-14,0x1.3e482fc88p-11,0x1.dcc272ac4p-10,
+0x1.f63b58542p-9,0x1.bcdf143e1p-8,0x1.63208f6388p-7,0x1.08635fef44p-6,
+0x1.7662d54c04p-6,0x1.fe5fc9d204p-6,0x1.51a55d08a2p-5,0x1.b419be8fe2p-5,
+0x1.1412512661p-4,0x1.57b6a72821p-4,0x1.a5d55af731p-4,0x1.ff51bcdf11p-4,
+0x1.328b79e6608p-3,-0x1.481f0995f8p-7,-0x1.c8b3e3e1bcp-6,-0x1.6071eda09ep-5,
+-0x1.c7f9304ebep-5,-0x1.0e4583091fp-4,-0x1.2fda461f8fp-4,-0x1.497a58b32fp-4,
+-0x1.5bde1aaaffp-4,-0x1.67b6d48c7fp-4,-0x1.6daeb77bafp-4,-0x1.6e68dd3b0fp-4,
+-0x1.6a81482b9fp-4,-0x1.628ce34cdfp-4,-0x1.5719823ccfp-4,-0x1.48ade137efp-4,
+-0x1.37c9a5193fp-4,-0x1.24e55b5a3fp-4,-0x1.10727a12efp-4,-0x1.f5b6bff39ep-5,
+-0x1.c906a8c7bep-5,-0x1.9b8d0e893ep-5,-0x1.6df4225c1ep-5,-0x1.40d7e6a15ep-5,
+-0x1.14c62ef6fep-5,-0x1.d47d406ffcp-6,-0x1.836560f8bcp-6,-0x1.370b4e323cp-6,
+-0x1.e0327280f8p-7,-0x1.5e39eb82f8p-7,-0x1.d21fe734fp-8,-0x1.02bd77d6fp-8,
+-0x1.3cbdd46fcp-10,0x1.2062ab904p-10,0x1.8635d0522p-9,0x1.2248b8cb1p-8,
+0x1.668508fa1p-8,0x1.91243afe1p-8,0x1.a3ec27371p-8,0x1.a1141c1d1p-8,
+0x1.8b44de401p-8,0x1.6598a8481p-8,0x1.339b2af51p-8,0x1.f2931a3e2p-9,
+0x1.7624d76c2p-9,0x1.f75767084p-10,0x1.1b95818c4p-10,0x1.c03fed11p-12,
+0x1.b3152e08p-15,0x1.d8e73608p-15,0x1.1ff264088p-11,0x1.af51f0cc4p-10,
+0x1.c65d56642p-9,0x1.92789d461p-8,0x1.4147c62788p-7,0x1.de61142288p-7,
+0x1.52b425ce04p-6,0x1.cdbb1d5404p-6,0x1.31771a99a2p-5,0x1.8a8947c0e2p-5,
+0x1.f384d5edc2p-5,0x1.36f459d8a1p-4,0x1.7da0ff2fb1p-4,0x1.ce96010791p-4,
+0x1.15540e66a08p-3,-0x1.1a40635f78p-7,-0x1.88dba0c27cp-6,-0x1.2f2cca5cfep-5,
+-0x1.883b06c51ep-5,-0x1.d0fa52609ep-5,-0x1.05602361bfp-4,-0x1.1b6b25275fp-4,
+-0x1.2b3cc8182fp-4,-0x1.356d8c31afp-4,-0x1.3a8fd7d7dfp-4,-0x1.3b2ff7d53fp-4,
+-0x1.37d41f5acfp-4,-0x1.30fc68000fp-4,-0x1.2722d1c2ffp-4,-0x1.1abb43081fp-4,
+-0x1.0c33889a6fp-4,-0x1.f7e6ab56dep-5,-0x1.d4b887a63ep-5,-0x1.af93a61ffep-5,
+-0x1.8922d38e1ep-5,-0x1.6204a9879ep-5,-0x1.3acb8e707ep-5,-0x1.13fdb579bep-5,
+-0x1.dc2a3d42bcp-6,-0x1.92ff2d64bcp-6,-0x1.4d3d6e897cp-6,-0x1.0b8fcd7afcp-6,
+-0x1.9d11613a78p-7,-0x1.2d442fdc78p-7,-0x1.90f67417fp-8,-0x1.bd2398b3ep-9,
+-0x1.10766ebbcp-10,0x1.f02422888p-11,0x1.4fa9274c2p-9,0x1.f36857d02p-9,
+0x1.346680471p-8,0x1.59105d8b1p-8,0x1.69382a141p-8,0x1.66c5e5da1p-8,
+0x1.54032a6d1p-8,0x1.339b2af51p-8,0x1.089ab4321p-8,0x1.ace058f82p-9,
+0x1.41d727862p-9,0x1.b0fa0e3c4p-10,0x1.e7e178008p-11,0x1.81962ce1p-12,
+0x1.7642a488p-15,0x1.96cb2c88p-15,0x1.ef62f7e1p-12,0x1.73060f404p-10,
+0x1.86d8bffe2p-9,0x1.5a352a531p-8,0x1.145df15608p-7,0x1.9b81114108p-7,
+0x1.235ac73944p-6,0x1.8d2ee79f44p-6,0x1.06c341b142p-5,0x1.5361cd3c82p-5,
+0x1.adb0499f62p-5,0x1.0b7c0e9d71p-4,0x1.484770d181p-4,0x1.8deb31cf61p-4,
+0x1.dd1e519411p-4,-0x1.c97ab514fp-8,-0x1.3e60540ffcp-6,-0x1.eb647ab77cp-6,
+-0x1.3dde2cd7dep-5,-0x1.78d2b1a35ep-5,-0x1.a7a4a1d23ep-5,-0x1.cb5ef0657ep-5,
+-0x1.e502ad4b1ep-5,-0x1.f587055e1ep-5,-0x1.fdd942667ep-5,-0x1.fedccb193ep-5,
+-0x1.f96b23185ep-5,-0x1.ee53eaf2dep-5,-0x1.de5ce024bep-5,-0x1.ca41dd16fep-5,
+-0x1.b2b4d91f9ep-5,-0x1.985de8819ep-5,-0x1.7bdb3c6cfep-5,-0x1.5dc122febep-5,
+-0x1.3e9a0740dep-5,-0x1.1ee6712a5ep-5,-0x1.fe3a0b3e7cp-6,-0x1.bf550ce0fcp-6,
+-0x1.81e3a4b83cp-6,-0x1.4697ca1a3cp-6,-0x1.0e0fae36fcp-6,-0x1.b1ab7830f8p-7,
+-0x1.4ec1314578p-7,-0x1.e84c8a4efp-8,-0x1.44f1ca0dfp-8,-0x1.68bed71fep-9,
+-0x1.b99d00278p-11,0x1.9213ffd88p-11,0x1.1005e8e02p-9,0x1.94b9abe42p-9,
+0x1.f3dcab622p-9,0x1.17a4bd751p-8,0x1.24bc6f9e1p-8,0x1.22c0e7241p-8,
+0x1.138cb7971p-8,0x1.f2931a3e2p-9,0x1.ace058f82p-9,0x1.5b90e60c2p-9,
+0x1.04d2ad5a2p-9,0x1.5ee397e44p-10,0x1.8b6240508p-11,0x1.387bc981p-12,
+0x1.2f4df988p-15,0x1.49ab8188p-15,0x1.91777481p-12,0x1.2cae7b684p-10,
+0x1.3cbf10d22p-9,0x1.1892073d1p-8,0x1.bff107361p-8,0x1.4d7cc66608p-7,
+0x1.d83bda8788p-7,0x1.41e1ad69c4p-6,0x1.a9e4373504p-6,0x1.1309f22dc2p-5,
+0x1.5c396a5ca2p-5,0x1.b18b772822p-5,0x1.0a0a775221p-4,0x1.427a44fc01p-4,
+0x1.82a972aeb1p-4,-0x1.574e0d3dfp-8,-0x1.ddd61d9c78p-7,-0x1.70c116bdbcp-6,
+-0x1.dd12c651fcp-6,-0x1.1ac738fc7ep-5,-0x1.3de9cbad5ep-5,-0x1.58b96eac9ep-5,
+-0x1.6bf70a083ep-5,-0x1.785c1a6b3ep-5,-0x1.7e9ab11d9ep-5,-0x1.7f5d74045ep-5,
+-0x1.7b479da17ep-5,-0x1.72f4fd13fep-5,-0x1.66f9f617dep-5,-0x1.57e381061ep-5,
+-0x1.46372ad4bep-5,-0x1.32731516bep-5,-0x1.1d0df5fc1ep-5,-0x1.06771851dep-5,
+-0x1.de2cb703fcp-6,-0x1.ae986726fcp-6,-0x1.7ee35254bcp-6,-0x1.4fb0b30f3cp-6,
+-0x1.2194ed127cp-6,-0x1.ea2b1aa8f8p-7,-0x1.9552940a78p-7,-0x1.4570051d78p-7,
+-0x1.f66afe53fp-8,-0x1.6e6ecbd7fp-8,-0x1.e7b1be4dep-9,-0x1.0eb69311ep-9,
+-0x1.4b66096f8p-11,0x1.2dbaf6908p-11,0x1.984459dc4p-10,0x1.2fb781b22p-9,
+0x1.771c28502p-9,0x1.a3b443582p-9,0x1.b75aab8a2p-9,0x1.b460efd62p-9,
+0x1.9d8f555c2p-9,0x1.7624d76c2p-9,0x1.41d727862p-9,0x1.04d2ad5a2p-9,
+0x1.87750d904p-10,0x1.07510fc04p-10,0x1.28b4eb888p-11,0x1.d4fe03e2p-13,
+0x1.c7374a1p-16,0x1.eec95a1p-16,0x1.2d457cf1p-12,0x1.c3477a088p-11,
+0x1.db63dd804p-10,0x1.a51865e82p-9,0x1.5025bfdd1p-8,0x1.f48417131p-8,
+0x1.6260865308p-7,0x1.e318e7df08p-7,0x1.3f99baa6c4p-6,0x1.9ccb10a544p-6,
+0x1.0551230382p-5,0x1.455800d702p-5,0x1.8f49e0a122p-5,0x1.e3fdec98e2p-5,
+0x1.22295d2c21p-4,-0x1.cdda6c63ep-9,-0x1.416b943678p-7,-0x1.f017335578p-7,
+-0x1.40e82e6efcp-6,-0x1.7c6cff55fcp-6,-0x1.abb18807bcp-6,-0x1.cfc348e63cp-6,
+-0x1.e9a5c70d7cp-6,-0x1.fa528c537cp-6,-0x1.015c93a41ep-5,-0x1.01df959adep-5,
+-0x1.fe40301ffcp-6,-0x1.f30dd2c4fcp-6,-0x1.e2efb49cbcp-6,-0x1.cea37bd93cp-6,
+-0x1.b6dcd3667cp-6,-0x1.9c456aea7cp-6,-0x1.7f7cf6c53cp-6,-0x1.61193010bcp-6,
+-0x1.41a5d4a0fcp-6,-0x1.21a4a703fcp-6,-0x1.018d6e81bcp-6,-0x1.c39bee3878p-7,
+-0x1.8594231ef8p-7,-0x1.49b726a2f8p-7,-0x1.10a4ad2478p-7,-0x1.b5d0e8eefp-8,
+-0x1.51f487c7fp-8,-0x1.ecf7b097ep-9,-0x1.480d1db5ep-9,-0x1.6c31caf3cp-10,
+-0x1.bdd5e21fp-12,0x1.95ec1de1p-12,0x1.129fb50c4p-10,0x1.989844944p-10,
+0x1.f8a41ed04p-10,0x1.1a5130702p-9,0x1.2788ee222p-9,0x1.25888b6e2p-9,
+0x1.162f25742p-9,0x1.f75767084p-10,0x1.b0fa0e3c4p-10,0x1.5ee397e44p-10,
+0x1.07510fc04p-10,0x1.623e6be08p-11,0x1.8f29fbd1p-12,0x1.3b789d62p-13,
+0x1.3234561p-16,0x1.4cd2661p-16,0x1.954e1362p-13,0x1.2f8e6c688p-11,
+0x1.3fc653b04p-10,0x1.1b40bf002p-9,0x1.c43966522p-9,0x1.50ad02df1p-8,
+0x1.dcbfaeb21p-8,0x1.44f581e508p-7,0x1.adf69e3388p-7,0x1.15ab1ff844p-6,
+0x1.5f8db8aa04p-6,0x1.b5b0999104p-6,0x1.0c959f2aa2p-5,0x1.458f8ef262p-5,
+0x1.865bd539c2p-5,-0x1.04359da1ep-9,-0x1.6a2d9cbbfp-8,-0x1.177fb76cf8p-7,
+-0x1.69998d7d78p-7,-0x1.acaa7c2b78p-7,-0x1.e1ed6fc6f8p-7,-0x1.05490aa9fcp-6,
+-0x1.13de6d453cp-6,-0x1.1d4376eb3cp-6,-0x1.21ff1f2bfcp-6,-0x1.2292bdf17cp-6,
+-0x1.1f7a0b7fbcp-6,-0x1.192b2074bcp-6,-0x1.101675c87cp-6,-0x1.04a6e4ccfcp-6,
+-0x1.ee834e5c78p-7,-0x1.d08cade478p-7,-0x1.b01ddcf1f8p-7,-0x1.8ddf90f8f8p-7,
+-0x1.6a6f402178p-7,-0x1.465f214778p-7,-0x1.22362bfaf8p-7,-0x1.fce030fffp-8,
+-0x1.b6fabf9cfp-8,-0x1.73867724fp-8,-0x1.33374c57fp-8,-0x1.ed556abbep-9,
+-0x1.7ccf538dep-9,-0x1.15bd4515ep-9,-0x1.71a66827cp-10,-0x1.9a60605f8p-11,
+-0x1.f65eb81ep-13,0x1.c96547e2p-13,0x1.35729fa08p-11,0x1.cc682fb08p-11,
+0x1.1c50f5d44p-10,0x1.3e1dd8e44p-10,0x1.4d02aa884p-10,0x1.4ac14ea04p-10,
+0x1.3975a36c4p-10,0x1.1b95818c4p-10,0x1.e7e178008p-11,0x1.8b6240508p-11,
+0x1.28b4eb888p-11,0x1.8f29fbd1p-12,0x1.c1c7c1c2p-13,0x1.63798704p-14,
+0x1.59086e2p-17,0x1.77068e2p-17,0x1.c8b33304p-14,0x1.560c8de1p-12,
+0x1.6852f1688p-11,0x1.3f2bc8044p-10,0x1.fd91a0e84p-10,0x1.7b5e46a02p-9,
+0x1.0c9a04531p-8,0x1.6e2a6aeb1p-8,0x1.e47c35581p-8,0x1.38e0e03908p-7,
+0x1.8c21f3d488p-7,0x1.ed31028288p-7,0x1.2ea47c4984p-6,0x1.6ed800d104p-6,
+0x1.b7dbc44bc4p-6,-0x1.9b4d6f178p-11,-0x1.1e3d7adbep-9,-0x1.b9cae397ep-9,
+-0x1.1dc876ccfp-8,-0x1.52c994a8fp-8,-0x1.7ce1affffp-8,-0x1.9d00c9d9fp-8,
+-0x1.b40dffa6fp-8,-0x1.c2e78b3efp-8,-0x1.ca62c2e1fp-8,-0x1.cb4c1937fp-8,
+-0x1.c6671d50fp-8,-0x1.bc6e7aa4fp-8,-0x1.ae13f913fp-8,-0x1.9c007ce5fp-8,
+-0x1.86d406cafp-8,-0x1.6f25b3dafp-8,-0x1.5583bd95fp-8,-0x1.3a7379e3fp-8,
+-0x1.1e715b14fp-8,-0x1.01f0efe0fp-8,-0x1.cab9c6cfep-9,-0x1.922dfa63ep-9,
+-0x1.5af0425dep-9,-0x1.25a09f6dep-9,-0x1.e59a9627cp-10,-0x1.85e56f3fcp-10,
+-0x1.2cf72063cp-10,-0x1.b702e2e78p-11,-0x1.242537df8p-11,-0x1.44552bdfp-12,
+-0x1.8d09b4bcp-14,0x1.697e4b44p-14,0x1.e921a842p-13,0x1.6bdf9041p-12,
+0x1.c1683a31p-12,0x1.f6d57e71p-12,0x1.073021808p-11,0x1.0567d3b08p-11,
+0x1.ef790491p-12,0x1.c03fed11p-12,0x1.81962ce1p-12,0x1.387bc981p-12,
+0x1.d4fe03e2p-13,0x1.3b789d62p-13,0x1.63798704p-14,0x1.18f13508p-15,
+0x1.10b0944p-18,0x1.2864d44p-18,0x1.68f18d08p-15,0x1.0e54dd82p-13,
+0x1.1cc655b1p-12,0x1.f8802af1p-12,0x1.92ba36408p-11,0x1.2bd374784p-10,
+0x1.a89153044p-10,0x1.216440b22p-9,0x1.7ee72c4c2p-9,0x1.ee8de0002p-9,
+0x1.39134b571p-8,0x1.85c8a9331p-8,0x1.de5fee341p-8,0x1.21ed714908p-7,
+0x1.5ba2190e88p-7,-0x1.8f3885fcp-14,-0x1.15d5032fp-12,-0x1.acd0b30fp-12,
+-0x1.15636f0f8p-11,-0x1.48d5f7ef8p-11,-0x1.71b189278p-11,-0x1.90df16f78p-11,
+-0x1.a73ef4df8p-11,-0x1.b5a8d59f8p-11,-0x1.bcebcb378p-11,-0x1.bdce46e78p-11,
+-0x1.b90e192f8p-11,-0x1.af6071cf8p-11,-0x1.a171dfc78p-11,-0x1.8fe651578p-11,
+-0x1.7b5913ff8p-11,-0x1.645cd47f8p-11,-0x1.4b7b9ed78p-11,-0x1.3136de478p-11,
+-0x1.16075d4f8p-11,-0x1.f4ba8b5fp-12,-0x1.bd4040cfp-12,-0x1.865dab6fp-12,
+-0x1.50bf5a3fp-12,-0x1.1d009abfp-12,-0x1.d756f1dep-13,-0x1.7a717e9ep-13,
+-0x1.241fedbep-13,-0x1.aa1d9c7cp-14,-0x1.1b90583cp-14,-0x1.3ace4178p-15,
+-0x1.81600fep-17,0x1.5edff02p-17,0x1.dac37d1p-16,0x1.612f4f88p-15,
+0x1.b434c708p-15,0x1.e8104908p-15,0x1.feea0588p-15,0x1.fb743888p-15,
+0x1.e0eb2a08p-15,0x1.b3152e08p-15,0x1.7642a488p-15,0x1.2f4df988p-15,
+0x1.c7374a1p-16,0x1.3234561p-16,0x1.59086e2p-17,0x1.10b0944p-18,0x1.08ae02p-21,
+0x1.1fb002p-21,0x1.5e57544p-18,0x1.0664071p-16,0x1.1468e308p-15,
+0x1.e9ae6d08p-15,0x1.86e5c8c4p-14,0x1.2304d322p-13,0x1.9c18a982p-13,
+0x1.18e41641p-12,0x1.73a7d211p-12,0x1.e006edb1p-12,0x1.2fe108108p-11,
+0x1.7a5590f08p-11,0x1.d052a6788p-11,0x1.19693f344p-10,0x1.516bf7a04p-10,
+-0x1.b1ec81fcp-14,-0x1.2dfbb22fp-12,-0x1.d217420fp-12,-0x1.2d803e8f8p-11,
+-0x1.656ba76f8p-11,-0x1.91d470a78p-11,-0x1.b3b7ce778p-11,-0x1.cc09945f8p-11,
+-0x1.dbb4351f8p-11,-0x1.e398c2b78p-11,-0x1.e48eee678p-11,-0x1.df6508af8p-11,
+-0x1.d4e0014f8p-11,-0x1.c5bb67478p-11,-0x1.b2a968d78p-11,-0x1.9c52d37f8p-11,
+-0x1.835713ff8p-11,-0x1.684c36578p-11,-0x1.4bbee5c78p-11,-0x1.2e326ccf8p-11,
+-0x1.1020b52f8p-11,-0x1.e3f48fcfp-12,-0x1.a84c9a6fp-12,-0x1.6e05193fp-12,
+-0x1.35c6d9bfp-12,-0x1.0027e7efp-12,-0x1.9b571c9ep-13,-0x1.3d84abbep-13,
+-0x1.cf28187cp-14,-0x1.3436943cp-14,-0x1.562bb978p-15,-0x1.a2dfefep-17,
+0x1.7d60102p-17,0x1.02044688p-15,0x1.7fe2d788p-15,0x1.da1fcf08p-15,
+0x1.093ea884p-14,0x1.15a9c6c4p-14,0x1.13c86044p-14,0x1.055c9904p-14,
+0x1.d8e73608p-15,0x1.96cb2c88p-15,0x1.49ab8188p-15,0x1.eec95a1p-16,
+0x1.4cd2661p-16,0x1.77068e2p-17,0x1.2864d44p-18,0x1.1fb002p-21,0x1.38b202p-21,
+0x1.7ccb944p-18,0x1.1d33171p-16,0x1.2c6feb08p-15,0x1.0a1fba84p-14,
+0x1.a8e08cc4p-14,0x1.3c50f522p-13,0x1.bfeb2b82p-13,0x1.314ed741p-12,
+0x1.93f66311p-12,0x1.04e08f588p-11,0x1.4a4b58908p-11,0x1.9b38c1708p-11,
+0x1.f8af5ef88p-11,0x1.31df93744p-10,0x1.6ec0b7e04p-10,-0x1.083670cbcp-10,
+-0x1.6fc0097bep-9,-0x1.1bcc831bfp-8,-0x1.6f29b31cfp-8,-0x1.b342c4f8fp-8,
+-0x1.e9577d4ffp-8,-0x1.094e1a94f8p-7,-0x1.181cecfb78p-7,-0x1.21a6f6c778p-7,
+-0x1.26754318f8p-7,-0x1.270b2743f8p-7,-0x1.23e642d078p-7,-0x1.1d7e7f7a78p-7,
+-0x1.14461131f8p-7,-0x1.08a9761af8p-7,-0x1.f61eed1afp-8,-0x1.d7b24a2afp-8,
+-0x1.b6c3bce5fp-8,-0x1.93fe9333fp-8,-0x1.7002af64fp-8,-0x1.4b648830fp-8,
+-0x1.26ad28b7fp-8,-0x1.025a3081fp-8,-0x1.bdbba6fdep-9,-0x1.793db40dep-9,
+-0x1.37f141b3ep-9,-0x1.f4ec647fcp-10,-0x1.82ab21a3cp-10,-0x1.1a0322b3cp-10,
+-0x1.7756425f8p-11,-0x1.a0b0a0dfp-12,-0x1.fe1948bcp-14,0x1.d06eb744p-14,
+0x1.3a355f21p-12,0x1.d37d7b41p-12,0x1.20b0ba988p-11,0x1.4302bcb88p-11,
+0x1.522237008p-11,0x1.4fd7f9308p-11,0x1.3e482fc88p-11,0x1.1ff264088p-11,
+0x1.ef62f7e1p-12,0x1.91777481p-12,0x1.2d457cf1p-12,0x1.954e1362p-13,
+0x1.c8b33304p-14,0x1.68f18d08p-15,0x1.5e57544p-18,0x1.7ccb944p-18,
+0x1.cfb9e508p-15,0x1.5b4fb382p-13,0x1.6dde10b1p-12,0x1.4414d2f88p-11,
+0x1.02b445e04p-10,0x1.813467384p-10,0x1.10bbe4e22p-9,0x1.73cc8c122p-9,
+0x1.ebf055ac2p-9,0x1.3db122b01p-8,0x1.923a1b071p-8,0x1.f4c76ce31p-8,
+0x1.334c6e7208p-7,0x1.747ccda108p-7,0x1.bea021e688p-7,-0x1.8bc4ae01ep-9,
+-0x1.136de9f5f8p-7,-0x1.a91b5604f8p-7,-0x1.12fd514abcp-6,-0x1.45fdf3a1bcp-6,
+-0x1.6e7f102f7cp-6,-0x1.8d679775fcp-6,-0x1.a395ec513cp-6,-0x1.b1dfe3f73cp-6,
+-0x1.b912c5f7fcp-6,-0x1.b9f34c3d7cp-6,-0x1.b53da30bbcp-6,-0x1.aba56900bcp-6,
+-0x1.9dd5af147cp-6,-0x1.8c70f898fcp-6,-0x1.78113b3a3cp-6,-0x1.6147defe3cp-6,
+-0x1.489dbe44fcp-6,-0x1.2e9325c87cp-6,-0x1.139fd49cbcp-6,-0x1.f065f85f78p-7,
+-0x1.b9668092f8p-7,-0x1.82fd6e17f8p-7,-0x1.4dd5d1e678p-7,-0x1.1a89a1aa78p-7,
+-0x1.d3436f87fp-8,-0x1.772ba68dfp-8,-0x1.21992ff6fp-8,-0x1.a66e3975ep-9,
+-0x1.191c8e73ep-9,-0x1.38154cefcp-10,-0x1.7e0adf0fp-12,0x1.5bd720f1p-12,
+0x1.d6a866208p-11,0x1.5e2163184p-10,0x1.b06f0d144p-10,0x1.e3d7c0244p-10,
+0x1.fa7ee5c84p-10,0x1.f710c1e04p-10,0x1.dcc272ac4p-10,0x1.af51f0cc4p-10,
+0x1.73060f404p-10,0x1.2cae7b684p-10,0x1.c3477a088p-11,0x1.2f8e6c688p-11,
+0x1.560c8de1p-12,0x1.0e54dd82p-13,0x1.0664071p-16,0x1.1d33171p-16,
+0x1.5b4fb382p-13,0x1.041f1d708p-11,0x1.1204eff44p-10,0x1.e5724f444p-10,
+0x1.83845e142p-9,0x1.208088201p-8,0x1.988850231p-8,0x1.1676375d88p-7,
+0x1.7071011408p-7,0x1.dbe02fa108p-7,0x1.2d40445e44p-6,0x1.770ff6b544p-6,
+0x1.cc4eacfd84p-6,0x1.16fa398282p-5,0x1.4e80f11fe2p-5,-0x1.a0e9d0c1fp-8,
+-0x1.22251bff3cp-6,-0x1.bfd1c00ebcp-6,-0x1.21ae7f497ep-5,-0x1.5768b83cfep-5,
+-0x1.8213d4b5dep-5,-0x1.a2a31be51ep-5,-0x1.ba00d258bep-5,-0x1.c90e39fbbep-5,
+-0x1.d0a392161ep-5,-0x1.d190174cdep-5,-0x1.cc9a03a1fep-5,-0x1.c27e8e747ep-5,
+-0x1.b3f1ec805ep-5,-0x1.a19f4fde9ep-5,-0x1.8c28e8053ep-5,-0x1.7427e1c73ep-5,
+-0x1.5a2c67549ep-5,-0x1.3ebda03a5ep-5,-0x1.2259b1627ep-5,-0x1.0575bd13fep-5,
+-0x1.d0fbc5e5bcp-6,-0x1.97aa80003cp-6,-0x1.5fabdd337cp-6,-0x1.29a20cf57cp-6,
+-0x1.ec3a72ec78p-7,-0x1.8b370f3f78p-7,-0x1.31122e2bf8p-7,-0x1.bd0008dbfp-8,
+-0x1.2821786afp-8,-0x1.48c1d499ep-9,-0x1.9274458f8p-11,0x1.6e6cba708p-11,
+0x1.efcdd6cc4p-10,0x1.70d64f2a2p-9,0x1.c789ae482p-9,0x1.fdb187502p-9,
+0x1.0ac741811p-8,0x1.08f8ba271p-8,0x1.f63b58542p-9,0x1.c65d56642p-9,
+0x1.86d8bffe2p-9,0x1.3cbf10d22p-9,0x1.db63dd804p-10,0x1.3fc653b04p-10,
+0x1.6852f1688p-11,0x1.1cc655b1p-12,0x1.1468e308p-15,0x1.2c6feb08p-15,
+0x1.6dde10b1p-12,0x1.1204eff44p-10,0x1.20a8d8b82p-9,0x1.ff6205e02p-9,
+0x1.9838a5991p-8,0x1.2fea87a788p-7,0x1.ae5c081108p-7,0x1.2556e34e84p-6,
+0x1.84206035c4p-6,0x1.f54cfe9444p-6,0x1.3d58a3c302p-5,0x1.8b19e4b682p-5,
+0x1.e4e68bf8a2p-5,0x1.25e1f30031p-4,0x1.606020f3e1p-4,-0x1.714c17d6f8p-7,
+-0x1.0101d8151ep-5,-0x1.8cac65ccdep-5,-0x1.0098c75b7fp-4,-0x1.30301e053fp-4,
+-0x1.55fbb04dafp-4,-0x1.72d2fc6d4fp-4,-0x1.8785856b1fp-4,-0x1.94dad31c9fp-4,
+-0x1.9b927225cfp-4,-0x1.9c63f3f92fp-4,-0x1.97feeed7bfp-4,-0x1.8f0afdd0ffp-4,
+-0x1.8227c0c2efp-4,-0x1.71ecdc5a0fp-4,-0x1.5ee9fa115fp-4,-0x1.49a6c8325fp-4,
+-0x1.32a2f9d50fp-4,-0x1.1a5646dfefp-4,-0x1.01306c07ffp-4,-0x1.cf3255a17ep-5,
+-0x1.9be093185ep-5,-0x1.691b26b59ep-5,-0x1.3781b0573ep-5,-0x1.07a3d9783ep-5,
+-0x1.b402aa613cp-6,-0x1.5e13c06abcp-6,-0x1.0e3a81b0fcp-6,-0x1.8a2d1c23f8p-7,
+-0x1.064f314b78p-7,-0x1.23359ef8fp-8,-0x1.647d4e77cp-10,0x1.449331884p-10,
+0x1.b72d820e2p-9,0x1.46b63d691p-8,0x1.9382a7b81p-8,0x1.c37b193c1p-8,
+0x1.d89e5e551p-8,0x1.d56af67b1p-8,0x1.bcdf143e1p-8,0x1.92789d461p-8,
+0x1.5a352a531p-8,0x1.1892073d1p-8,0x1.a51865e82p-9,0x1.1b40bf002p-9,
+0x1.3f2bc8044p-10,0x1.f8802af1p-12,0x1.e9ae6d08p-15,0x1.0a1fba84p-14,
+0x1.4414d2f88p-11,0x1.e5724f444p-10,0x1.ff6205e02p-9,0x1.c4fa32841p-8,
+0x1.6999103688p-7,0x1.0d349f68c4p-6,0x1.7d352b8d84p-6,0x1.03d63929c2p-5,
+0x1.57cc532562p-5,0x1.bc0bf364a2p-5,0x1.191a0ffac1p-4,0x1.5df9eaa481p-4,
+0x1.ad85031991p-4,0x1.045166fab88p-3,0x1.38215d82908p-3,-0x1.26cc74793cp-6,
+-0x1.9a5269c1fep-5,-0x1.3ca6f82adfp-4,-0x1.99aaac18efp-4,-0x1.e5a5d7beafp-4,
+-0x1.10fea2130f8p-3,-0x1.28047e27df8p-3,-0x1.388a2699478p-3,-0x1.432ee2de078p-3,
+-0x1.488b9b681f8p-3,-0x1.4932d9a4cf8p-3,-0x1.45b0c7fc978p-3,-0x1.3e8b31d3378p-3,
+-0x1.34418387af8p-3,-0x1.274cca743f8p-3,-0x1.181fb4ee678p-3,-0x1.07269246e78p-3,
+-0x1.e98ea5937fp-4,-0x1.c2c30f7c5fp-4,-0x1.9a9cc6cd6fp-4,-0x1.71c172022fp-4,
+-0x1.48c9f98c9fp-4,-0x1.204287d53fp-4,-0x1.f15512761ep-5,-0x1.a4e958271ep-5,
+-0x1.5c0dc1557ep-5,-0x1.1774b2863ep-5,-0x1.af6e2856bcp-6,-0x1.3aa8a547bcp-6,
+-0x1.a2c978eef8p-7,-0x1.d0ed595ffp-8,-0x1.1c9319a9ep-9,0x1.031926562p-9,
+0x1.5e9506a01p-8,0x1.04cdd71108p-7,0x1.421c257088p-7,0x1.68673f5288p-7,
+0x1.7946e5e708p-7,0x1.76b8caaa08p-7,0x1.63208f6388p-7,0x1.4147c62788p-7,
+0x1.145df15608p-7,0x1.bff107361p-8,0x1.5025bfdd1p-8,0x1.c43966522p-9,
+0x1.fd91a0e84p-10,0x1.92ba36408p-11,0x1.86e5c8c4p-14,0x1.a8e08cc4p-14,
+0x1.02b445e04p-10,0x1.83845e142p-9,0x1.9838a5991p-8,0x1.6999103688p-7,
+0x1.20a70ad984p-6,0x1.adcc0cbf04p-6,0x1.304e7087e2p-5,0x1.9ed6e99ae2p-5,
+0x1.127189b041p-4,0x1.627805d9e1p-4,0x1.c0ca364151p-4,0x1.176012f3888p-3,
+0x1.56df4eea908p-3,0x1.9f9b928f808p-3,0x1.f2540070d88p-3,-0x1.b6f2d35bbcp-6,
+-0x1.317ae40b9fp-4,-0x1.d77cee697fp-4,-0x1.30fe0276c78p-3,-0x1.698f2fbda78p-3,
+-0x1.967b9e6e5f8p-3,-0x1.b8c371612f8p-3,-0x1.d15d4ee1978p-3,-0x1.e13660ae578p-3,
+-0x1.e93253f96f8p-3,-0x1.ea2b59681f8p-3,-0x1.e4f22512e78p-3,-0x1.da4dee85878p-3,
+-0x1.cafc70beff8p-3,-0x1.b7b1ea318f8p-3,-0x1.a1191cc2b78p-3,-0x1.87d34dcb378p-3,
+-0x1.6c7846170f8p-3,-0x1.4f9651e57f8p-3,-0x1.31b240e9078p-3,-0x1.13476647678p-3,
+-0x1.e98f31333fp-4,-0x1.ad3663d7dfp-4,-0x1.72421f7bafp-4,-0x1.395d26042fp-4,
+-0x1.031f403d5fp-4,-0x1.a01a7bb37ep-5,-0x1.4131eae49ep-5,-0x1.d485121a3cp-6,
+-0x1.37c83df1fcp-6,-0x1.5a220d04f8p-7,-0x1.a7b9a4bdep-9,0x1.81ca9b422p-9,
+0x1.050122fb08p-7,0x1.8454d41c08p-7,0x1.df9d4bcb88p-7,0x1.0c50f236c4p-6,
+0x1.18e0e09904p-6,0x1.16f9e70a84p-6,0x1.08635fef44p-6,0x1.de61142288p-7,
+0x1.9b81114108p-7,0x1.4d7cc66608p-7,0x1.f48417131p-8,0x1.50ad02df1p-8,
+0x1.7b5e46a02p-9,0x1.2bd374784p-10,0x1.2304d322p-13,0x1.3c50f522p-13,
+0x1.813467384p-10,0x1.208088201p-8,0x1.2fea87a788p-7,0x1.0d349f68c4p-6,
+0x1.adcc0cbf04p-6,0x1.3ffaa41a42p-5,0x1.c51af946a2p-5,0x1.34d7e43cd1p-4,
+0x1.98a3e33da1p-4,0x1.07e5e691a08p-3,0x1.4e1e7742588p-3,0x1.9ffbc689388p-3,
+0x1.fe8773cb408p-3,0x1.356a4d7d184p-2,0x1.72ffea4a444p-2,-0x1.36c92e077ep-5,
+-0x1.b092f6196fp-4,-0x1.4dd31708a78p-3,-0x1.afe21fac2f8p-3,-0x1.fffc263d0f8p-3,
+-0x1.1fcca68823cp-2,-0x1.381223c50bcp-2,-0x1.497d2d0effcp-2,-0x1.54b5ad275fcp-2,
+-0x1.5a5cd7572bcp-2,-0x1.5b0d276f03cp-2,-0x1.575a61c727cp-2,-0x1.4fd1933f77cp-2,
+-0x1.44f9113f73cp-2,-0x1.375079b63bcp-2,-0x1.2750b31a8fcp-2,-0x1.156bec6acfcp-2,
+-0x1.020d9d2cfbcp-2,-0x1.db350add678p-3,-0x1.b0e15b8a6f8p-3,-0x1.85cece9acf8p-3,
+-0x1.5a9e9757878p-3,-0x1.2fe47a18d78p-3,-0x1.0626cc463f8p-3,-0x1.bbbce8acffp-4,
+-0x1.6eedd39f2fp-4,-0x1.269c6a8d8fp-4,-0x1.c6d3c1823ep-5,-0x1.4bb91742bep-5,
+-0x1.b97f8ad13cp-6,-0x1.ea23fcf378p-7,-0x1.2c01e22bfp-8,0x1.11263dd41p-8,
+0x1.7198330c88p-7,0x1.12f29d2ec4p-6,0x1.5394097a84p-6,0x1.7bf2c4fb84p-6,
+0x1.8dbcadc9c4p-6,0x1.8b0b198344p-6,0x1.7662d54c04p-6,0x1.52b425ce04p-6,
+0x1.235ac73944p-6,0x1.d83bda8788p-7,0x1.6260865308p-7,0x1.dcbfaeb21p-8,
+0x1.0c9a04531p-8,0x1.a89153044p-10,0x1.9c18a982p-13,0x1.bfeb2b82p-13,
+0x1.10bbe4e22p-9,0x1.988850231p-8,0x1.ae5c081108p-7,0x1.7d352b8d84p-6,
+0x1.304e7087e2p-5,0x1.c51af946a2p-5,0x1.40cf296281p-4,0x1.b5562dc401p-4,
+0x1.2153ab75e88p-3,0x1.75b127efb88p-3,0x1.d920d0c2f08p-3,0x1.2686aca9e84p-2,
+0x1.697771fbac4p-2,0x1.b62580f9a44p-2,0x1.06ad2cdf882p-1,-0x1.a7ac28047ep-5,
+-0x1.26d950cff78p-3,-0x1.c7145cb3e78p-3,-0x1.2660c7d1b7cp-2,-0x1.5cf9fdc227cp-2,
+-0x1.88563115c3cp-2,-0x1.a96c9aaeabcp-2,-0x1.c12b4b669fcp-2,-0x1.d0772c0effcp-2,
+-0x1.d82bfd70cbcp-2,-0x1.d91c584ca3cp-2,-0x1.d411ad5ac7cp-2,-0x1.c9cc454b17cp-2,
+-0x1.bb0340c513cp-2,-0x1.a8649867dbcp-2,-0x1.92951cca2fcp-2,-0x1.7a30767a6fcp-2,
+-0x1.5fc925fe9bcp-2,-0x1.43e883d453cp-2,-0x1.270ec070d7cp-2,-0x1.09b2e44107cp-2,
+-0x1.d8859f52c78p-3,-0x1.9e46760c178p-3,-0x1.655f6d557f8p-3,-0x1.2e7555c5bf8p-3,
+-0x1.f4355fc5afp-4,-0x1.919f58440fp-4,-0x1.360455cf9fp-4,-0x1.c436f21fbep-5,
+-0x1.2cee85159ep-5,-0x1.4e164a93bcp-6,-0x1.98fa9a13fp-8,0x1.745d85ec1p-8,
+0x1.f7d79ad888p-7,0x1.76d11dd4c4p-6,0x1.ceec53c084p-6,0x1.02fa7860c2p-5,
+0x1.0f1a7b77e2p-5,0x1.0d447474a2p-5,0x1.fe5fc9d204p-6,0x1.cdbb1d5404p-6,
+0x1.8d2ee79f44p-6,0x1.41e1ad69c4p-6,0x1.e318e7df08p-7,0x1.44f581e508p-7,
+0x1.6e2a6aeb1p-8,0x1.216440b22p-9,0x1.18e41641p-12,0x1.314ed741p-12,
+0x1.73cc8c122p-9,0x1.1676375d88p-7,0x1.2556e34e84p-6,0x1.03d63929c2p-5,
+0x1.9ed6e99ae2p-5,0x1.34d7e43cd1p-4,0x1.b5562dc401p-4,0x1.2a185a32c08p-3,
+0x1.8a6b3da2a88p-3,0x1.fd6d92d4788p-3,0x1.427dbdbdd84p-2,0x1.9181b4ae484p-2,
+0x1.ecc30f260c4p-2,0x1.2aa5ab0c022p-1,0x1.66169d3fb82p-1,-0x1.18497fae6fp-4,
+-0x1.861fab9d8f8p-3,-0x1.2d109f223fcp-2,-0x1.85802fc543cp-2,-0x1.cdbdde20b3cp-2,
+-0x1.038e719387ep-1,-0x1.19722d2a3bep-1,-0x1.2927a0d755ep-1,-0x1.33463ce285ep-1,
+-0x1.385f62d84bep-1,-0x1.38fe6589f7ep-1,-0x1.35a8890da9ep-1,-0x1.2edd02be51ep-1,
+-0x1.2514f93bafep-1,-0x1.18c3846a53ep-1,-0x1.0a55ad739dep-1,-0x1.f464dd8b7bcp-2,
+-0x1.d175682767cp-2,-0x1.ac92b4aa9fcp-2,-0x1.86665f8e63cp-2,-0x1.5f8de7d593cp-2,
+-0x1.389aaf0cafcp-2,-0x1.1211f949d7cp-2,-0x1.d8d9da59978p-3,-0x1.903127bdd78p-3,
+-0x1.4aebb2266f8p-3,-0x1.09b3160c9f8p-3,-0x1.9a3169f9cfp-4,-0x1.2b2b6b2e0fp-4,
+-0x1.8e2c0e37fep-5,-0x1.ba0a7d407cp-6,-0x1.0e90fbeb78p-7,0x1.ecb028291p-8,
+0x1.4d531abf84p-6,0x1.efee8b9004p-6,0x1.324105a3e2p-5,0x1.56a9900c62p-5,
+0x1.66b493cd82p-5,0x1.6446ab6642p-5,0x1.51a55d08a2p-5,0x1.31771a99a2p-5,
+0x1.06c341b142p-5,0x1.a9e4373504p-6,0x1.3f99baa6c4p-6,0x1.adf69e3388p-7,
+0x1.e47c35581p-8,0x1.7ee72c4c2p-9,0x1.73a7d211p-12,0x1.93f66311p-12,
+0x1.ebf055ac2p-9,0x1.7071011408p-7,0x1.84206035c4p-6,0x1.57cc532562p-5,
+0x1.127189b041p-4,0x1.98a3e33da1p-4,0x1.2153ab75e88p-3,0x1.8a6b3da2a88p-3,
+0x1.04ef172b884p-2,0x1.51051f58f04p-2,0x1.aab2b55f4c4p-2,0x1.099f7a5d5e2p-1,
+0x1.45fe8b2ee02p-1,0x1.8b2638589c2p-1,0x1.d9cc3bca322p-1,-0x1.6a043162cfp-4,
+-0x1.f7e160c6bf8p-3,-0x1.84da5359d7cp-2,-0x1.f71363e35bcp-2,-0x1.2a30d56a65ep-1,
+-0x1.4f3da59853ep-1,-0x1.6b83611387ep-1,-0x1.7fcd738ae1ep-1,-0x1.8cdf75c411ep-1,
+-0x1.93752d9b97ep-1,-0x1.94428e04c3ep-1,-0x1.8ff3b709b5ep-1,-0x1.872cf5cb5dep-1,
+-0x1.7a8ac4817bep-1,-0x1.6aa1ca7a9fep-1,-0x1.57fedc1c29ep-1,-0x1.4326fae249ep-1,
+-0x1.2c97555fffep-1,-0x1.14c5473f1bep-1,-0x1.f83cb2807bcp-2,-0x1.c6108275abcp-2,
+-0x1.93c1c43a47cp-2,-0x1.61fc97d86fcp-2,-0x1.315d7787e3cp-2,-0x1.027137ae03cp-2,
+-0x1.ab6a0dbb9f8p-3,-0x1.572cdbafcf8p-3,-0x1.08e69f15178p-3,-0x1.8267a4466fp-4,
+-0x1.012346da5fp-4,-0x1.1d77d784fep-5,-0x1.5d760c8e78p-7,0x1.3e2d037188p-7,
+0x1.ae84e8f604p-6,0x1.4045464b42p-5,0x1.8b8e137322p-5,0x1.ba9467aba2p-5,
+0x1.cf4cfd40c2p-5,0x1.cc29bd1182p-5,0x1.b419be8fe2p-5,0x1.8a8947c0e2p-5,
+0x1.5361cd3c82p-5,0x1.1309f22dc2p-5,0x1.9ccb10a544p-6,0x1.15ab1ff844p-6,
+0x1.38e0e03908p-7,0x1.ee8de0002p-9,0x1.e006edb1p-12,0x1.04e08f588p-11,
+0x1.3db122b01p-8,0x1.dbe02fa108p-7,0x1.f54cfe9444p-6,0x1.bc0bf364a2p-5,
+0x1.627805d9e1p-4,0x1.07e5e691a08p-3,0x1.75b127efb88p-3,0x1.fd6d92d4788p-3,
+0x1.51051f58f04p-2,0x1.b34ac74f584p-2,0x1.138f4c559a2p-1,0x1.5713884e522p-1,
+0x1.a50d2913142p-1,0x1.fe5f130e502p-1,0x1.31f9fec9d31p+0,-0x1.ca5883f85fp-4,
+-0x1.3efab15003cp-2,-0x1.ec52baf2fbcp-2,-0x1.3e784afd1fep-1,-0x1.7989655e57ep-1,
+-0x1.a87208ea65ep-1,-0x1.cc3daa1059ep-1,-0x1.e5edd56113ep-1,-0x1.f67a2f8f43ep-1,
+-0x1.fed0756f69ep-1,-0x1.ffd47bf7d5ep-1,-0x1.fa603040a7ep-1,-0x1.ef439783cfep-1,
+-0x1.df44cf1d0dep-1,-0x1.cb200c89f1ep-1,-0x1.b3879d69dbep-1,-0x1.9923e77dfbep-1,
+-0x1.7c9368a951ep-1,-0x1.5e6ab6f0adep-1,-0x1.3f34807aafep-1,-0x1.1f718b8fc7ep-1,
+-0x1.ff316d346bcp-2,-0x1.c02df04c13cp-2,-0x1.829ebdc247cp-2,-0x1.4736233667cp-2,
+-0x1.0e929e8b73cp-2,-0x1.b27dbbd0178p-3,-0x1.4f637f6cdf8p-3,-0x1.e9394a91ffp-4,
+-0x1.458f568eefp-4,-0x1.696dbf4a1ep-5,-0x1.ba731dbaf8p-7,0x1.92d6f24508p-7,
+0x1.1089ccb5e2p-5,0x1.957de6e222p-5,0x1.f4cf06dc02p-5,0x1.182c532641p-4,
+0x1.254a5e5fd1p-4,0x1.234ddfd231p-4,0x1.1412512661p-4,0x1.f384d5edc2p-5,
+0x1.adb0499f62p-5,0x1.5c396a5ca2p-5,0x1.0551230382p-5,0x1.5f8db8aa04p-6,
+0x1.8c21f3d488p-7,0x1.39134b571p-8,0x1.2fe108108p-11,0x1.4a4b58908p-11,
+0x1.923a1b071p-8,0x1.2d40445e44p-6,0x1.3d58a3c302p-5,0x1.191a0ffac1p-4,
+0x1.c0ca364151p-4,0x1.4e1e7742588p-3,0x1.d920d0c2f08p-3,0x1.427dbdbdd84p-2,
+0x1.aab2b55f4c4p-2,0x1.138f4c559a2p-1,0x1.5ce24061a82p-1,0x1.b25dab42e02p-1,
+0x1.0a8b74a3411p+0,0x1.43169f4bff1p+0,0x1.8364eba07a1p+0,-0x1.1d52eae34f8p-3,
+-0x1.8d22604093cp-2,-0x1.3279a02ac5ep-1,-0x1.8c8006b9e7ep-1,-0x1.d60a0a7d1fep-1,
+-0x1.08387e78d6fp+0,-0x1.1e80ed3150fp+0,-0x1.2e7ea4f46dfp+0,-0x1.38cbceb585fp+0,
+-0x1.3dfc68ced8fp+0,-0x1.3e9e47018efp+0,-0x1.3b391275b7fp+0,-0x1.344e49ba4bfp+0,
+-0x1.2a5940c52afp+0,-0x1.1dcf20f31cfp+0,-0x1.0f1ee907d1fp+0,-0x1.fd62da5bc3ep-1,
+-0x1.d9d2aded99ep-1,-0x1.b4464ab5f5ep-1,-0x1.8d6a597377ep-1,-0x1.65df2db28fep-1,
+-0x1.3e38c5cd7dep-1,-0x1.16fecaec51ep-1,-0x1.e1592209d7cp-2,-0x1.97622db5f7cp-2,
+-0x1.50de0c0003cp-2,-0x1.0e7965a69bcp-2,-0x1.a1907207ff8p-3,-0x1.308bb41c1f8p-3,
+-0x1.9553c9592fp-4,-0x1.c1fc084e9ep-5,-0x1.136daf167cp-6,0x1.f58ab1d308p-7,
+0x1.535083b162p-5,0x1.f8d8014da2p-5,0x1.37c1e5c7c1p-4,0x1.5cd1edf001p-4,
+0x1.6d26bf6591p-4,0x1.6aada9fff1p-4,0x1.57b6a72821p-4,0x1.36f459d8a1p-4,
+0x1.0b7c0e9d71p-4,0x1.b18b772822p-5,0x1.455800d702p-5,0x1.b5b0999104p-6,
+0x1.ed31028288p-7,0x1.85c8a9331p-8,0x1.7a5590f08p-11,0x1.9b38c1708p-11,
+0x1.f4c76ce31p-8,0x1.770ff6b544p-6,0x1.8b19e4b682p-5,0x1.5df9eaa481p-4,
+0x1.176012f3888p-3,0x1.9ffbc689388p-3,0x1.2686aca9e84p-2,0x1.9181b4ae484p-2,
+0x1.099f7a5d5e2p-1,0x1.5713884e522p-1,0x1.b25dab42e02p-1,0x1.0e656fc30c1p+0,
+0x1.4bda3b4a9d1p+0,0x1.92400b8fdb1p+0,0x1.e24fde83961p+0,-0x1.5e2c4451c78p-3,
+-0x1.e76553628fcp-2,-0x1.7821a42f83ep-1,-0x1.e69e13aac5ep-1,-0x1.206f743cbefp+0,
+-0x1.4445f81675fp+0,-0x1.5f9eeac88ffp+0,-0x1.733f10567cfp+0,-0x1.7fe39b6114fp+0,
+-0x1.86422d2697fp+0,-0x1.8708d582adfp+0,-0x1.82de12ee66fp+0,-0x1.7a60d2803afp+0,
+-0x1.6e286fec09fp+0,-0x1.5ec4b5831bfp+0,-0x1.4cbddc3420fp+0,-0x1.38948b8b30fp+0,
+-0x1.22c1d9b1cbfp+0,-0x1.0bb74b6ed9fp+0,-0x1.e7bda84d55ep-1,-0x1.b735abb5edep-1,
+-0x1.868c4255bbep-1,-0x1.5667eaa5cfep-1,-0x1.2760005a09ep-1,-0x1.f3f978c233cp-2,
+-0x1.9d6e69c8ffcp-2,-0x1.4bf2ba9117cp-2,-0x1.003c0c58bbcp-2,-0x1.75c375a7978p-3,
+-0x1.f17370af1fp-4,-0x1.142103ff3fp-4,-0x1.5207464a3cp-6,0x1.33c441b5c4p-6,
+0x1.a06f440182p-5,0x1.35caf950e1p-4,0x1.7e9d42b0d1p-4,0x1.ac19c09d11p-4,
+0x1.c024cbbba1p-4,0x1.bd1bd2dc01p-4,0x1.a5d55af731p-4,0x1.7da0ff2fb1p-4,
+0x1.484770d181p-4,0x1.0a0a775221p-4,0x1.8f49e0a122p-5,0x1.0c959f2aa2p-5,
+0x1.2ea47c4984p-6,0x1.de5fee341p-8,0x1.d052a6788p-11,0x1.f8af5ef88p-11,
+0x1.334c6e7208p-7,0x1.cc4eacfd84p-6,0x1.e4e68bf8a2p-5,0x1.ad85031991p-4,
+0x1.56df4eea908p-3,0x1.fe8773cb408p-3,0x1.697771fbac4p-2,0x1.ecc30f260c4p-2,
+0x1.45fe8b2ee02p-1,0x1.a50d2913142p-1,0x1.0a8b74a3411p+0,0x1.4bda3b4a9d1p+0,
+0x1.9746cf483e1p+0,0x1.edaca8c75c1p+0,0x1.27f768aae388p+1,-0x1.a87500f1d78p-3,
+-0x1.276517b28bep-1,-0x1.c7ec193147ep-1,-0x1.26ec559024fp+0,-0x1.5d9f6d9400fp+0,
+-0x1.89102f18d7fp+0,-0x1.aa364833b1fp+0,-0x1.c2003a99fefp+0,-0x1.d1535ba196fp+0,
+-0x1.d90bd440b9fp+0,-0x1.d9fca10e0ffp+0,-0x1.d4ef9240a8fp+0,-0x1.caa54baffcfp+0,
+-0x1.bbd544d3ebfp+0,-0x1.a92dc8c4bdfp+0,-0x1.9353f63b22fp+0,-0x1.7ae3bf9032fp+0,
+-0x1.606feabd6dfp+0,-0x1.4482115cbbfp+0,-0x1.279aa0a86cfp+0,-0x1.0a30d97b38fp+0,
+-0x1.d965a0a07fep-1,-0x1.9f0ada8613ep-1,-0x1.6608d81f0dep-1,-0x1.2f04b8241dep-1,
+-0x1.f522811d87cp-2,-0x1.925dbd329fcp-2,-0x1.36974d7dc3cp-2,-0x1.c50d52eda78p-3,
+-0x1.2d7d2e2e9f8p-3,-0x1.4eb4ab695fp-4,-0x1.99bc7bcabcp-6,0x1.750e0c3544p-6,
+0x1.f8c6752d42p-5,0x1.7782cda2c1p-4,0x1.cfc7c824b1p-4,0x1.03753e04788p-3,
+0x1.0f9b009ac08p-3,0x1.0dc41ac4f08p-3,0x1.ff51bcdf11p-4,0x1.ce96010791p-4,
+0x1.8deb31cf61p-4,0x1.427a44fc01p-4,0x1.e3fdec98e2p-5,0x1.458f8ef262p-5,
+0x1.6ed800d104p-6,0x1.21ed714908p-7,0x1.19693f344p-10,0x1.31df93744p-10,
+0x1.747ccda108p-7,0x1.16fa398282p-5,0x1.25e1f30031p-4,0x1.045166fab88p-3,
+0x1.9f9b928f808p-3,0x1.356a4d7d184p-2,0x1.b62580f9a44p-2,0x1.2aa5ab0c022p-1,
+0x1.8b2638589c2p-1,0x1.fe5f130e502p-1,0x1.43169f4bff1p+0,0x1.92400b8fdb1p+0,
+0x1.edaca8c75c1p+0,0x1.2b333ee35d08p+1,0x1.66c05ee0e288p+1,-0x1.fcf0552cff8p-3,
+-0x1.623053bc75ep-1,-0x1.1155560a38fp+0,-0x1.619f889c69fp+0,-0x1.a335bb3f85fp+0,
+-0x1.d74be7d62cfp+0,-0x1.ff0b087ae6fp+0,-0x1.0dc88bc011f8p+1,
+-0x1.16f887b81df8p+1,-0x1.1b997586b778p+1,-0x1.1c29d2a8f278p+1,
+-0x1.19229cb7d6f8p+1,-0x1.12f7516860f8p+1,-0x1.0a15ee8b8078p+1,
+-0x1.fdcde41c32fp+0,-0x1.e39ab3f207fp+0,-0x1.c64d48e217fp+0,-0x1.a6959f6de2fp+0,
+-0x1.8518b44ed0fp+0,-0x1.6270847631fp+0,-0x1.3f2c0d0d3dfp+0,-0x1.1bcf4b7514fp+0,
+-0x1.f1a67a8d7dep-1,-0x1.ad4bc0a657ep-1,-0x1.6b54654667ep-1,-0x1.2c7064ef2dep-1,
+-0x1.e2737923f3cp-2,-0x1.7468d31fd7cp-2,-0x1.0f9cd373e7cp-2,-0x1.697eed43478p-3,
+-0x1.9152e828afp-4,-0x1.eb49bee3fcp-6,0x1.bf4e491c04p-6,0x1.2e9f1dd751p-4,
+0x1.c2402f7971p-4,0x1.160b6018308p-3,0x1.371962c0508p-3,0x1.45aa18b8188p-3,
+0x1.43757943488p-3,0x1.328b79e6608p-3,0x1.15540e66a08p-3,0x1.dd1e519411p-4,
+0x1.82a972aeb1p-4,0x1.22295d2c21p-4,0x1.865bd539c2p-5,0x1.b7dbc44bc4p-6,
+0x1.5ba2190e88p-7,0x1.516bf7a04p-10,0x1.6ec0b7e04p-10,0x1.bea021e688p-7,
+0x1.4e80f11fe2p-5,0x1.606020f3e1p-4,0x1.38215d82908p-3,0x1.f2540070d88p-3,
+0x1.72ffea4a444p-2,0x1.06ad2cdf882p-1,0x1.66169d3fb82p-1,0x1.d9cc3bca322p-1,
+0x1.31f9fec9d31p+0,0x1.8364eba07a1p+0,0x1.e24fde83961p+0,0x1.27f768aae388p+1,
+0x1.66c05ee0e288p+1,0x1.ae27ce9d3008p+1,
+},{
+-0x1.d14ef573fcp-4,-0x1.f84653c25ep-3,-0x1.231306ab8fp-2,-0x1.0aea25c51fp-2,
+-0x1.9f9c6c6abep-3,-0x1.108788049ep-3,-0x1.14b8e0c1bcp-4,-0x1.1cfd8c2bfp-6,
+0x1.86c6e8a82p-7,0x1.4e3f7e791p-6,0x1.bb5184b62p-7,0x1.2e1d01508p-9,
+0x1.a63541708p-9,0x1.397d4d6388p-5,0x1.14574d0da2p-3,0x1.4e07331b01p-2,
+-0x1.f84653c25ep-3,-0x1.114087ee2f8p-1,-0x1.3b73219a5f8p-1,-0x1.21445021a78p-1,
+-0x1.c26a5ea78fp-2,-0x1.275a11477fp-2,-0x1.2be54c9f3ep-3,-0x1.34db399778p-5,
+0x1.a78075511p-6,0x1.6a3d2a4308p-5,0x1.e07176081p-6,0x1.4769c41c4p-8,
+0x1.c990a12c4p-8,0x1.53bdf28d04p-4,0x1.2b7b8d0ba1p-2,0x1.6a00280b688p-1,
+-0x1.231306ab8fp-2,-0x1.3b73219a5f8p-1,-0x1.6c29f3748f8p-1,-0x1.4df00860d78p-1,
+-0x1.03fc6d46f78p-1,-0x1.54f658f3dfp-2,-0x1.5a3536dffep-3,-0x1.648d62aa78p-5,
+0x1.e8e6f32b1p-6,0x1.a22db94008p-5,0x1.155185a108p-5,0x1.79f98a844p-8,
+0x1.081ce0ca2p-7,0x1.88351fbb84p-4,0x1.59bb22b341p-2,0x1.a1e74b26388p-1,
+-0x1.0aea25c51fp-2,-0x1.21445021a78p-1,-0x1.4df00860d78p-1,-0x1.323860149f8p-1,
+-0x1.dcd040917fp-2,-0x1.38a96d406fp-2,-0x1.3d78d5551ep-3,-0x1.46f53396f8p-5,
+0x1.c05289521p-6,0x1.7f78136b88p-5,0x1.fc99de791p-6,0x1.5a9a29a04p-8,
+0x1.e461c7b04p-8,0x1.67a7525944p-4,0x1.3d08e324b1p-2,0x1.7f377dd9708p-1,
+-0x1.9f9c6c6abep-3,-0x1.c26a5ea78fp-2,-0x1.03fc6d46f78p-1,-0x1.dcd040917fp-2,
+-0x1.7338b8e9bfp-2,-0x1.e6d7fab95ep-3,-0x1.ee5564fb3cp-4,-0x1.fd1a9731fp-6,
+0x1.5d0a394e1p-6,0x1.2a8c6ec988p-5,0x1.8bf83cb51p-6,0x1.0dd893904p-8,
+0x1.791d2da04p-8,0x1.1801d32844p-4,0x1.eda71580e2p-3,0x1.2a5a26a1508p-1,
+-0x1.108788049ep-3,-0x1.275a11477fp-2,-0x1.54f658f3dfp-2,-0x1.38a96d406fp-2,
+-0x1.e6d7fab95ep-3,-0x1.3f3d2add3ep-3,-0x1.44267a4afcp-4,-0x1.4dd5edc0fp-6,
+0x1.c9c0d57e2p-7,0x1.878920541p-6,0x1.03a663961p-6,0x1.61e4ada88p-9,
+0x1.ee9243c88p-9,0x1.6f381f2108p-5,0x1.43b42d4102p-3,0x1.87472ef5b1p-2,
+-0x1.14b8e0c1bcp-4,-0x1.2be54c9f3ep-3,-0x1.5a3536dffep-3,-0x1.3d78d5551ep-3,
+-0x1.ee5564fb3cp-4,-0x1.44267a4afcp-4,-0x1.49232196f8p-5,-0x1.52f8ba45ep-7,
+0x1.d0cbad744p-8,0x1.8d8f2ca42p-7,0x1.07a502a82p-7,0x1.67567931p-10,
+0x1.f62e1d71p-10,0x1.74de66801p-6,0x1.48af126184p-4,0x1.8d4c378f22p-3,
+-0x1.1cfd8c2bfp-6,-0x1.34db399778p-5,-0x1.648d62aa78p-5,-0x1.46f53396f8p-5,
+-0x1.fd1a9731fp-6,-0x1.4dd5edc0fp-6,-0x1.52f8ba45ep-7,-0x1.5d198c3f8p-9,
+0x1.deaeef81p-10,0x1.997022e88p-9,0x1.0f85a5f88p-9,0x1.72131384p-12,
+0x1.0297aa42p-11,0x1.800280ac4p-8,0x1.528133511p-6,0x1.992b2daa08p-5,
+0x1.86c6e8a82p-7,0x1.a78075511p-6,0x1.e8e6f32b1p-6,0x1.c05289521p-6,
+0x1.5d0a394e1p-6,0x1.c9c0d57e2p-7,0x1.d0cbad744p-8,0x1.deaeef81p-10,
+-0x1.482f087fp-10,-0x1.18b599178p-9,-0x1.744f2c0fp-10,-0x1.fb7198f8p-13,
+-0x1.62948b7cp-12,-0x1.07469d53cp-8,-0x1.d027c85dep-7,-0x1.18865215f8p-5,
+0x1.4e3f7e791p-6,0x1.6a3d2a4308p-5,0x1.a22db94008p-5,0x1.7f78136b88p-5,
+0x1.2a8c6ec988p-5,0x1.878920541p-6,0x1.8d8f2ca42p-7,0x1.997022e88p-9,
+-0x1.18b599178p-9,-0x1.e034816f8p-9,-0x1.3e73a95f8p-9,-0x1.b209bb3cp-12,
+-0x1.2f49951ep-11,-0x1.c261bfffcp-8,-0x1.8d02fcf9fp-6,-0x1.dfe3a10378p-5,
+0x1.bb5184b62p-7,0x1.e07176081p-6,0x1.155185a108p-5,0x1.fc99de791p-6,
+0x1.8bf83cb51p-6,0x1.03a663961p-6,0x1.07a502a82p-7,0x1.0f85a5f88p-9,
+-0x1.744f2c0fp-10,-0x1.3e73a95f8p-9,-0x1.a65e1e9fp-10,-0x1.1fd5f2bcp-12,
+-0x1.924141bcp-12,-0x1.2aac9cf7cp-8,-0x1.07480b77fp-6,-0x1.3e3e071278p-5,
+0x1.2e1d01508p-9,0x1.4769c41c4p-8,0x1.79f98a844p-8,0x1.5a9a29a04p-8,
+0x1.0dd893904p-8,0x1.61e4ada88p-9,0x1.67567931p-10,0x1.72131384p-12,
+-0x1.fb7198f8p-13,-0x1.b209bb3cp-12,-0x1.1fd5f2bcp-12,-0x1.884f37ep-15,
+-0x1.122117fp-14,-0x1.9714fbdep-11,-0x1.66d7c3c78p-9,-0x1.b1c0a157cp-8,
+0x1.a63541708p-9,0x1.c990a12c4p-8,0x1.081ce0ca2p-7,0x1.e461c7b04p-8,
+0x1.791d2da04p-8,0x1.ee9243c88p-9,0x1.f62e1d71p-10,0x1.0297aa42p-11,
+-0x1.62948b7cp-12,-0x1.2f49951ep-11,-0x1.924141bcp-12,-0x1.122117fp-14,
+-0x1.7f1993fp-14,-0x1.1c73a1afp-10,-0x1.f57d09a78p-9,-0x1.2f1680a3ep-7,
+0x1.397d4d6388p-5,0x1.53bdf28d04p-4,0x1.88351fbb84p-4,0x1.67a7525944p-4,
+0x1.1801d32844p-4,0x1.6f381f2108p-5,0x1.74de66801p-6,0x1.800280ac4p-8,
+-0x1.07469d53cp-8,-0x1.c261bfffcp-8,-0x1.2aac9cf7cp-8,-0x1.9714fbdep-11,
+-0x1.1c73a1afp-10,-0x1.a6692723ep-7,-0x1.745aeba5f8p-5,-0x1.c215e56e3cp-4,
+0x1.14574d0da2p-3,0x1.2b7b8d0ba1p-2,0x1.59bb22b341p-2,0x1.3d08e324b1p-2,
+0x1.eda71580e2p-3,0x1.43b42d4102p-3,0x1.48af126184p-4,0x1.528133511p-6,
+-0x1.d027c85dep-7,-0x1.8d02fcf9fp-6,-0x1.07480b77fp-6,-0x1.66d7c3c78p-9,
+-0x1.f57d09a78p-9,-0x1.745aeba5f8p-5,-0x1.483b2c18bep-3,-0x1.8cc01f812fp-2,
+0x1.4e07331b01p-2,0x1.6a00280b688p-1,0x1.a1e74b26388p-1,0x1.7f377dd9708p-1,
+0x1.2a5a26a1508p-1,0x1.87472ef5b1p-2,0x1.8d4c378f22p-3,0x1.992b2daa08p-5,
+-0x1.18865215f8p-5,-0x1.dfe3a10378p-5,-0x1.3e3e071278p-5,-0x1.b1c0a157cp-8,
+-0x1.2f1680a3ep-7,-0x1.c215e56e3cp-4,-0x1.8cc01f812fp-2,-0x1.df92ce367f8p-1,
+-0x1.f84653c25ep-3,-0x1.114087ee2f8p-1,-0x1.3b73219a5f8p-1,-0x1.21445021a78p-1,
+-0x1.c26a5ea78fp-2,-0x1.275a11477fp-2,-0x1.2be54c9f3ep-3,-0x1.34db399778p-5,
+0x1.a78075511p-6,0x1.6a3d2a4308p-5,0x1.e07176081p-6,0x1.4769c41c4p-8,
+0x1.c990a12c4p-8,0x1.53bdf28d04p-4,0x1.2b7b8d0ba1p-2,0x1.6a00280b688p-1,
+-0x1.114087ee2f8p-1,-0x1.28228f3fa3cp+0,-0x1.55ddcd113bcp+0,-0x1.397dab561fcp+0,
+-0x1.e82275f85f8p-1,-0x1.4015dfe9d78p-1,-0x1.450284d5cfp-2,-0x1.4eb88b687cp-4,
+0x1.caf7916f08p-5,0x1.8892e908c4p-4,0x1.0456a55144p-4,0x1.62d4e8e82p-7,
+0x1.efe1fdf02p-7,0x1.7031662622p-3,0x1.448fea34b88p-1,0x1.8850cae6e84p+0,
+-0x1.3b73219a5f8p-1,-0x1.55ddcd113bcp+0,-0x1.8aa8f6a9d3cp+0,-0x1.69e70ca937cp+0,
+-0x1.19c20e4947cp+0,-0x1.7183f5d7078p-1,-0x1.773348642fp-2,-0x1.82693829fcp-4,
+0x1.08ec0ff604p-4,0x1.c532b6cf44p-4,0x1.2c8ab9e7c4p-4,0x1.99a0a25c2p-7,
+0x1.1e3afa321p-6,0x1.a90d576162p-3,0x1.76aefb11888p-1,0x1.c4e662d0d04p+0,
+-0x1.21445021a78p-1,-0x1.397dab561fcp+0,-0x1.69e70ca937cp+0,-0x1.4bdd2e585bcp+0,
+-0x1.025f224f6bcp+0,-0x1.52d8542fcf8p-1,-0x1.580edb63bfp-2,-0x1.625695743cp-4,
+0x1.e5ddc15788p-5,0x1.9f94f4d104p-4,0x1.1398ad2184p-4,0x1.77a0af4a2p-7,
+0x1.067906691p-6,0x1.85c5a46642p-3,0x1.57958947c08p-1,0x1.9f4ef6ad2c4p+0,
+-0x1.c26a5ea78fp-2,-0x1.e82275f85f8p-1,-0x1.19c20e4947cp+0,-0x1.025f224f6bcp+0,
+-0x1.924f0a04f78p-1,-0x1.07ce8317ef8p-1,-0x1.0bdd812bffp-2,-0x1.13de6d453cp-4,
+0x1.7a4501b588p-5,0x1.438cc5b004p-4,0x1.ad211bc108p-5,0x1.247195c22p-7,
+0x1.98b1d14a2p-7,0x1.2f74ab65c2p-3,0x1.0b7f0cfba08p-1,0x1.435647941c4p+0,
+-0x1.275a11477fp-2,-0x1.4015dfe9d78p-1,-0x1.7183f5d7078p-1,-0x1.52d8542fcf8p-1,
+-0x1.07ce8317ef8p-1,-0x1.59f91224cfp-2,-0x1.5f4bac05dep-3,-0x1.69cac269f8p-5,
+0x1.f0163bac1p-6,0x1.a852f0a888p-5,0x1.1964d01988p-5,0x1.7f8782084p-8,
+0x1.0bfe7d0c2p-7,0x1.8df8a2a7c4p-4,0x1.5ecfcc9451p-2,0x1.a80b7998408p-1,
+-0x1.2be54c9f3ep-3,-0x1.450284d5cfp-2,-0x1.773348642fp-2,-0x1.580edb63bfp-2,
+-0x1.0bdd812bffp-2,-0x1.5f4bac05dep-3,-0x1.64b33c743cp-4,-0x1.6f5ba9d5fp-6,
+0x1.f7b80d542p-7,0x1.aeda1faf1p-6,0x1.1db912511p-6,0x1.856e06008p-9,
+0x1.101df9104p-8,0x1.9418079e88p-5,0x1.6435752462p-3,0x1.ae918f2861p-2,
+-0x1.34db399778p-5,-0x1.4eb88b687cp-4,-0x1.82693829fcp-4,-0x1.625695743cp-4,
+-0x1.13de6d453cp-4,-0x1.69cac269f8p-5,-0x1.6f5ba9d5fp-6,-0x1.7a559d2bcp-8,
+0x1.036284d44p-8,0x1.bbb9bea84p-8,0x1.264296b04p-8,0x1.9110cd62p-11,
+0x1.183f6af1p-10,0x1.a02af9b02p-7,0x1.6eda206f08p-5,0x1.bb6f031444p-4,
+0x1.a78075511p-6,0x1.caf7916f08p-5,0x1.08ec0ff604p-4,0x1.e5ddc15788p-5,
+0x1.7a4501b588p-5,0x1.f0163bac1p-6,0x1.f7b80d542p-7,0x1.036284d44p-8,
+-0x1.63aab2578p-9,-0x1.30377f57cp-8,-0x1.937cce9f8p-9,-0x1.12f8229ep-11,
+-0x1.80461a1ep-11,-0x1.1d52c54fep-7,-0x1.f7066ea1fp-6,-0x1.300442cbbcp-4,
+0x1.6a3d2a4308p-5,0x1.8892e908c4p-4,0x1.c532b6cf44p-4,0x1.9f94f4d104p-4,
+0x1.438cc5b004p-4,0x1.a852f0a888p-5,0x1.aeda1faf1p-6,0x1.bbb9bea84p-8,
+-0x1.30377f57cp-8,-0x1.04359da1ep-7,-0x1.591eb0bbcp-8,-0x1.d662b7fep-11,
+-0x1.48af83bfp-10,-0x1.e8191e85ep-7,-0x1.ae4232ae78p-5,-0x1.0409ca7f3ep-3,
+0x1.e07176081p-6,0x1.0456a55144p-4,0x1.2c8ab9e7c4p-4,0x1.1398ad2184p-4,
+0x1.ad211bc108p-5,0x1.1964d01988p-5,0x1.1db912511p-6,0x1.264296b04p-8,
+-0x1.937cce9f8p-9,-0x1.591eb0bbcp-8,-0x1.c9bcea678p-9,-0x1.37f09fbep-11,
+-0x1.b3f0df3ep-11,-0x1.43afa5c1ep-7,-0x1.1d54521d78p-5,-0x1.58e4909dfcp-4,
+0x1.4769c41c4p-8,0x1.62d4e8e82p-7,0x1.99a0a25c2p-7,0x1.77a0af4a2p-7,
+0x1.247195c22p-7,0x1.7f8782084p-8,0x1.856e06008p-9,0x1.9110cd62p-11,
+-0x1.12f8229ep-11,-0x1.d662b7fep-11,-0x1.37f09fbep-11,-0x1.a9299efp-14,
+-0x1.2915ed78p-13,-0x1.b92c151fp-10,-0x1.84e4b42fcp-8,-0x1.d6137ef1ep-7,
+0x1.c990a12c4p-8,0x1.efe1fdf02p-7,0x1.1e3afa321p-6,0x1.067906691p-6,
+0x1.98b1d14a2p-7,0x1.0bfe7d0c2p-7,0x1.101df9104p-8,0x1.183f6af1p-10,
+-0x1.80461a1ep-11,-0x1.48af83bfp-10,-0x1.b3f0df3ep-11,-0x1.2915ed78p-13,
+-0x1.9f2e8b78p-13,-0x1.3445c26f8p-9,-0x1.0fbe050fep-7,-0x1.48782834fp-6,
+0x1.53bdf28d04p-4,0x1.7031662622p-3,0x1.a90d576162p-3,0x1.85c5a46642p-3,
+0x1.2f74ab65c2p-3,0x1.8df8a2a7c4p-4,0x1.9418079e88p-5,0x1.a02af9b02p-7,
+-0x1.1d52c54fep-7,-0x1.e8191e85ep-7,-0x1.43afa5c1ep-7,-0x1.b92c151fp-10,
+-0x1.3445c26f8p-9,-0x1.c9c8df74fp-6,-0x1.93898a13bcp-4,-0x1.e7c6e9c97ep-3,
+0x1.2b7b8d0ba1p-2,0x1.448fea34b88p-1,0x1.76aefb11888p-1,0x1.57958947c08p-1,
+0x1.0b7f0cfba08p-1,0x1.5ecfcc9451p-2,0x1.6435752462p-3,0x1.6eda206f08p-5,
+-0x1.f7066ea1fp-6,-0x1.ae4232ae78p-5,-0x1.1d54521d78p-5,-0x1.84e4b42fcp-8,
+-0x1.0fbe050fep-7,-0x1.93898a13bcp-4,-0x1.63b7da2e8fp-2,-0x1.adf9bbbe2f8p-1,
+0x1.6a00280b688p-1,0x1.8850cae6e84p+0,0x1.c4e662d0d04p+0,0x1.9f4ef6ad2c4p+0,
+0x1.435647941c4p+0,0x1.a80b7998408p-1,0x1.ae918f2861p-2,0x1.bb6f031444p-4,
+-0x1.300442cbbcp-4,-0x1.0409ca7f3ep-3,-0x1.58e4909dfcp-4,-0x1.d6137ef1ep-7,
+-0x1.48782834fp-6,-0x1.e7c6e9c97ep-3,-0x1.adf9bbbe2f8p-1,-0x1.03ddfebe25ep+1,
+-0x1.231306ab8fp-2,-0x1.3b73219a5f8p-1,-0x1.6c29f3748f8p-1,-0x1.4df00860d78p-1,
+-0x1.03fc6d46f78p-1,-0x1.54f658f3dfp-2,-0x1.5a3536dffep-3,-0x1.648d62aa78p-5,
+0x1.e8e6f32b1p-6,0x1.a22db94008p-5,0x1.155185a108p-5,0x1.79f98a844p-8,
+0x1.081ce0ca2p-7,0x1.88351fbb84p-4,0x1.59bb22b341p-2,0x1.a1e74b26388p-1,
+-0x1.3b73219a5f8p-1,-0x1.55ddcd113bcp+0,-0x1.8aa8f6a9d3cp+0,-0x1.69e70ca937cp+0,
+-0x1.19c20e4947cp+0,-0x1.7183f5d7078p-1,-0x1.773348642fp-2,-0x1.82693829fcp-4,
+0x1.08ec0ff604p-4,0x1.c532b6cf44p-4,0x1.2c8ab9e7c4p-4,0x1.99a0a25c2p-7,
+0x1.1e3afa321p-6,0x1.a90d576162p-3,0x1.76aefb11888p-1,0x1.c4e662d0d04p+0,
+-0x1.6c29f3748f8p-1,-0x1.8aa8f6a9d3cp+0,-0x1.c79b3d696bcp+0,-0x1.a1ca4f334fcp+0,
+-0x1.4544ed0d5fcp+0,-0x1.aa942f92378p-1,-0x1.b124400e8fp-2,-0x1.be15625b7cp-4,
+0x1.31d559c484p-4,0x1.05979a12e2p-3,0x1.5af4300e44p-4,0x1.d8e2a0502p-7,
+0x1.4a6ea7ac1p-6,0x1.eab11f64a2p-3,0x1.b08b8460588p-1,0x1.056b8b51dc2p+1,
+-0x1.4df00860d78p-1,-0x1.69e70ca937cp+0,-0x1.a1ca4f334fcp+0,-0x1.7f1ce9c4f3cp+0,
+-0x1.2a45755603cp+0,-0x1.872c0bbfff8p-1,-0x1.8d30a9781fp-2,-0x1.990ecccdbcp-4,
+0x1.1872dd5244p-4,0x1.dfc2587f84p-4,0x1.3e27f4a004p-4,0x1.b1a28bfe2p-7,
+0x1.2f017b431p-6,0x1.c1f6ae1582p-3,0x1.8ca49b21908p-1,0x1.df718b4d944p+0,
+-0x1.03fc6d46f78p-1,-0x1.19c20e4947cp+0,-0x1.4544ed0d5fcp+0,-0x1.2a45755603cp+0,
+-0x1.d06fb246278p-1,-0x1.308bb41c1f8p-1,-0x1.353b25285fp-2,-0x1.3e787a3ebcp-4,
+0x1.b4af4fc288p-5,0x1.7583d1be84p-4,0x1.ef66137e08p-5,0x1.519ae5762p-7,
+0x1.d7ceedfe2p-7,0x1.5e51534502p-3,0x1.34ce1ae1708p-1,0x1.7544e95a844p+0,
+-0x1.54f658f3dfp-2,-0x1.7183f5d7078p-1,-0x1.aa942f92378p-1,-0x1.872c0bbfff8p-1,
+-0x1.308bb41c1f8p-1,-0x1.8f6694132fp-2,-0x1.958b9a4a9ep-3,-0x1.a1a9a68cf8p-5,
+0x1.1e5921b308p-5,0x1.e9d9ef9588p-5,0x1.44d948a688p-5,0x1.bac1bff04p-8,
+0x1.356139002p-7,0x1.cb6dd0ce44p-4,0x1.94fc99b9f1p-2,0x1.e9876f42108p-1,
+-0x1.5a3536dffep-3,-0x1.773348642fp-2,-0x1.b124400e8fp-2,-0x1.8d30a9781fp-2,
+-0x1.353b25285fp-2,-0x1.958b9a4a9ep-3,-0x1.9bc8d3cdbcp-4,-0x1.a816995bfp-6,
+0x1.22c0e7241p-6,0x1.f16332491p-6,0x1.49d8b02b1p-6,0x1.c19187d08p-9,
+0x1.3a23b3f84p-8,0x1.d27f424b88p-5,0x1.9b37a007a2p-3,0x1.f10f6d0801p-2,
+-0x1.648d62aa78p-5,-0x1.82693829fcp-4,-0x1.be15625b7cp-4,-0x1.990ecccdbcp-4,
+-0x1.3e787a3ebcp-4,-0x1.a1a9a68cf8p-5,-0x1.a816995bfp-6,-0x1.b4c27bc3cp-8,
+0x1.2b70e63c4p-8,0x1.001fe0482p-7,0x1.53b3b5984p-8,0x1.cf0050a2p-11,
+0x1.43869491p-10,0x1.e06f88242p-7,0x1.a7810eec08p-5,0x1.ffe97a8ac4p-4,
+0x1.e8e6f32b1p-6,0x1.08ec0ff604p-4,0x1.31d559c484p-4,0x1.1872dd5244p-4,
+0x1.b4af4fc288p-5,0x1.1e5921b308p-5,0x1.22c0e7241p-6,0x1.2b70e63c4p-8,
+-0x1.9a976f878p-9,-0x1.5f323d6fcp-8,-0x1.d1cc10cf8p-9,-0x1.3d6e9f5ep-11,
+-0x1.bb9dc6dep-11,-0x1.496296dbep-7,-0x1.225a60d3f8p-5,-0x1.5ef717553cp-4,
+0x1.a22db94008p-5,0x1.c532b6cf44p-4,0x1.05979a12e2p-3,0x1.dfc2587f84p-4,
+0x1.7583d1be84p-4,0x1.e9d9ef9588p-5,0x1.f16332491p-6,0x1.001fe0482p-7,
+-0x1.5f323d6fcp-8,-0x1.2c64986dep-7,-0x1.8e6a7953cp-8,-0x1.0f83585fp-10,
+-0x1.7b71981fp-10,-0x1.19bca9e8fp-6,-0x1.f0b3cf2178p-5,-0x1.2c3200bffep-3,
+0x1.155185a108p-5,0x1.2c8ab9e7c4p-4,0x1.5af4300e44p-4,0x1.3e27f4a004p-4,
+0x1.ef66137e08p-5,0x1.44d948a688p-5,0x1.49d8b02b1p-6,0x1.53b3b5984p-8,
+-0x1.d1cc10cf8p-9,-0x1.8e6a7953cp-8,-0x1.083670cbcp-8,-0x1.681cb07ep-11,
+-0x1.f7431ffep-11,-0x1.75ac148dep-7,-0x1.496460f078p-5,-0x1.8e275f4f7cp-4,
+0x1.79f98a844p-8,0x1.99a0a25c2p-7,0x1.d8e2a0502p-7,0x1.b1a28bfe2p-7,
+0x1.519ae5762p-7,0x1.bac1bff04p-8,0x1.c19187d08p-9,0x1.cf0050a2p-11,
+-0x1.3d6e9f5ep-11,-0x1.0f83585fp-10,-0x1.681cb07ep-11,-0x1.ead1c4fp-14,
+-0x1.56f6c078p-13,-0x1.fd4d257fp-10,-0x1.c0f30147cp-8,-0x1.0f559ddefp-6,
+0x1.081ce0ca2p-7,0x1.1e3afa321p-6,0x1.4a6ea7ac1p-6,0x1.2f017b431p-6,
+0x1.d7ceedfe2p-7,0x1.356139002p-7,0x1.3a23b3f84p-8,0x1.43869491p-10,
+-0x1.bb9dc6dep-11,-0x1.7b71981fp-10,-0x1.f7431ffep-11,-0x1.56f6c078p-13,
+-0x1.df4c1e78p-13,-0x1.63e0d69f8p-9,-0x1.39b4ee9bep-7,-0x1.7b31b01afp-6,
+0x1.88351fbb84p-4,0x1.a90d576162p-3,0x1.eab11f64a2p-3,0x1.c1f6ae1582p-3,
+0x1.5e51534502p-3,0x1.cb6dd0ce44p-4,0x1.d27f424b88p-5,0x1.e06f88242p-7,
+-0x1.496296dbep-7,-0x1.19bca9e8fp-6,-0x1.75ac148dep-7,-0x1.fd4d257fp-10,
+-0x1.63e0d69f8p-9,-0x1.083d57ad78p-5,-0x1.d1dac39d3cp-4,-0x1.198d36991fp-2,
+0x1.59bb22b341p-2,0x1.76aefb11888p-1,0x1.b08b8460588p-1,0x1.8ca49b21908p-1,
+0x1.34ce1ae1708p-1,0x1.94fc99b9f1p-2,0x1.9b37a007a2p-3,0x1.a7810eec08p-5,
+-0x1.225a60d3f8p-5,-0x1.f0b3cf2178p-5,-0x1.496460f078p-5,-0x1.c0f30147cp-8,
+-0x1.39b4ee9bep-7,-0x1.d1dac39d3cp-4,-0x1.9aa69f74efp-2,-0x1.f060276a5f8p-1,
+0x1.a1e74b26388p-1,0x1.c4e662d0d04p+0,0x1.056b8b51dc2p+1,0x1.df718b4d944p+0,
+0x1.7544e95a844p+0,0x1.e9876f42108p-1,0x1.f10f6d0801p-2,0x1.ffe97a8ac4p-4,
+-0x1.5ef717553cp-4,-0x1.2c3200bffep-3,-0x1.8e275f4f7cp-4,-0x1.0f559ddefp-6,
+-0x1.7b31b01afp-6,-0x1.198d36991fp-2,-0x1.f060276a5f8p-1,-0x1.2bff719771ep+1,
+-0x1.0aea25c51fp-2,-0x1.21445021a78p-1,-0x1.4df00860d78p-1,-0x1.323860149f8p-1,
+-0x1.dcd040917fp-2,-0x1.38a96d406fp-2,-0x1.3d78d5551ep-3,-0x1.46f53396f8p-5,
+0x1.c05289521p-6,0x1.7f78136b88p-5,0x1.fc99de791p-6,0x1.5a9a29a04p-8,
+0x1.e461c7b04p-8,0x1.67a7525944p-4,0x1.3d08e324b1p-2,0x1.7f377dd9708p-1,
+-0x1.21445021a78p-1,-0x1.397dab561fcp+0,-0x1.69e70ca937cp+0,-0x1.4bdd2e585bcp+0,
+-0x1.025f224f6bcp+0,-0x1.52d8542fcf8p-1,-0x1.580edb63bfp-2,-0x1.625695743cp-4,
+0x1.e5ddc15788p-5,0x1.9f94f4d104p-4,0x1.1398ad2184p-4,0x1.77a0af4a2p-7,
+0x1.067906691p-6,0x1.85c5a46642p-3,0x1.57958947c08p-1,0x1.9f4ef6ad2c4p+0,
+-0x1.4df00860d78p-1,-0x1.69e70ca937cp+0,-0x1.a1ca4f334fcp+0,-0x1.7f1ce9c4f3cp+0,
+-0x1.2a45755603cp+0,-0x1.872c0bbfff8p-1,-0x1.8d30a9781fp-2,-0x1.990ecccdbcp-4,
+0x1.1872dd5244p-4,0x1.dfc2587f84p-4,0x1.3e27f4a004p-4,0x1.b1a28bfe2p-7,
+0x1.2f017b431p-6,0x1.c1f6ae1582p-3,0x1.8ca49b21908p-1,0x1.df718b4d944p+0,
+-0x1.323860149f8p-1,-0x1.4bdd2e585bcp+0,-0x1.7f1ce9c4f3cp+0,-0x1.5f505b4257cp+0,
+-0x1.1183a79a67cp+0,-0x1.66b43edd478p-1,-0x1.6c38fce0afp-2,-0x1.771af47bfcp-4,
+0x1.012bc3a404p-4,0x1.b7f034dd44p-4,0x1.23bfa1b5c4p-4,0x1.8da479cc2p-7,
+0x1.15db13ea1p-6,0x1.9c9da68862p-3,0x1.6bb88e83488p-1,0x1.b7a61c93b04p+0,
+-0x1.dcd040917fp-2,-0x1.025f224f6bcp+0,-0x1.2a45755603cp+0,-0x1.1183a79a67cp+0,
+-0x1.a9e324dcef8p-1,-0x1.17449427678p-1,-0x1.1b9076ecefp-2,-0x1.2409785cfcp-4,
+0x1.90706f8608p-5,0x1.568334ac44p-4,0x1.c6479ec988p-5,0x1.35954fc42p-7,
+0x1.b0a5bbcc2p-7,0x1.413d9dffe2p-3,0x1.1b2c7995288p-1,0x1.564984f9a04p+0,
+-0x1.38a96d406fp-2,-0x1.52d8542fcf8p-1,-0x1.872c0bbfff8p-1,-0x1.66b43edd478p-1,
+-0x1.17449427678p-1,-0x1.6e3feea2bfp-2,-0x1.73e26485bep-3,-0x1.7efef71178p-5,
+0x1.0694ad2e88p-5,0x1.c1315aa908p-5,0x1.29e2c02a08p-5,0x1.9601da4c4p-8,
+0x1.1bb361ae2p-7,0x1.a54ba96004p-4,0x1.735f428861p-2,0x1.c0e5b35bc88p-1,
+-0x1.3d78d5551ep-3,-0x1.580edb63bfp-2,-0x1.8d30a9781fp-2,-0x1.6c38fce0afp-2,
+-0x1.1b9076ecefp-2,-0x1.73e26485bep-3,-0x1.799b0b7bfcp-4,-0x1.84e36144fp-6,
+0x1.0a9ed73b1p-6,0x1.c81a7b901p-6,0x1.2e77f6521p-6,0x1.9c40e5888p-9,
+0x1.2010b9d44p-8,0x1.abc6eaff08p-5,0x1.7915e50882p-3,0x1.c7cdaa4d71p-2,
+-0x1.46f53396f8p-5,-0x1.625695743cp-4,-0x1.990ecccdbcp-4,-0x1.771af47bfcp-4,
+-0x1.2409785cfcp-4,-0x1.7efef71178p-5,-0x1.84e36144fp-6,-0x1.90820427cp-8,
+0x1.12963dd84p-8,0x1.d5bb40ec4p-8,0x1.378191744p-8,0x1.a8924182p-11,
+0x1.28ac2901p-10,0x1.b88f04922p-7,0x1.845a405788p-5,0x1.d56c241484p-4,
+0x1.c05289521p-6,0x1.e5ddc15788p-5,0x1.1872dd5244p-4,0x1.012bc3a404p-4,
+0x1.90706f8608p-5,0x1.0694ad2e88p-5,0x1.0a9ed73b1p-6,0x1.12963dd84p-8,
+-0x1.7883004f8p-9,-0x1.420bdd13cp-8,-0x1.ab2299178p-9,-0x1.2315ae7ep-11,
+-0x1.96cb9dfep-11,-0x1.2e0baa6dep-7,-0x1.0a40d36878p-5,-0x1.41d59fcb7cp-4,
+0x1.7f78136b88p-5,0x1.9f94f4d104p-4,0x1.dfc2587f84p-4,0x1.b7f034dd44p-4,
+0x1.568334ac44p-4,0x1.c1315aa908p-5,0x1.c81a7b901p-6,0x1.d5bb40ec4p-8,
+-0x1.420bdd13cp-8,-0x1.1375b5dfep-7,-0x1.6d58c0b7cp-8,-0x1.f1f439dep-11,
+-0x1.5bf300afp-10,-0x1.025a3081fp-6,-0x1.c779a71df8p-5,-0x1.134751351ep-3,
+0x1.fc99de791p-6,0x1.1398ad2184p-4,0x1.3e27f4a004p-4,0x1.23bfa1b5c4p-4,
+0x1.c6479ec988p-5,0x1.29e2c02a08p-5,0x1.2e77f6521p-6,0x1.378191744p-8,
+-0x1.ab2299178p-9,-0x1.6d58c0b7cp-8,-0x1.e490a95f8p-9,-0x1.4a38dd9ep-11,
+-0x1.cd7d951ep-11,-0x1.56a81fffep-7,-0x1.2e0d4e7cf8p-5,-0x1.6d1b3881bcp-4,
+0x1.5a9a29a04p-8,0x1.77a0af4a2p-7,0x1.b1a28bfe2p-7,0x1.8da479cc2p-7,
+0x1.35954fc42p-7,0x1.9601da4c4p-8,0x1.9c40e5888p-9,0x1.a8924182p-11,
+-0x1.2315ae7ep-11,-0x1.f1f439dep-11,-0x1.4a38dd9ep-11,-0x1.c2149dfp-14,
+-0x1.3a7f4cf8p-13,-0x1.d307480fp-10,-0x1.9baf876bcp-8,-0x1.f1a05c2fep-7,
+0x1.e461c7b04p-8,0x1.067906691p-6,0x1.2f017b431p-6,0x1.15db13ea1p-6,
+0x1.b0a5bbcc2p-7,0x1.1bb361ae2p-7,0x1.2010b9d44p-8,0x1.28ac2901p-10,
+-0x1.96cb9dfep-11,-0x1.5bf300afp-10,-0x1.cd7d951ep-11,-0x1.3a7f4cf8p-13,
+-0x1.b783caf8p-13,-0x1.4656f9e78p-9,-0x1.1fab262dep-7,-0x1.5bb86693fp-6,
+0x1.67a7525944p-4,0x1.85c5a46642p-3,0x1.c1f6ae1582p-3,0x1.9c9da68862p-3,
+0x1.413d9dffe2p-3,0x1.a54ba96004p-4,0x1.abc6eaff08p-5,0x1.b88f04922p-7,
+-0x1.2e0baa6dep-7,-0x1.025a3081fp-6,-0x1.56a81fffep-7,-0x1.d307480fp-10,
+-0x1.4656f9e78p-9,-0x1.e49d51d3fp-6,-0x1.ab3013937cp-4,-0x1.022ead71afp-2,
+0x1.3d08e324b1p-2,0x1.57958947c08p-1,0x1.8ca49b21908p-1,0x1.6bb88e83488p-1,
+0x1.1b2c7995288p-1,0x1.735f428861p-2,0x1.7915e50882p-3,0x1.845a405788p-5,
+-0x1.0a40d36878p-5,-0x1.c779a71df8p-5,-0x1.2e0d4e7cf8p-5,-0x1.9baf876bcp-8,
+-0x1.1fab262dep-7,-0x1.ab3013937cp-4,-0x1.7890ed887fp-2,-0x1.c72cf0f1a78p-1,
+0x1.7f377dd9708p-1,0x1.9f4ef6ad2c4p+0,0x1.df718b4d944p+0,0x1.b7a61c93b04p+0,
+0x1.564984f9a04p+0,0x1.c0e5b35bc88p-1,0x1.c7cdaa4d71p-2,0x1.d56c241484p-4,
+-0x1.41d59fcb7cp-4,-0x1.134751351ep-3,-0x1.6d1b3881bcp-4,-0x1.f1a05c2fep-7,
+-0x1.5bb86693fp-6,-0x1.022ead71afp-2,-0x1.c72cf0f1a78p-1,-0x1.1318f45aa3ep+1,
+-0x1.9f9c6c6abep-3,-0x1.c26a5ea78fp-2,-0x1.03fc6d46f78p-1,-0x1.dcd040917fp-2,
+-0x1.7338b8e9bfp-2,-0x1.e6d7fab95ep-3,-0x1.ee5564fb3cp-4,-0x1.fd1a9731fp-6,
+0x1.5d0a394e1p-6,0x1.2a8c6ec988p-5,0x1.8bf83cb51p-6,0x1.0dd893904p-8,
+0x1.791d2da04p-8,0x1.1801d32844p-4,0x1.eda71580e2p-3,0x1.2a5a26a1508p-1,
+-0x1.c26a5ea78fp-2,-0x1.e82275f85f8p-1,-0x1.19c20e4947cp+0,-0x1.025f224f6bcp+0,
+-0x1.924f0a04f78p-1,-0x1.07ce8317ef8p-1,-0x1.0bdd812bffp-2,-0x1.13de6d453cp-4,
+0x1.7a4501b588p-5,0x1.438cc5b004p-4,0x1.ad211bc108p-5,0x1.247195c22p-7,
+0x1.98b1d14a2p-7,0x1.2f74ab65c2p-3,0x1.0b7f0cfba08p-1,0x1.435647941c4p+0,
+-0x1.03fc6d46f78p-1,-0x1.19c20e4947cp+0,-0x1.4544ed0d5fcp+0,-0x1.2a45755603cp+0,
+-0x1.d06fb246278p-1,-0x1.308bb41c1f8p-1,-0x1.353b25285fp-2,-0x1.3e787a3ebcp-4,
+0x1.b4af4fc288p-5,0x1.7583d1be84p-4,0x1.ef66137e08p-5,0x1.519ae5762p-7,
+0x1.d7ceedfe2p-7,0x1.5e51534502p-3,0x1.34ce1ae1708p-1,0x1.7544e95a844p+0,
+-0x1.dcd040917fp-2,-0x1.025f224f6bcp+0,-0x1.2a45755603cp+0,-0x1.1183a79a67cp+0,
+-0x1.a9e324dcef8p-1,-0x1.17449427678p-1,-0x1.1b9076ecefp-2,-0x1.2409785cfcp-4,
+0x1.90706f8608p-5,0x1.568334ac44p-4,0x1.c6479ec988p-5,0x1.35954fc42p-7,
+0x1.b0a5bbcc2p-7,0x1.413d9dffe2p-3,0x1.1b2c7995288p-1,0x1.564984f9a04p+0,
+-0x1.7338b8e9bfp-2,-0x1.924f0a04f78p-1,-0x1.d06fb246278p-1,-0x1.a9e324dcef8p-1,
+-0x1.4b92b97d0f8p-1,-0x1.b2d89fd30fp-2,-0x1.b9893fd25ep-3,-0x1.c6ba97fbf8p-5,
+0x1.37c2b84408p-5,0x1.0aa978bb44p-4,0x1.61ad92a788p-5,0x1.e20ccf784p-8,
+0x1.50d611c42p-7,0x1.f433a72ec4p-4,0x1.b8ed8e5e11p-2,0x1.0a7c8f63904p+0,
+-0x1.e6d7fab95ep-3,-0x1.07ce8317ef8p-1,-0x1.308bb41c1f8p-1,-0x1.17449427678p-1,
+-0x1.b2d89fd30fp-2,-0x1.1d247caaffp-2,-0x1.218782863ep-3,-0x1.2a2e247378p-5,
+0x1.98dcdf991p-6,0x1.5db7b2a708p-5,0x1.cfd5ffd01p-6,0x1.3c18793c4p-8,
+0x1.b9bf9e4c4p-8,0x1.47ff8e7f04p-4,0x1.21216ab821p-2,0x1.5d7ccc4da88p-1,
+-0x1.ee5564fb3cp-4,-0x1.0bdd812bffp-2,-0x1.353b25285fp-2,-0x1.1b9076ecefp-2,
+-0x1.b9893fd25ep-3,-0x1.218782863ep-3,-0x1.25fbcf5cfcp-4,-0x1.2ec48388fp-6,
+0x1.9f2729ee2p-7,0x1.63190c0c1p-6,0x1.d6f8cc9c2p-7,0x1.40f567688p-9,
+0x1.c08b6d888p-9,0x1.4d0b5d7d08p-5,0x1.2594257802p-3,0x1.62dd3db931p-2,
+-0x1.fd1a9731fp-6,-0x1.13de6d453cp-4,-0x1.3e787a3ebcp-4,-0x1.2409785cfcp-4,
+-0x1.c6ba97fbf8p-5,-0x1.2a2e247378p-5,-0x1.2ec48388fp-6,-0x1.37d06837cp-8,
+0x1.ab8eb3908p-9,0x1.6db537dc4p-8,0x1.e50b4cc88p-9,0x1.4a8c7102p-11,
+0x1.cdf26182p-11,0x1.56fed90a2p-7,0x1.2e59c0b588p-5,0x1.6d77a01384p-4,
+0x1.5d0a394e1p-6,0x1.7a4501b588p-5,0x1.b4af4fc288p-5,0x1.90706f8608p-5,
+0x1.37c2b84408p-5,0x1.98dcdf991p-6,0x1.9f2729ee2p-7,0x1.ab8eb3908p-9,
+-0x1.2521c86f8p-9,-0x1.f574cc478p-9,-0x1.4c8b6f378p-9,-0x1.c53efdfcp-12,
+-0x1.3cb58e7ep-11,-0x1.d6502bebcp-8,-0x1.9e94c614fp-6,-0x1.f5205798f8p-5,
+0x1.2a8c6ec988p-5,0x1.438cc5b004p-4,0x1.7583d1be84p-4,0x1.568334ac44p-4,
+0x1.0aa978bb44p-4,0x1.5db7b2a708p-5,0x1.63190c0c1p-6,0x1.6db537dc4p-8,
+-0x1.f574cc478p-9,-0x1.aceaa9cfcp-8,-0x1.1c7080c7cp-8,-0x1.83ae325ep-11,
+-0x1.0ee50cefp-10,-0x1.9247570bep-7,-0x1.629bd55ff8p-5,-0x1.aca26cbb3cp-4,
+0x1.8bf83cb51p-6,0x1.ad211bc108p-5,0x1.ef66137e08p-5,0x1.c6479ec988p-5,
+0x1.61ad92a788p-5,0x1.cfd5ffd01p-6,0x1.d6f8cc9c2p-7,0x1.e50b4cc88p-9,
+-0x1.4c8b6f378p-9,-0x1.1c7080c7cp-8,-0x1.7941ad7f8p-9,-0x1.0117e61ep-11,
+-0x1.674abd9ep-11,-0x1.0ac63707ep-7,-0x1.d652b9fdfp-6,-0x1.1c4098f2bcp-4,
+0x1.0dd893904p-8,0x1.247195c22p-7,0x1.519ae5762p-7,0x1.35954fc42p-7,
+0x1.e20ccf784p-8,0x1.3c18793c4p-8,0x1.40f567688p-9,0x1.4a8c7102p-11,
+-0x1.c53efdfcp-12,-0x1.83ae325ep-11,-0x1.0117e61ep-11,-0x1.5e68a1fp-14,
+-0x1.e9b39dfp-14,-0x1.6b9a7c4fp-10,-0x1.40843a7bcp-8,-0x1.836ce737ep-7,
+0x1.791d2da04p-8,0x1.98b1d14a2p-7,0x1.d7ceedfe2p-7,0x1.b0a5bbcc2p-7,
+0x1.50d611c42p-7,0x1.b9bf9e4c4p-8,0x1.c08b6d888p-9,0x1.cdf26182p-11,
+-0x1.3cb58e7ep-11,-0x1.0ee50cefp-10,-0x1.674abd9ep-11,-0x1.e9b39dfp-14,
+-0x1.562eccf8p-13,-0x1.fc24380fp-10,-0x1.bfed436bcp-8,-0x1.0eb76d17fp-6,
+0x1.1801d32844p-4,0x1.2f74ab65c2p-3,0x1.5e51534502p-3,0x1.413d9dffe2p-3,
+0x1.f433a72ec4p-4,0x1.47ff8e7f04p-4,0x1.4d0b5d7d08p-5,0x1.56fed90a2p-7,
+-0x1.d6502bebcp-8,-0x1.9247570bep-7,-0x1.0ac63707ep-7,-0x1.6b9a7c4fp-10,
+-0x1.fc24380fp-10,-0x1.794b8857fp-6,-0x1.4c95ed947cp-4,-0x1.9203967bdep-3,
+0x1.eda71580e2p-3,0x1.0b7f0cfba08p-1,0x1.34ce1ae1708p-1,0x1.1b2c7995288p-1,
+0x1.b8ed8e5e11p-2,0x1.21216ab821p-2,0x1.2594257802p-3,0x1.2e59c0b588p-5,
+-0x1.9e94c614fp-6,-0x1.629bd55ff8p-5,-0x1.d652b9fdfp-6,-0x1.40843a7bcp-8,
+-0x1.bfed436bcp-8,-0x1.4c95ed947cp-4,-0x1.252ca020bfp-2,-0x1.62601c23c78p-1,
+0x1.2a5a26a1508p-1,0x1.435647941c4p+0,0x1.7544e95a844p+0,0x1.564984f9a04p+0,
+0x1.0a7c8f63904p+0,0x1.5d7ccc4da88p-1,0x1.62dd3db931p-2,0x1.6d77a01384p-4,
+-0x1.f5205798f8p-5,-0x1.aca26cbb3cp-4,-0x1.1c4098f2bcp-4,-0x1.836ce737ep-7,
+-0x1.0eb76d17fp-6,-0x1.9203967bdep-3,-0x1.62601c23c78p-1,-0x1.ac5a3bd157cp+0,
+-0x1.108788049ep-3,-0x1.275a11477fp-2,-0x1.54f658f3dfp-2,-0x1.38a96d406fp-2,
+-0x1.e6d7fab95ep-3,-0x1.3f3d2add3ep-3,-0x1.44267a4afcp-4,-0x1.4dd5edc0fp-6,
+0x1.c9c0d57e2p-7,0x1.878920541p-6,0x1.03a663961p-6,0x1.61e4ada88p-9,
+0x1.ee9243c88p-9,0x1.6f381f2108p-5,0x1.43b42d4102p-3,0x1.87472ef5b1p-2,
+-0x1.275a11477fp-2,-0x1.4015dfe9d78p-1,-0x1.7183f5d7078p-1,-0x1.52d8542fcf8p-1,
+-0x1.07ce8317ef8p-1,-0x1.59f91224cfp-2,-0x1.5f4bac05dep-3,-0x1.69cac269f8p-5,
+0x1.f0163bac1p-6,0x1.a852f0a888p-5,0x1.1964d01988p-5,0x1.7f8782084p-8,
+0x1.0bfe7d0c2p-7,0x1.8df8a2a7c4p-4,0x1.5ecfcc9451p-2,0x1.a80b7998408p-1,
+-0x1.54f658f3dfp-2,-0x1.7183f5d7078p-1,-0x1.aa942f92378p-1,-0x1.872c0bbfff8p-1,
+-0x1.308bb41c1f8p-1,-0x1.8f6694132fp-2,-0x1.958b9a4a9ep-3,-0x1.a1a9a68cf8p-5,
+0x1.1e5921b308p-5,0x1.e9d9ef9588p-5,0x1.44d948a688p-5,0x1.bac1bff04p-8,
+0x1.356139002p-7,0x1.cb6dd0ce44p-4,0x1.94fc99b9f1p-2,0x1.e9876f42108p-1,
+-0x1.38a96d406fp-2,-0x1.52d8542fcf8p-1,-0x1.872c0bbfff8p-1,-0x1.66b43edd478p-1,
+-0x1.17449427678p-1,-0x1.6e3feea2bfp-2,-0x1.73e26485bep-3,-0x1.7efef71178p-5,
+0x1.0694ad2e88p-5,0x1.c1315aa908p-5,0x1.29e2c02a08p-5,0x1.9601da4c4p-8,
+0x1.1bb361ae2p-7,0x1.a54ba96004p-4,0x1.735f428861p-2,0x1.c0e5b35bc88p-1,
+-0x1.e6d7fab95ep-3,-0x1.07ce8317ef8p-1,-0x1.308bb41c1f8p-1,-0x1.17449427678p-1,
+-0x1.b2d89fd30fp-2,-0x1.1d247caaffp-2,-0x1.218782863ep-3,-0x1.2a2e247378p-5,
+0x1.98dcdf991p-6,0x1.5db7b2a708p-5,0x1.cfd5ffd01p-6,0x1.3c18793c4p-8,
+0x1.b9bf9e4c4p-8,0x1.47ff8e7f04p-4,0x1.21216ab821p-2,0x1.5d7ccc4da88p-1,
+-0x1.3f3d2add3ep-3,-0x1.59f91224cfp-2,-0x1.8f6694132fp-2,-0x1.6e3feea2bfp-2,
+-0x1.1d247caaffp-2,-0x1.75f440e3dep-3,-0x1.7bb50eb03cp-4,-0x1.870d77c5fp-6,
+0x1.0c1ab8ba1p-6,0x1.caa456bf1p-6,0x1.3026eb611p-6,0x1.9e8c46808p-9,
+0x1.21ab29504p-8,0x1.ae286a2688p-5,0x1.7b2f2a8662p-3,0x1.ca57180961p-2,
+-0x1.44267a4afcp-4,-0x1.5f4bac05dep-3,-0x1.958b9a4a9ep-3,-0x1.73e26485bep-3,
+-0x1.218782863ep-3,-0x1.7bb50eb03cp-4,-0x1.818c851178p-5,-0x1.8d119d0fep-7,
+0x1.103aa3f02p-7,0x1.d1b2aeba2p-7,0x1.34d4cf7e2p-7,0x1.a4ecf4e1p-10,
+0x1.262002908p-9,0x1.b4c6932b1p-6,0x1.8104919444p-4,0x1.d1643fca82p-3,
+-0x1.4dd5edc0fp-6,-0x1.69cac269f8p-5,-0x1.a1a9a68cf8p-5,-0x1.7efef71178p-5,
+-0x1.2a2e247378p-5,-0x1.870d77c5fp-6,-0x1.8d119d0fep-7,-0x1.98eed2e78p-9,
+0x1.185cf1188p-9,0x1.df9cd7c08p-9,0x1.3e0f15d08p-9,0x1.b180a644p-12,
+0x1.2ee9cba2p-11,0x1.c1d381984p-8,0x1.8c8599ac1p-6,0x1.df4c10df88p-5,
+0x1.c9c0d57e2p-7,0x1.f0163bac1p-6,0x1.1e5921b308p-5,0x1.0694ad2e88p-5,
+0x1.98dcdf991p-6,0x1.0c1ab8ba1p-6,0x1.103aa3f02p-7,0x1.185cf1188p-9,
+-0x1.806e95cfp-10,-0x1.48d2243f8p-9,-0x1.b41ecc5fp-10,-0x1.293539bcp-12,
+-0x1.9f5a48bcp-12,-0x1.34663c67cp-8,-0x1.0fdaa5d3fp-6,-0x1.489ac2e078p-5,
+0x1.878920541p-6,0x1.a852f0a888p-5,0x1.e9d9ef9588p-5,0x1.c1315aa908p-5,
+0x1.5db7b2a708p-5,0x1.caa456bf1p-6,0x1.d1b2aeba2p-7,0x1.df9cd7c08p-9,
+-0x1.48d2243f8p-9,-0x1.19411c8bcp-8,-0x1.750836078p-9,-0x1.fc6dcc7cp-12,
+-0x1.6344c5bep-11,-0x1.07c976a9ep-7,-0x1.d10e782efp-6,-0x1.1911be0afcp-4,
+0x1.03a663961p-6,0x1.1964d01988p-5,0x1.44d948a688p-5,0x1.29e2c02a08p-5,
+0x1.cfd5ffd01p-6,0x1.3026eb611p-6,0x1.34d4cf7e2p-7,0x1.3e0f15d08p-9,
+-0x1.b41ecc5fp-10,-0x1.750836078p-9,-0x1.eec221efp-10,-0x1.512b2bfcp-12,
+-0x1.d732cafcp-12,-0x1.5ddd64cbcp-8,-0x1.3467e94cfp-6,-0x1.74c96274f8p-5,
+0x1.61e4ada88p-9,0x1.7f8782084p-8,0x1.bac1bff04p-8,0x1.9601da4c4p-8,
+0x1.3c18793c4p-8,0x1.9e8c46808p-9,0x1.a4ecf4e1p-10,0x1.b180a644p-12,
+-0x1.293539bcp-12,-0x1.fc6dcc7cp-12,-0x1.512b2bfcp-12,-0x1.cb8c61ep-15,
+-0x1.411cecfp-14,-0x1.dcda507ep-11,-0x1.a45887ef8p-9,-0x1.fc182b2bcp-8,
+0x1.ee9243c88p-9,0x1.0bfe7d0c2p-7,0x1.356139002p-7,0x1.1bb361ae2p-7,
+0x1.b9bf9e4c4p-8,0x1.21ab29504p-8,0x1.262002908p-9,0x1.2ee9cba2p-11,
+-0x1.9f5a48bcp-12,-0x1.6344c5bep-11,-0x1.d732cafcp-12,-0x1.411cecfp-14,
+-0x1.c0c2a8fp-14,-0x1.4d345fffp-10,-0x1.25b84be7cp-8,-0x1.6308f00dep-7,
+0x1.6f381f2108p-5,0x1.8df8a2a7c4p-4,0x1.cb6dd0ce44p-4,0x1.a54ba96004p-4,
+0x1.47ff8e7f04p-4,0x1.ae286a2688p-5,0x1.b4c6932b1p-6,0x1.c1d381984p-8,
+-0x1.34663c67cp-8,-0x1.07c976a9ep-7,-0x1.5ddd64cbcp-8,-0x1.dcda507ep-11,
+-0x1.4d345fffp-10,-0x1.eecf0e8dep-7,-0x1.b42c8f7078p-5,-0x1.079d0947bep-3,
+0x1.43b42d4102p-3,0x1.5ecfcc9451p-2,0x1.94fc99b9f1p-2,0x1.735f428861p-2,
+0x1.21216ab821p-2,0x1.7b2f2a8662p-3,0x1.8104919444p-4,0x1.8c8599ac1p-6,
+-0x1.0fdaa5d3fp-6,-0x1.d10e782efp-6,-0x1.3467e94cfp-6,-0x1.a45887ef8p-9,
+-0x1.25b84be7cp-8,-0x1.b42c8f7078p-5,-0x1.807cce075ep-3,-0x1.d0c024e77fp-2,
+0x1.87472ef5b1p-2,0x1.a80b7998408p-1,0x1.e9876f42108p-1,0x1.c0e5b35bc88p-1,
+0x1.5d7ccc4da88p-1,0x1.ca57180961p-2,0x1.d1643fca82p-3,0x1.df4c10df88p-5,
+-0x1.489ac2e078p-5,-0x1.1911be0afcp-4,-0x1.74c96274f8p-5,-0x1.fc182b2bcp-8,
+-0x1.6308f00dep-7,-0x1.079d0947bep-3,-0x1.d0c024e77fp-2,-0x1.18e2678493cp+0,
+-0x1.14b8e0c1bcp-4,-0x1.2be54c9f3ep-3,-0x1.5a3536dffep-3,-0x1.3d78d5551ep-3,
+-0x1.ee5564fb3cp-4,-0x1.44267a4afcp-4,-0x1.49232196f8p-5,-0x1.52f8ba45ep-7,
+0x1.d0cbad744p-8,0x1.8d8f2ca42p-7,0x1.07a502a82p-7,0x1.67567931p-10,
+0x1.f62e1d71p-10,0x1.74de66801p-6,0x1.48af126184p-4,0x1.8d4c378f22p-3,
+-0x1.2be54c9f3ep-3,-0x1.450284d5cfp-2,-0x1.773348642fp-2,-0x1.580edb63bfp-2,
+-0x1.0bdd812bffp-2,-0x1.5f4bac05dep-3,-0x1.64b33c743cp-4,-0x1.6f5ba9d5fp-6,
+0x1.f7b80d542p-7,0x1.aeda1faf1p-6,0x1.1db912511p-6,0x1.856e06008p-9,
+0x1.101df9104p-8,0x1.9418079e88p-5,0x1.6435752462p-3,0x1.ae918f2861p-2,
+-0x1.5a3536dffep-3,-0x1.773348642fp-2,-0x1.b124400e8fp-2,-0x1.8d30a9781fp-2,
+-0x1.353b25285fp-2,-0x1.958b9a4a9ep-3,-0x1.9bc8d3cdbcp-4,-0x1.a816995bfp-6,
+0x1.22c0e7241p-6,0x1.f16332491p-6,0x1.49d8b02b1p-6,0x1.c19187d08p-9,
+0x1.3a23b3f84p-8,0x1.d27f424b88p-5,0x1.9b37a007a2p-3,0x1.f10f6d0801p-2,
+-0x1.3d78d5551ep-3,-0x1.580edb63bfp-2,-0x1.8d30a9781fp-2,-0x1.6c38fce0afp-2,
+-0x1.1b9076ecefp-2,-0x1.73e26485bep-3,-0x1.799b0b7bfcp-4,-0x1.84e36144fp-6,
+0x1.0a9ed73b1p-6,0x1.c81a7b901p-6,0x1.2e77f6521p-6,0x1.9c40e5888p-9,
+0x1.2010b9d44p-8,0x1.abc6eaff08p-5,0x1.7915e50882p-3,0x1.c7cdaa4d71p-2,
+-0x1.ee5564fb3cp-4,-0x1.0bdd812bffp-2,-0x1.353b25285fp-2,-0x1.1b9076ecefp-2,
+-0x1.b9893fd25ep-3,-0x1.218782863ep-3,-0x1.25fbcf5cfcp-4,-0x1.2ec48388fp-6,
+0x1.9f2729ee2p-7,0x1.63190c0c1p-6,0x1.d6f8cc9c2p-7,0x1.40f567688p-9,
+0x1.c08b6d888p-9,0x1.4d0b5d7d08p-5,0x1.2594257802p-3,0x1.62dd3db931p-2,
+-0x1.44267a4afcp-4,-0x1.5f4bac05dep-3,-0x1.958b9a4a9ep-3,-0x1.73e26485bep-3,
+-0x1.218782863ep-3,-0x1.7bb50eb03cp-4,-0x1.818c851178p-5,-0x1.8d119d0fep-7,
+0x1.103aa3f02p-7,0x1.d1b2aeba2p-7,0x1.34d4cf7e2p-7,0x1.a4ecf4e1p-10,
+0x1.262002908p-9,0x1.b4c6932b1p-6,0x1.8104919444p-4,0x1.d1643fca82p-3,
+-0x1.49232196f8p-5,-0x1.64b33c743cp-4,-0x1.9bc8d3cdbcp-4,-0x1.799b0b7bfcp-4,
+-0x1.25fbcf5cfcp-4,-0x1.818c851178p-5,-0x1.877afd44fp-6,-0x1.932d7427cp-8,
+0x1.146acdd84p-8,0x1.d8dcd0ec4p-8,0x1.399521744p-8,0x1.ab66c182p-11,
+0x1.2aa66901p-10,0x1.bb7ecc922p-7,0x1.86f0f25788p-5,0x1.d88d2d1484p-4,
+-0x1.52f8ba45ep-7,-0x1.6f5ba9d5fp-6,-0x1.a816995bfp-6,-0x1.84e36144fp-6,
+-0x1.2ec48388fp-6,-0x1.8d119d0fep-7,-0x1.932d7427cp-8,-0x1.9f3963efp-10,
+0x1.1cad2411p-10,0x1.e6fdc761p-10,0x1.42f3bf81p-10,0x1.b82bfb88p-13,
+0x1.3392cec4p-12,0x1.c8bf21208p-9,0x1.929f49542p-7,0x1.e6abc25d1p-6,
+0x1.d0cbad744p-8,0x1.f7b80d542p-7,0x1.22c0e7241p-6,0x1.0a9ed73b1p-6,
+0x1.9f2729ee2p-7,0x1.103aa3f02p-7,0x1.146acdd84p-8,0x1.1cad2411p-10,
+-0x1.8658a7dep-11,-0x1.4de1309fp-10,-0x1.bad470fep-11,-0x1.2dc7c478p-13,
+-0x1.a5be2278p-13,-0x1.3924dadf8p-9,-0x1.140955abep-7,-0x1.4da8f522fp-6,
+0x1.8d8f2ca42p-7,0x1.aeda1faf1p-6,0x1.f16332491p-6,0x1.c81a7b901p-6,
+0x1.63190c0c1p-6,0x1.d1b2aeba2p-7,0x1.d8dcd0ec4p-8,0x1.e6fdc761p-10,
+-0x1.4de1309fp-10,-0x1.1d94d2278p-9,-0x1.7ac5622fp-10,-0x1.02201cfcp-12,
+-0x1.68bbfbfcp-12,-0x1.0bd860dbcp-8,-0x1.d83613a1ep-7,-0x1.1d64b916f8p-5,
+0x1.07a502a82p-7,0x1.1db912511p-6,0x1.49d8b02b1p-6,0x1.2e77f6521p-6,
+0x1.d6f8cc9c2p-7,0x1.34d4cf7e2p-7,0x1.399521744p-8,0x1.42f3bf81p-10,
+-0x1.bad470fep-11,-0x1.7ac5622fp-10,-0x1.f65eb81ep-11,-0x1.565b18f8p-13,
+-0x1.de7296f8p-13,-0x1.633f52a78p-9,-0x1.39268e5dep-7,-0x1.7a85972bfp-6,
+0x1.67567931p-10,0x1.856e06008p-9,0x1.c19187d08p-9,0x1.9c40e5888p-9,
+0x1.40f567688p-9,0x1.a4ecf4e1p-10,0x1.ab66c182p-11,0x1.b82bfb88p-13,
+-0x1.2dc7c478p-13,-0x1.02201cfcp-12,-0x1.565b18f8p-13,-0x1.d29e4bcp-16,
+-0x1.460d9dep-15,-0x1.e430617cp-12,-0x1.aad00bffp-10,-0x1.01f4a3b3cp-8,
+0x1.f62e1d71p-10,0x1.101df9104p-8,0x1.3a23b3f84p-8,0x1.2010b9d44p-8,
+0x1.c08b6d888p-9,0x1.262002908p-9,0x1.2aa66901p-10,0x1.3392cec4p-12,
+-0x1.a5be2278p-13,-0x1.68bbfbfcp-12,-0x1.de7296f8p-13,-0x1.460d9dep-15,
+-0x1.c7aa15ep-15,-0x1.5254b03ep-11,-0x1.2a3d19df8p-9,-0x1.687f3aa3cp-8,
+0x1.74de66801p-6,0x1.9418079e88p-5,0x1.d27f424b88p-5,0x1.abc6eaff08p-5,
+0x1.4d0b5d7d08p-5,0x1.b4c6932b1p-6,0x1.bb7ecc922p-7,0x1.c8bf21208p-9,
+-0x1.3924dadf8p-9,-0x1.0bd860dbcp-8,-0x1.633f52a78p-9,-0x1.e430617cp-12,
+-0x1.5254b03ep-11,-0x1.f66bd7a3cp-8,-0x1.bae26a42fp-6,-0x1.0bab447ffcp-4,
+0x1.48af126184p-4,0x1.6435752462p-3,0x1.9b37a007a2p-3,0x1.7915e50882p-3,
+0x1.2594257802p-3,0x1.8104919444p-4,0x1.86f0f25788p-5,0x1.929f49542p-7,
+-0x1.140955abep-7,-0x1.d83613a1ep-7,-0x1.39268e5dep-7,-0x1.aad00bffp-10,
+-0x1.2a3d19df8p-9,-0x1.bae26a42fp-6,-0x1.866718173cp-4,-0x1.d7e68bdf3ep-3,
+0x1.8d4c378f22p-3,0x1.ae918f2861p-2,0x1.f10f6d0801p-2,0x1.c7cdaa4d71p-2,
+0x1.62dd3db931p-2,0x1.d1643fca82p-3,0x1.d88d2d1484p-4,0x1.e6abc25d1p-6,
+-0x1.4da8f522fp-6,-0x1.1d64b916f8p-5,-0x1.7a85972bfp-6,-0x1.01f4a3b3cp-8,
+-0x1.687f3aa3cp-8,-0x1.0bab447ffcp-4,-0x1.d7e68bdf3ep-3,-0x1.1d34a820378p-1,
+-0x1.1cfd8c2bfp-6,-0x1.34db399778p-5,-0x1.648d62aa78p-5,-0x1.46f53396f8p-5,
+-0x1.fd1a9731fp-6,-0x1.4dd5edc0fp-6,-0x1.52f8ba45ep-7,-0x1.5d198c3f8p-9,
+0x1.deaeef81p-10,0x1.997022e88p-9,0x1.0f85a5f88p-9,0x1.72131384p-12,
+0x1.0297aa42p-11,0x1.800280ac4p-8,0x1.528133511p-6,0x1.992b2daa08p-5,
+-0x1.34db399778p-5,-0x1.4eb88b687cp-4,-0x1.82693829fcp-4,-0x1.625695743cp-4,
+-0x1.13de6d453cp-4,-0x1.69cac269f8p-5,-0x1.6f5ba9d5fp-6,-0x1.7a559d2bcp-8,
+0x1.036284d44p-8,0x1.bbb9bea84p-8,0x1.264296b04p-8,0x1.9110cd62p-11,
+0x1.183f6af1p-10,0x1.a02af9b02p-7,0x1.6eda206f08p-5,0x1.bb6f031444p-4,
+-0x1.648d62aa78p-5,-0x1.82693829fcp-4,-0x1.be15625b7cp-4,-0x1.990ecccdbcp-4,
+-0x1.3e787a3ebcp-4,-0x1.a1a9a68cf8p-5,-0x1.a816995bfp-6,-0x1.b4c27bc3cp-8,
+0x1.2b70e63c4p-8,0x1.001fe0482p-7,0x1.53b3b5984p-8,0x1.cf0050a2p-11,
+0x1.43869491p-10,0x1.e06f88242p-7,0x1.a7810eec08p-5,0x1.ffe97a8ac4p-4,
+-0x1.46f53396f8p-5,-0x1.625695743cp-4,-0x1.990ecccdbcp-4,-0x1.771af47bfcp-4,
+-0x1.2409785cfcp-4,-0x1.7efef71178p-5,-0x1.84e36144fp-6,-0x1.90820427cp-8,
+0x1.12963dd84p-8,0x1.d5bb40ec4p-8,0x1.378191744p-8,0x1.a8924182p-11,
+0x1.28ac2901p-10,0x1.b88f04922p-7,0x1.845a405788p-5,0x1.d56c241484p-4,
+-0x1.fd1a9731fp-6,-0x1.13de6d453cp-4,-0x1.3e787a3ebcp-4,-0x1.2409785cfcp-4,
+-0x1.c6ba97fbf8p-5,-0x1.2a2e247378p-5,-0x1.2ec48388fp-6,-0x1.37d06837cp-8,
+0x1.ab8eb3908p-9,0x1.6db537dc4p-8,0x1.e50b4cc88p-9,0x1.4a8c7102p-11,
+0x1.cdf26182p-11,0x1.56fed90a2p-7,0x1.2e59c0b588p-5,0x1.6d77a01384p-4,
+-0x1.4dd5edc0fp-6,-0x1.69cac269f8p-5,-0x1.a1a9a68cf8p-5,-0x1.7efef71178p-5,
+-0x1.2a2e247378p-5,-0x1.870d77c5fp-6,-0x1.8d119d0fep-7,-0x1.98eed2e78p-9,
+0x1.185cf1188p-9,0x1.df9cd7c08p-9,0x1.3e0f15d08p-9,0x1.b180a644p-12,
+0x1.2ee9cba2p-11,0x1.c1d381984p-8,0x1.8c8599ac1p-6,0x1.df4c10df88p-5,
+-0x1.52f8ba45ep-7,-0x1.6f5ba9d5fp-6,-0x1.a816995bfp-6,-0x1.84e36144fp-6,
+-0x1.2ec48388fp-6,-0x1.8d119d0fep-7,-0x1.932d7427cp-8,-0x1.9f3963efp-10,
+0x1.1cad2411p-10,0x1.e6fdc761p-10,0x1.42f3bf81p-10,0x1.b82bfb88p-13,
+0x1.3392cec4p-12,0x1.c8bf21208p-9,0x1.929f49542p-7,0x1.e6abc25d1p-6,
+-0x1.5d198c3f8p-9,-0x1.7a559d2bcp-8,-0x1.b4c27bc3cp-8,-0x1.90820427cp-8,
+-0x1.37d06837cp-8,-0x1.98eed2e78p-9,-0x1.9f3963efp-10,-0x1.aba178fcp-12,
+0x1.252ea704p-12,0x1.f58ad044p-12,0x1.4c9a08c4p-12,0x1.c552e42p-15,
+0x1.3cc3761p-14,0x1.d664d1e2p-11,0x1.9ea6f9a88p-9,0x1.f53657e04p-8,
+0x1.deaeef81p-10,0x1.036284d44p-8,0x1.2b70e63c4p-8,0x1.12963dd84p-8,
+0x1.ab8eb3908p-9,0x1.185cf1188p-9,0x1.1cad2411p-10,0x1.252ea704p-12,
+-0x1.920271f8p-13,-0x1.57db0fbcp-12,-0x1.c80fae78p-13,-0x1.36cc1bep-15,
+-0x1.b25813ep-15,-0x1.42801e1ep-11,-0x1.1c48c2578p-9,-0x1.57a1261fcp-8,
+0x1.997022e88p-9,0x1.bbb9bea84p-8,0x1.001fe0482p-7,0x1.d5bb40ec4p-8,
+0x1.6db537dc4p-8,0x1.df9cd7c08p-9,0x1.e6fdc761p-10,0x1.f58ad044p-12,
+-0x1.57db0fbcp-12,-0x1.261d413ep-11,-0x1.8616a1fcp-12,-0x1.09d688fp-14,
+-0x1.738344fp-14,-0x1.13d925bfp-10,-0x1.e6520eaf8p-9,-0x1.25ebb845ep-7,
+0x1.0f85a5f88p-9,0x1.264296b04p-8,0x1.53b3b5984p-8,0x1.378191744p-8,
+0x1.e50b4cc88p-9,0x1.3e0f15d08p-9,0x1.42f3bf81p-10,0x1.4c9a08c4p-12,
+-0x1.c80fae78p-13,-0x1.8616a1fcp-12,-0x1.02b0b17cp-12,-0x1.6095cdep-15,
+-0x1.ecbe45ep-15,-0x1.6ddca33ep-11,-0x1.4281de9f8p-9,-0x1.85d4ef03cp-8,
+0x1.72131384p-12,0x1.9110cd62p-11,0x1.cf0050a2p-11,0x1.a8924182p-11,
+0x1.4a8c7102p-11,0x1.b180a644p-12,0x1.b82bfb88p-13,0x1.c552e42p-15,
+-0x1.36cc1bep-15,-0x1.09d688fp-14,-0x1.6095cdep-15,-0x1.e08f7fp-18,
+-0x1.4fcb9f8p-17,-0x1.f2a7fafp-14,-0x1.b790c53cp-12,-0x1.09a9c31fp-10,
+0x1.0297aa42p-11,0x1.183f6af1p-10,0x1.43869491p-10,0x1.28ac2901p-10,
+0x1.cdf26182p-11,0x1.2ee9cba2p-11,0x1.3392cec4p-12,0x1.3cc3761p-14,
+-0x1.b25813ep-15,-0x1.738344fp-14,-0x1.ecbe45ep-15,-0x1.4fcb9f8p-17,
+-0x1.d5477f8p-17,-0x1.5c709b78p-13,-0x1.33265a1ep-11,-0x1.7344b2dfp-10,
+0x1.800280ac4p-8,0x1.a02af9b02p-7,0x1.e06f88242p-7,0x1.b88f04922p-7,
+0x1.56fed90a2p-7,0x1.c1d381984p-8,0x1.c8bf21208p-9,0x1.d664d1e2p-11,
+-0x1.42801e1ep-11,-0x1.13d925bfp-10,-0x1.6ddca33ep-11,-0x1.f2a7fafp-14,
+-0x1.5c709b78p-13,-0x1.02b7736f8p-9,-0x1.c81e129fcp-8,-0x1.13aab054fp-6,
+0x1.528133511p-6,0x1.6eda206f08p-5,0x1.a7810eec08p-5,0x1.845a405788p-5,
+0x1.2e59c0b588p-5,0x1.8c8599ac1p-6,0x1.929f49542p-7,0x1.9ea6f9a88p-9,
+-0x1.1c48c2578p-9,-0x1.e6520eaf8p-9,-0x1.4281de9f8p-9,-0x1.b790c53cp-12,
+-0x1.33265a1ep-11,-0x1.c81e129fcp-8,-0x1.921150a1fp-6,-0x1.e600269778p-5,
+0x1.992b2daa08p-5,0x1.bb6f031444p-4,0x1.ffe97a8ac4p-4,0x1.d56c241484p-4,
+0x1.6d77a01384p-4,0x1.df4c10df88p-5,0x1.e6abc25d1p-6,0x1.f53657e04p-8,
+-0x1.57a1261fcp-8,-0x1.25ebb845ep-7,-0x1.85d4ef03cp-8,-0x1.09a9c31fp-10,
+-0x1.7344b2dfp-10,-0x1.13aab054fp-6,-0x1.e600269778p-5,-0x1.25ba37a57ep-3,
+0x1.86c6e8a82p-7,0x1.a78075511p-6,0x1.e8e6f32b1p-6,0x1.c05289521p-6,
+0x1.5d0a394e1p-6,0x1.c9c0d57e2p-7,0x1.d0cbad744p-8,0x1.deaeef81p-10,
+-0x1.482f087fp-10,-0x1.18b599178p-9,-0x1.744f2c0fp-10,-0x1.fb7198f8p-13,
+-0x1.62948b7cp-12,-0x1.07469d53cp-8,-0x1.d027c85dep-7,-0x1.18865215f8p-5,
+0x1.a78075511p-6,0x1.caf7916f08p-5,0x1.08ec0ff604p-4,0x1.e5ddc15788p-5,
+0x1.7a4501b588p-5,0x1.f0163bac1p-6,0x1.f7b80d542p-7,0x1.036284d44p-8,
+-0x1.63aab2578p-9,-0x1.30377f57cp-8,-0x1.937cce9f8p-9,-0x1.12f8229ep-11,
+-0x1.80461a1ep-11,-0x1.1d52c54fep-7,-0x1.f7066ea1fp-6,-0x1.300442cbbcp-4,
+0x1.e8e6f32b1p-6,0x1.08ec0ff604p-4,0x1.31d559c484p-4,0x1.1872dd5244p-4,
+0x1.b4af4fc288p-5,0x1.1e5921b308p-5,0x1.22c0e7241p-6,0x1.2b70e63c4p-8,
+-0x1.9a976f878p-9,-0x1.5f323d6fcp-8,-0x1.d1cc10cf8p-9,-0x1.3d6e9f5ep-11,
+-0x1.bb9dc6dep-11,-0x1.496296dbep-7,-0x1.225a60d3f8p-5,-0x1.5ef717553cp-4,
+0x1.c05289521p-6,0x1.e5ddc15788p-5,0x1.1872dd5244p-4,0x1.012bc3a404p-4,
+0x1.90706f8608p-5,0x1.0694ad2e88p-5,0x1.0a9ed73b1p-6,0x1.12963dd84p-8,
+-0x1.7883004f8p-9,-0x1.420bdd13cp-8,-0x1.ab2299178p-9,-0x1.2315ae7ep-11,
+-0x1.96cb9dfep-11,-0x1.2e0baa6dep-7,-0x1.0a40d36878p-5,-0x1.41d59fcb7cp-4,
+0x1.5d0a394e1p-6,0x1.7a4501b588p-5,0x1.b4af4fc288p-5,0x1.90706f8608p-5,
+0x1.37c2b84408p-5,0x1.98dcdf991p-6,0x1.9f2729ee2p-7,0x1.ab8eb3908p-9,
+-0x1.2521c86f8p-9,-0x1.f574cc478p-9,-0x1.4c8b6f378p-9,-0x1.c53efdfcp-12,
+-0x1.3cb58e7ep-11,-0x1.d6502bebcp-8,-0x1.9e94c614fp-6,-0x1.f5205798f8p-5,
+0x1.c9c0d57e2p-7,0x1.f0163bac1p-6,0x1.1e5921b308p-5,0x1.0694ad2e88p-5,
+0x1.98dcdf991p-6,0x1.0c1ab8ba1p-6,0x1.103aa3f02p-7,0x1.185cf1188p-9,
+-0x1.806e95cfp-10,-0x1.48d2243f8p-9,-0x1.b41ecc5fp-10,-0x1.293539bcp-12,
+-0x1.9f5a48bcp-12,-0x1.34663c67cp-8,-0x1.0fdaa5d3fp-6,-0x1.489ac2e078p-5,
+0x1.d0cbad744p-8,0x1.f7b80d542p-7,0x1.22c0e7241p-6,0x1.0a9ed73b1p-6,
+0x1.9f2729ee2p-7,0x1.103aa3f02p-7,0x1.146acdd84p-8,0x1.1cad2411p-10,
+-0x1.8658a7dep-11,-0x1.4de1309fp-10,-0x1.bad470fep-11,-0x1.2dc7c478p-13,
+-0x1.a5be2278p-13,-0x1.3924dadf8p-9,-0x1.140955abep-7,-0x1.4da8f522fp-6,
+0x1.deaeef81p-10,0x1.036284d44p-8,0x1.2b70e63c4p-8,0x1.12963dd84p-8,
+0x1.ab8eb3908p-9,0x1.185cf1188p-9,0x1.1cad2411p-10,0x1.252ea704p-12,
+-0x1.920271f8p-13,-0x1.57db0fbcp-12,-0x1.c80fae78p-13,-0x1.36cc1bep-15,
+-0x1.b25813ep-15,-0x1.42801e1ep-11,-0x1.1c48c2578p-9,-0x1.57a1261fcp-8,
+-0x1.482f087fp-10,-0x1.63aab2578p-9,-0x1.9a976f878p-9,-0x1.7883004f8p-9,
+-0x1.2521c86f8p-9,-0x1.806e95cfp-10,-0x1.8658a7dep-11,-0x1.920271f8p-13,
+0x1.139dce08p-13,0x1.d77e2088p-13,0x1.38ac9188p-13,0x1.aa29c84p-16,
+0x1.29c8ec2p-15,0x1.ba35e3c4p-12,0x1.85cf0351p-10,0x1.d72eb7c08p-9,
+-0x1.18b599178p-9,-0x1.30377f57cp-8,-0x1.5f323d6fcp-8,-0x1.420bdd13cp-8,
+-0x1.f574cc478p-9,-0x1.48d2243f8p-9,-0x1.4de1309fp-10,-0x1.57db0fbcp-12,
+0x1.d77e2088p-13,0x1.93499d84p-12,0x1.0b717e04p-12,0x1.6c83ee2p-15,
+0x1.fd6a762p-15,0x1.7a3dc482p-11,0x1.4d6b75508p-9,0x1.9305b1744p-8,
+-0x1.744f2c0fp-10,-0x1.937cce9f8p-9,-0x1.d1cc10cf8p-9,-0x1.ab2299178p-9,
+-0x1.4c8b6f378p-9,-0x1.b41ecc5fp-10,-0x1.bad470fep-11,-0x1.c80fae78p-13,
+0x1.38ac9188p-13,0x1.0b717e04p-12,0x1.62b6dd08p-13,0x1.e376644p-16,
+0x1.51d2ba2p-15,0x1.f5aad984p-12,0x1.ba384ac1p-10,0x1.0b4472fc4p-8,
+-0x1.fb7198f8p-13,-0x1.12f8229ep-11,-0x1.3d6e9f5ep-11,-0x1.2315ae7ep-11,
+-0x1.c53efdfcp-12,-0x1.293539bcp-12,-0x1.2dc7c478p-13,-0x1.36cc1bep-15,
+0x1.aa29c84p-16,0x1.6c83ee2p-15,0x1.e376644p-16,0x1.497881p-18,0x1.cc70c1p-18,
+0x1.55e0851p-14,0x1.2d5d5ac4p-12,0x1.6c4689c2p-11,-0x1.62948b7cp-12,
+-0x1.80461a1ep-11,-0x1.bb9dc6dep-11,-0x1.96cb9dfep-11,-0x1.3cb58e7ep-11,
+-0x1.9f5a48bcp-12,-0x1.a5be2278p-13,-0x1.b25813ep-15,0x1.29c8ec2p-15,
+0x1.fd6a762p-15,0x1.51d2ba2p-15,0x1.cc70c1p-18,0x1.41bc808p-17,0x1.ddc7491p-14,
+0x1.a5296bc4p-12,0x1.fd14aa42p-11,-0x1.07469d53cp-8,-0x1.1d52c54fep-7,
+-0x1.496296dbep-7,-0x1.2e0baa6dep-7,-0x1.d6502bebcp-8,-0x1.34663c67cp-8,
+-0x1.3924dadf8p-9,-0x1.42801e1ep-11,0x1.ba35e3c4p-12,0x1.7a3dc482p-11,
+0x1.f5aad984p-12,0x1.55e0851p-14,0x1.ddc7491p-14,0x1.62c02121p-10,
+0x1.38b66f604p-8,0x1.79fe10562p-7,-0x1.d027c85dep-7,-0x1.f7066ea1fp-6,
+-0x1.225a60d3f8p-5,-0x1.0a40d36878p-5,-0x1.9e94c614fp-6,-0x1.0fdaa5d3fp-6,
+-0x1.140955abep-7,-0x1.1c48c2578p-9,0x1.85cf0351p-10,0x1.4d6b75508p-9,
+0x1.ba384ac1p-10,0x1.2d5d5ac4p-12,0x1.a5296bc4p-12,0x1.38b66f604p-8,
+0x1.13a7ffde1p-6,0x1.4d334da888p-5,-0x1.18865215f8p-5,-0x1.300442cbbcp-4,
+-0x1.5ef717553cp-4,-0x1.41d59fcb7cp-4,-0x1.f5205798f8p-5,-0x1.489ac2e078p-5,
+-0x1.4da8f522fp-6,-0x1.57a1261fcp-8,0x1.d72eb7c08p-9,0x1.9305b1744p-8,
+0x1.0b4472fc4p-8,0x1.6c4689c2p-11,0x1.fd14aa42p-11,0x1.79fe10562p-7,
+0x1.4d334da888p-5,0x1.92c1d0d504p-4,0x1.4e3f7e791p-6,0x1.6a3d2a4308p-5,
+0x1.a22db94008p-5,0x1.7f78136b88p-5,0x1.2a8c6ec988p-5,0x1.878920541p-6,
+0x1.8d8f2ca42p-7,0x1.997022e88p-9,-0x1.18b599178p-9,-0x1.e034816f8p-9,
+-0x1.3e73a95f8p-9,-0x1.b209bb3cp-12,-0x1.2f49951ep-11,-0x1.c261bfffcp-8,
+-0x1.8d02fcf9fp-6,-0x1.dfe3a10378p-5,0x1.6a3d2a4308p-5,0x1.8892e908c4p-4,
+0x1.c532b6cf44p-4,0x1.9f94f4d104p-4,0x1.438cc5b004p-4,0x1.a852f0a888p-5,
+0x1.aeda1faf1p-6,0x1.bbb9bea84p-8,-0x1.30377f57cp-8,-0x1.04359da1ep-7,
+-0x1.591eb0bbcp-8,-0x1.d662b7fep-11,-0x1.48af83bfp-10,-0x1.e8191e85ep-7,
+-0x1.ae4232ae78p-5,-0x1.0409ca7f3ep-3,0x1.a22db94008p-5,0x1.c532b6cf44p-4,
+0x1.05979a12e2p-3,0x1.dfc2587f84p-4,0x1.7583d1be84p-4,0x1.e9d9ef9588p-5,
+0x1.f16332491p-6,0x1.001fe0482p-7,-0x1.5f323d6fcp-8,-0x1.2c64986dep-7,
+-0x1.8e6a7953cp-8,-0x1.0f83585fp-10,-0x1.7b71981fp-10,-0x1.19bca9e8fp-6,
+-0x1.f0b3cf2178p-5,-0x1.2c3200bffep-3,0x1.7f78136b88p-5,0x1.9f94f4d104p-4,
+0x1.dfc2587f84p-4,0x1.b7f034dd44p-4,0x1.568334ac44p-4,0x1.c1315aa908p-5,
+0x1.c81a7b901p-6,0x1.d5bb40ec4p-8,-0x1.420bdd13cp-8,-0x1.1375b5dfep-7,
+-0x1.6d58c0b7cp-8,-0x1.f1f439dep-11,-0x1.5bf300afp-10,-0x1.025a3081fp-6,
+-0x1.c779a71df8p-5,-0x1.134751351ep-3,0x1.2a8c6ec988p-5,0x1.438cc5b004p-4,
+0x1.7583d1be84p-4,0x1.568334ac44p-4,0x1.0aa978bb44p-4,0x1.5db7b2a708p-5,
+0x1.63190c0c1p-6,0x1.6db537dc4p-8,-0x1.f574cc478p-9,-0x1.aceaa9cfcp-8,
+-0x1.1c7080c7cp-8,-0x1.83ae325ep-11,-0x1.0ee50cefp-10,-0x1.9247570bep-7,
+-0x1.629bd55ff8p-5,-0x1.aca26cbb3cp-4,0x1.878920541p-6,0x1.a852f0a888p-5,
+0x1.e9d9ef9588p-5,0x1.c1315aa908p-5,0x1.5db7b2a708p-5,0x1.caa456bf1p-6,
+0x1.d1b2aeba2p-7,0x1.df9cd7c08p-9,-0x1.48d2243f8p-9,-0x1.19411c8bcp-8,
+-0x1.750836078p-9,-0x1.fc6dcc7cp-12,-0x1.6344c5bep-11,-0x1.07c976a9ep-7,
+-0x1.d10e782efp-6,-0x1.1911be0afcp-4,0x1.8d8f2ca42p-7,0x1.aeda1faf1p-6,
+0x1.f16332491p-6,0x1.c81a7b901p-6,0x1.63190c0c1p-6,0x1.d1b2aeba2p-7,
+0x1.d8dcd0ec4p-8,0x1.e6fdc761p-10,-0x1.4de1309fp-10,-0x1.1d94d2278p-9,
+-0x1.7ac5622fp-10,-0x1.02201cfcp-12,-0x1.68bbfbfcp-12,-0x1.0bd860dbcp-8,
+-0x1.d83613a1ep-7,-0x1.1d64b916f8p-5,0x1.997022e88p-9,0x1.bbb9bea84p-8,
+0x1.001fe0482p-7,0x1.d5bb40ec4p-8,0x1.6db537dc4p-8,0x1.df9cd7c08p-9,
+0x1.e6fdc761p-10,0x1.f58ad044p-12,-0x1.57db0fbcp-12,-0x1.261d413ep-11,
+-0x1.8616a1fcp-12,-0x1.09d688fp-14,-0x1.738344fp-14,-0x1.13d925bfp-10,
+-0x1.e6520eaf8p-9,-0x1.25ebb845ep-7,-0x1.18b599178p-9,-0x1.30377f57cp-8,
+-0x1.5f323d6fcp-8,-0x1.420bdd13cp-8,-0x1.f574cc478p-9,-0x1.48d2243f8p-9,
+-0x1.4de1309fp-10,-0x1.57db0fbcp-12,0x1.d77e2088p-13,0x1.93499d84p-12,
+0x1.0b717e04p-12,0x1.6c83ee2p-15,0x1.fd6a762p-15,0x1.7a3dc482p-11,
+0x1.4d6b75508p-9,0x1.9305b1744p-8,-0x1.e034816f8p-9,-0x1.04359da1ep-7,
+-0x1.2c64986dep-7,-0x1.1375b5dfep-7,-0x1.aceaa9cfcp-8,-0x1.19411c8bcp-8,
+-0x1.1d94d2278p-9,-0x1.261d413ep-11,0x1.93499d84p-12,0x1.58f2e762p-11,
+0x1.c982d744p-12,0x1.37c90c1p-14,0x1.b3b9901p-14,0x1.43869491p-10,
+0x1.1d301ebc4p-8,0x1.58b8cea42p-7,-0x1.3e73a95f8p-9,-0x1.591eb0bbcp-8,
+-0x1.8e6a7953cp-8,-0x1.6d58c0b7cp-8,-0x1.1c7080c7cp-8,-0x1.750836078p-9,
+-0x1.7ac5622fp-10,-0x1.8616a1fcp-12,0x1.0b717e04p-12,0x1.c982d744p-12,
+0x1.2f66efc4p-12,0x1.9d869c2p-15,0x1.20f4521p-14,0x1.ad18e562p-11,
+0x1.7a3fd2888p-9,0x1.c935c9504p-8,-0x1.b209bb3cp-12,-0x1.d662b7fep-11,
+-0x1.0f83585fp-10,-0x1.f1f439dep-11,-0x1.83ae325ep-11,-0x1.fc6dcc7cp-12,
+-0x1.02201cfcp-12,-0x1.09d688fp-14,0x1.6c83ee2p-15,0x1.37c90c1p-14,
+0x1.9d869c2p-15,0x1.19cf688p-17,0x1.89d5888p-17,0x1.246bfd08p-13,
+0x1.01c51802p-11,0x1.37948931p-10,-0x1.2f49951ep-11,-0x1.48af83bfp-10,
+-0x1.7b71981fp-10,-0x1.5bf300afp-10,-0x1.0ee50cefp-10,-0x1.6344c5bep-11,
+-0x1.68bbfbfcp-12,-0x1.738344fp-14,0x1.fd6a762p-15,0x1.b3b9901p-14,
+0x1.20f4521p-14,0x1.89d5888p-17,0x1.1331d44p-16,0x1.98a9ff08p-13,
+0x1.683cc882p-11,0x1.b3702d71p-10,-0x1.c261bfffcp-8,-0x1.e8191e85ep-7,
+-0x1.19bca9e8fp-6,-0x1.025a3081fp-6,-0x1.9247570bep-7,-0x1.07c976a9ep-7,
+-0x1.0bd860dbcp-8,-0x1.13d925bfp-10,0x1.7a3dc482p-11,0x1.43869491p-10,
+0x1.ad18e562p-11,0x1.246bfd08p-13,0x1.98a9ff08p-13,0x1.2f6edcb88p-9,
+0x1.0b79ee7a2p-7,0x1.435017801p-6,-0x1.8d02fcf9fp-6,-0x1.ae4232ae78p-5,
+-0x1.f0b3cf2178p-5,-0x1.c779a71df8p-5,-0x1.629bd55ff8p-5,-0x1.d10e782efp-6,
+-0x1.d83613a1ep-7,-0x1.e6520eaf8p-9,0x1.4d6b75508p-9,0x1.1d301ebc4p-8,
+0x1.7a3fd2888p-9,0x1.01c51802p-11,0x1.683cc882p-11,0x1.0b79ee7a2p-7,
+0x1.d78f91231p-6,0x1.1d0016a184p-4,-0x1.dfe3a10378p-5,-0x1.0409ca7f3ep-3,
+-0x1.2c3200bffep-3,-0x1.134751351ep-3,-0x1.aca26cbb3cp-4,-0x1.1911be0afcp-4,
+-0x1.1d64b916f8p-5,-0x1.25ebb845ep-7,0x1.9305b1744p-8,0x1.58b8cea42p-7,
+0x1.c935c9504p-8,0x1.37948931p-10,0x1.b3702d71p-10,0x1.435017801p-6,
+0x1.1d0016a184p-4,0x1.587ebfaf22p-3,0x1.bb5184b62p-7,0x1.e07176081p-6,
+0x1.155185a108p-5,0x1.fc99de791p-6,0x1.8bf83cb51p-6,0x1.03a663961p-6,
+0x1.07a502a82p-7,0x1.0f85a5f88p-9,-0x1.744f2c0fp-10,-0x1.3e73a95f8p-9,
+-0x1.a65e1e9fp-10,-0x1.1fd5f2bcp-12,-0x1.924141bcp-12,-0x1.2aac9cf7cp-8,
+-0x1.07480b77fp-6,-0x1.3e3e071278p-5,0x1.e07176081p-6,0x1.0456a55144p-4,
+0x1.2c8ab9e7c4p-4,0x1.1398ad2184p-4,0x1.ad211bc108p-5,0x1.1964d01988p-5,
+0x1.1db912511p-6,0x1.264296b04p-8,-0x1.937cce9f8p-9,-0x1.591eb0bbcp-8,
+-0x1.c9bcea678p-9,-0x1.37f09fbep-11,-0x1.b3f0df3ep-11,-0x1.43afa5c1ep-7,
+-0x1.1d54521d78p-5,-0x1.58e4909dfcp-4,0x1.155185a108p-5,0x1.2c8ab9e7c4p-4,
+0x1.5af4300e44p-4,0x1.3e27f4a004p-4,0x1.ef66137e08p-5,0x1.44d948a688p-5,
+0x1.49d8b02b1p-6,0x1.53b3b5984p-8,-0x1.d1cc10cf8p-9,-0x1.8e6a7953cp-8,
+-0x1.083670cbcp-8,-0x1.681cb07ep-11,-0x1.f7431ffep-11,-0x1.75ac148dep-7,
+-0x1.496460f078p-5,-0x1.8e275f4f7cp-4,0x1.fc99de791p-6,0x1.1398ad2184p-4,
+0x1.3e27f4a004p-4,0x1.23bfa1b5c4p-4,0x1.c6479ec988p-5,0x1.29e2c02a08p-5,
+0x1.2e77f6521p-6,0x1.378191744p-8,-0x1.ab2299178p-9,-0x1.6d58c0b7cp-8,
+-0x1.e490a95f8p-9,-0x1.4a38dd9ep-11,-0x1.cd7d951ep-11,-0x1.56a81fffep-7,
+-0x1.2e0d4e7cf8p-5,-0x1.6d1b3881bcp-4,0x1.8bf83cb51p-6,0x1.ad211bc108p-5,
+0x1.ef66137e08p-5,0x1.c6479ec988p-5,0x1.61ad92a788p-5,0x1.cfd5ffd01p-6,
+0x1.d6f8cc9c2p-7,0x1.e50b4cc88p-9,-0x1.4c8b6f378p-9,-0x1.1c7080c7cp-8,
+-0x1.7941ad7f8p-9,-0x1.0117e61ep-11,-0x1.674abd9ep-11,-0x1.0ac63707ep-7,
+-0x1.d652b9fdfp-6,-0x1.1c4098f2bcp-4,0x1.03a663961p-6,0x1.1964d01988p-5,
+0x1.44d948a688p-5,0x1.29e2c02a08p-5,0x1.cfd5ffd01p-6,0x1.3026eb611p-6,
+0x1.34d4cf7e2p-7,0x1.3e0f15d08p-9,-0x1.b41ecc5fp-10,-0x1.750836078p-9,
+-0x1.eec221efp-10,-0x1.512b2bfcp-12,-0x1.d732cafcp-12,-0x1.5ddd64cbcp-8,
+-0x1.3467e94cfp-6,-0x1.74c96274f8p-5,0x1.07a502a82p-7,0x1.1db912511p-6,
+0x1.49d8b02b1p-6,0x1.2e77f6521p-6,0x1.d6f8cc9c2p-7,0x1.34d4cf7e2p-7,
+0x1.399521744p-8,0x1.42f3bf81p-10,-0x1.bad470fep-11,-0x1.7ac5622fp-10,
+-0x1.f65eb81ep-11,-0x1.565b18f8p-13,-0x1.de7296f8p-13,-0x1.633f52a78p-9,
+-0x1.39268e5dep-7,-0x1.7a85972bfp-6,0x1.0f85a5f88p-9,0x1.264296b04p-8,
+0x1.53b3b5984p-8,0x1.378191744p-8,0x1.e50b4cc88p-9,0x1.3e0f15d08p-9,
+0x1.42f3bf81p-10,0x1.4c9a08c4p-12,-0x1.c80fae78p-13,-0x1.8616a1fcp-12,
+-0x1.02b0b17cp-12,-0x1.6095cdep-15,-0x1.ecbe45ep-15,-0x1.6ddca33ep-11,
+-0x1.4281de9f8p-9,-0x1.85d4ef03cp-8,-0x1.744f2c0fp-10,-0x1.937cce9f8p-9,
+-0x1.d1cc10cf8p-9,-0x1.ab2299178p-9,-0x1.4c8b6f378p-9,-0x1.b41ecc5fp-10,
+-0x1.bad470fep-11,-0x1.c80fae78p-13,0x1.38ac9188p-13,0x1.0b717e04p-12,
+0x1.62b6dd08p-13,0x1.e376644p-16,0x1.51d2ba2p-15,0x1.f5aad984p-12,
+0x1.ba384ac1p-10,0x1.0b4472fc4p-8,-0x1.3e73a95f8p-9,-0x1.591eb0bbcp-8,
+-0x1.8e6a7953cp-8,-0x1.6d58c0b7cp-8,-0x1.1c7080c7cp-8,-0x1.750836078p-9,
+-0x1.7ac5622fp-10,-0x1.8616a1fcp-12,0x1.0b717e04p-12,0x1.c982d744p-12,
+0x1.2f66efc4p-12,0x1.9d869c2p-15,0x1.20f4521p-14,0x1.ad18e562p-11,
+0x1.7a3fd2888p-9,0x1.c935c9504p-8,-0x1.a65e1e9fp-10,-0x1.c9bcea678p-9,
+-0x1.083670cbcp-8,-0x1.e490a95f8p-9,-0x1.7941ad7f8p-9,-0x1.eec221efp-10,
+-0x1.f65eb81ep-11,-0x1.02b0b17cp-12,0x1.62b6dd08p-13,0x1.2f66efc4p-12,
+0x1.92683088p-13,0x1.123ba02p-15,0x1.7f3ea82p-15,0x1.1c8f29a2p-11,
+0x1.f5ad9331p-10,0x1.2f33d6584p-8,-0x1.1fd5f2bcp-12,-0x1.37f09fbep-11,
+-0x1.681cb07ep-11,-0x1.4a38dd9ep-11,-0x1.0117e61ep-11,-0x1.512b2bfcp-12,
+-0x1.565b18f8p-13,-0x1.6095cdep-15,0x1.e376644p-16,0x1.9d869c2p-15,
+0x1.123ba02p-15,0x1.75c4f1p-18,0x1.052c988p-17,0x1.83d7fc1p-14,0x1.55e26084p-12,
+0x1.9d40f6a2p-11,-0x1.924141bcp-12,-0x1.b3f0df3ep-11,-0x1.f7431ffep-11,
+-0x1.cd7d951ep-11,-0x1.674abd9ep-11,-0x1.d732cafcp-12,-0x1.de7296f8p-13,
+-0x1.ecbe45ep-15,0x1.51d2ba2p-15,0x1.20f4521p-14,0x1.7f3ea82p-15,
+0x1.052c988p-17,0x1.6cfeb88p-17,0x1.0f024008p-13,0x1.ddc9e184p-12,
+0x1.20c3a791p-10,-0x1.2aac9cf7cp-8,-0x1.43afa5c1ep-7,-0x1.75ac148dep-7,
+-0x1.56a81fffep-7,-0x1.0ac63707ep-7,-0x1.5ddd64cbcp-8,-0x1.633f52a78p-9,
+-0x1.6ddca33ep-11,0x1.f5aad984p-12,0x1.ad18e562p-11,0x1.1c8f29a2p-11,
+0x1.83d7fc1p-14,0x1.0f024008p-13,0x1.9272b391p-10,0x1.62c20e7c4p-8,
+0x1.acd0a0842p-7,-0x1.07480b77fp-6,-0x1.1d54521d78p-5,-0x1.496460f078p-5,
+-0x1.2e0d4e7cf8p-5,-0x1.d652b9fdfp-6,-0x1.3467e94cfp-6,-0x1.39268e5dep-7,
+-0x1.4281de9f8p-9,0x1.ba384ac1p-10,0x1.7a3fd2888p-9,0x1.f5ad9331p-10,
+0x1.55e26084p-12,0x1.ddc9e184p-12,0x1.62c20e7c4p-8,0x1.38b822451p-6,
+0x1.7a001e0408p-5,-0x1.3e3e071278p-5,-0x1.58e4909dfcp-4,-0x1.8e275f4f7cp-4,
+-0x1.6d1b3881bcp-4,-0x1.1c4098f2bcp-4,-0x1.74c96274f8p-5,-0x1.7a85972bfp-6,
+-0x1.85d4ef03cp-8,0x1.0b4472fc4p-8,0x1.c935c9504p-8,0x1.2f33d6584p-8,
+0x1.9d40f6a2p-11,0x1.20c3a791p-10,0x1.acd0a0842p-7,0x1.7a001e0408p-5,
+0x1.c8e8c856c4p-4,0x1.2e1d01508p-9,0x1.4769c41c4p-8,0x1.79f98a844p-8,
+0x1.5a9a29a04p-8,0x1.0dd893904p-8,0x1.61e4ada88p-9,0x1.67567931p-10,
+0x1.72131384p-12,-0x1.fb7198f8p-13,-0x1.b209bb3cp-12,-0x1.1fd5f2bcp-12,
+-0x1.884f37ep-15,-0x1.122117fp-14,-0x1.9714fbdep-11,-0x1.66d7c3c78p-9,
+-0x1.b1c0a157cp-8,0x1.4769c41c4p-8,0x1.62d4e8e82p-7,0x1.99a0a25c2p-7,
+0x1.77a0af4a2p-7,0x1.247195c22p-7,0x1.7f8782084p-8,0x1.856e06008p-9,
+0x1.9110cd62p-11,-0x1.12f8229ep-11,-0x1.d662b7fep-11,-0x1.37f09fbep-11,
+-0x1.a9299efp-14,-0x1.2915ed78p-13,-0x1.b92c151fp-10,-0x1.84e4b42fcp-8,
+-0x1.d6137ef1ep-7,0x1.79f98a844p-8,0x1.99a0a25c2p-7,0x1.d8e2a0502p-7,
+0x1.b1a28bfe2p-7,0x1.519ae5762p-7,0x1.bac1bff04p-8,0x1.c19187d08p-9,
+0x1.cf0050a2p-11,-0x1.3d6e9f5ep-11,-0x1.0f83585fp-10,-0x1.681cb07ep-11,
+-0x1.ead1c4fp-14,-0x1.56f6c078p-13,-0x1.fd4d257fp-10,-0x1.c0f30147cp-8,
+-0x1.0f559ddefp-6,0x1.5a9a29a04p-8,0x1.77a0af4a2p-7,0x1.b1a28bfe2p-7,
+0x1.8da479cc2p-7,0x1.35954fc42p-7,0x1.9601da4c4p-8,0x1.9c40e5888p-9,
+0x1.a8924182p-11,-0x1.2315ae7ep-11,-0x1.f1f439dep-11,-0x1.4a38dd9ep-11,
+-0x1.c2149dfp-14,-0x1.3a7f4cf8p-13,-0x1.d307480fp-10,-0x1.9baf876bcp-8,
+-0x1.f1a05c2fep-7,0x1.0dd893904p-8,0x1.247195c22p-7,0x1.519ae5762p-7,
+0x1.35954fc42p-7,0x1.e20ccf784p-8,0x1.3c18793c4p-8,0x1.40f567688p-9,
+0x1.4a8c7102p-11,-0x1.c53efdfcp-12,-0x1.83ae325ep-11,-0x1.0117e61ep-11,
+-0x1.5e68a1fp-14,-0x1.e9b39dfp-14,-0x1.6b9a7c4fp-10,-0x1.40843a7bcp-8,
+-0x1.836ce737ep-7,0x1.61e4ada88p-9,0x1.7f8782084p-8,0x1.bac1bff04p-8,
+0x1.9601da4c4p-8,0x1.3c18793c4p-8,0x1.9e8c46808p-9,0x1.a4ecf4e1p-10,
+0x1.b180a644p-12,-0x1.293539bcp-12,-0x1.fc6dcc7cp-12,-0x1.512b2bfcp-12,
+-0x1.cb8c61ep-15,-0x1.411cecfp-14,-0x1.dcda507ep-11,-0x1.a45887ef8p-9,
+-0x1.fc182b2bcp-8,0x1.67567931p-10,0x1.856e06008p-9,0x1.c19187d08p-9,
+0x1.9c40e5888p-9,0x1.40f567688p-9,0x1.a4ecf4e1p-10,0x1.ab66c182p-11,
+0x1.b82bfb88p-13,-0x1.2dc7c478p-13,-0x1.02201cfcp-12,-0x1.565b18f8p-13,
+-0x1.d29e4bcp-16,-0x1.460d9dep-15,-0x1.e430617cp-12,-0x1.aad00bffp-10,
+-0x1.01f4a3b3cp-8,0x1.72131384p-12,0x1.9110cd62p-11,0x1.cf0050a2p-11,
+0x1.a8924182p-11,0x1.4a8c7102p-11,0x1.b180a644p-12,0x1.b82bfb88p-13,
+0x1.c552e42p-15,-0x1.36cc1bep-15,-0x1.09d688fp-14,-0x1.6095cdep-15,
+-0x1.e08f7fp-18,-0x1.4fcb9f8p-17,-0x1.f2a7fafp-14,-0x1.b790c53cp-12,
+-0x1.09a9c31fp-10,-0x1.fb7198f8p-13,-0x1.12f8229ep-11,-0x1.3d6e9f5ep-11,
+-0x1.2315ae7ep-11,-0x1.c53efdfcp-12,-0x1.293539bcp-12,-0x1.2dc7c478p-13,
+-0x1.36cc1bep-15,0x1.aa29c84p-16,0x1.6c83ee2p-15,0x1.e376644p-16,0x1.497881p-18,
+0x1.cc70c1p-18,0x1.55e0851p-14,0x1.2d5d5ac4p-12,0x1.6c4689c2p-11,
+-0x1.b209bb3cp-12,-0x1.d662b7fep-11,-0x1.0f83585fp-10,-0x1.f1f439dep-11,
+-0x1.83ae325ep-11,-0x1.fc6dcc7cp-12,-0x1.02201cfcp-12,-0x1.09d688fp-14,
+0x1.6c83ee2p-15,0x1.37c90c1p-14,0x1.9d869c2p-15,0x1.19cf688p-17,0x1.89d5888p-17,
+0x1.246bfd08p-13,0x1.01c51802p-11,0x1.37948931p-10,-0x1.1fd5f2bcp-12,
+-0x1.37f09fbep-11,-0x1.681cb07ep-11,-0x1.4a38dd9ep-11,-0x1.0117e61ep-11,
+-0x1.512b2bfcp-12,-0x1.565b18f8p-13,-0x1.6095cdep-15,0x1.e376644p-16,
+0x1.9d869c2p-15,0x1.123ba02p-15,0x1.75c4f1p-18,0x1.052c988p-17,0x1.83d7fc1p-14,
+0x1.55e26084p-12,0x1.9d40f6a2p-11,-0x1.884f37ep-15,-0x1.a9299efp-14,
+-0x1.ead1c4fp-14,-0x1.c2149dfp-14,-0x1.5e68a1fp-14,-0x1.cb8c61ep-15,
+-0x1.d29e4bcp-16,-0x1.e08f7fp-18,0x1.497881p-18,0x1.19cf688p-17,0x1.75c4f1p-18,
+0x1.fd6f08p-21,0x1.63f884p-20,0x1.084eec4p-16,0x1.d1f9c22p-15,0x1.199ff208p-13,
+-0x1.122117fp-14,-0x1.2915ed78p-13,-0x1.56f6c078p-13,-0x1.3a7f4cf8p-13,
+-0x1.e9b39dfp-14,-0x1.411cecfp-14,-0x1.460d9dep-15,-0x1.4fcb9f8p-17,
+0x1.cc70c1p-18,0x1.89d5888p-17,0x1.052c988p-17,0x1.63f884p-20,0x1.f17984p-20,
+0x1.715ffc4p-16,0x1.459aa51p-14,0x1.89933408p-13,-0x1.9714fbdep-11,
+-0x1.b92c151fp-10,-0x1.fd4d257fp-10,-0x1.d307480fp-10,-0x1.6b9a7c4fp-10,
+-0x1.dcda507ep-11,-0x1.e430617cp-12,-0x1.f2a7fafp-14,0x1.55e0851p-14,
+0x1.246bfd08p-13,0x1.83d7fc1p-14,0x1.084eec4p-16,0x1.715ffc4p-16,
+0x1.1242ca04p-12,0x1.e385a5c2p-11,0x1.243abd088p-9,-0x1.66d7c3c78p-9,
+-0x1.84e4b42fcp-8,-0x1.c0f30147cp-8,-0x1.9baf876bcp-8,-0x1.40843a7bcp-8,
+-0x1.a45887ef8p-9,-0x1.aad00bffp-10,-0x1.b790c53cp-12,0x1.2d5d5ac4p-12,
+0x1.01c51802p-11,0x1.55e26084p-12,0x1.d1f9c22p-15,0x1.459aa51p-14,
+0x1.e385a5c2p-11,0x1.aa398ba08p-9,0x1.0199ae0e2p-7,-0x1.b1c0a157cp-8,
+-0x1.d6137ef1ep-7,-0x1.0f559ddefp-6,-0x1.f1a05c2fep-7,-0x1.836ce737ep-7,
+-0x1.fc182b2bcp-8,-0x1.01f4a3b3cp-8,-0x1.09a9c31fp-10,0x1.6c4689c2p-11,
+0x1.37948931p-10,0x1.9d40f6a2p-11,0x1.199ff208p-13,0x1.89933408p-13,
+0x1.243abd088p-9,0x1.0199ae0e2p-7,0x1.37600f2a1p-6,0x1.a63541708p-9,
+0x1.c990a12c4p-8,0x1.081ce0ca2p-7,0x1.e461c7b04p-8,0x1.791d2da04p-8,
+0x1.ee9243c88p-9,0x1.f62e1d71p-10,0x1.0297aa42p-11,-0x1.62948b7cp-12,
+-0x1.2f49951ep-11,-0x1.924141bcp-12,-0x1.122117fp-14,-0x1.7f1993fp-14,
+-0x1.1c73a1afp-10,-0x1.f57d09a78p-9,-0x1.2f1680a3ep-7,0x1.c990a12c4p-8,
+0x1.efe1fdf02p-7,0x1.1e3afa321p-6,0x1.067906691p-6,0x1.98b1d14a2p-7,
+0x1.0bfe7d0c2p-7,0x1.101df9104p-8,0x1.183f6af1p-10,-0x1.80461a1ep-11,
+-0x1.48af83bfp-10,-0x1.b3f0df3ep-11,-0x1.2915ed78p-13,-0x1.9f2e8b78p-13,
+-0x1.3445c26f8p-9,-0x1.0fbe050fep-7,-0x1.48782834fp-6,0x1.081ce0ca2p-7,
+0x1.1e3afa321p-6,0x1.4a6ea7ac1p-6,0x1.2f017b431p-6,0x1.d7ceedfe2p-7,
+0x1.356139002p-7,0x1.3a23b3f84p-8,0x1.43869491p-10,-0x1.bb9dc6dep-11,
+-0x1.7b71981fp-10,-0x1.f7431ffep-11,-0x1.56f6c078p-13,-0x1.df4c1e78p-13,
+-0x1.63e0d69f8p-9,-0x1.39b4ee9bep-7,-0x1.7b31b01afp-6,0x1.e461c7b04p-8,
+0x1.067906691p-6,0x1.2f017b431p-6,0x1.15db13ea1p-6,0x1.b0a5bbcc2p-7,
+0x1.1bb361ae2p-7,0x1.2010b9d44p-8,0x1.28ac2901p-10,-0x1.96cb9dfep-11,
+-0x1.5bf300afp-10,-0x1.cd7d951ep-11,-0x1.3a7f4cf8p-13,-0x1.b783caf8p-13,
+-0x1.4656f9e78p-9,-0x1.1fab262dep-7,-0x1.5bb86693fp-6,0x1.791d2da04p-8,
+0x1.98b1d14a2p-7,0x1.d7ceedfe2p-7,0x1.b0a5bbcc2p-7,0x1.50d611c42p-7,
+0x1.b9bf9e4c4p-8,0x1.c08b6d888p-9,0x1.cdf26182p-11,-0x1.3cb58e7ep-11,
+-0x1.0ee50cefp-10,-0x1.674abd9ep-11,-0x1.e9b39dfp-14,-0x1.562eccf8p-13,
+-0x1.fc24380fp-10,-0x1.bfed436bcp-8,-0x1.0eb76d17fp-6,0x1.ee9243c88p-9,
+0x1.0bfe7d0c2p-7,0x1.356139002p-7,0x1.1bb361ae2p-7,0x1.b9bf9e4c4p-8,
+0x1.21ab29504p-8,0x1.262002908p-9,0x1.2ee9cba2p-11,-0x1.9f5a48bcp-12,
+-0x1.6344c5bep-11,-0x1.d732cafcp-12,-0x1.411cecfp-14,-0x1.c0c2a8fp-14,
+-0x1.4d345fffp-10,-0x1.25b84be7cp-8,-0x1.6308f00dep-7,0x1.f62e1d71p-10,
+0x1.101df9104p-8,0x1.3a23b3f84p-8,0x1.2010b9d44p-8,0x1.c08b6d888p-9,
+0x1.262002908p-9,0x1.2aa66901p-10,0x1.3392cec4p-12,-0x1.a5be2278p-13,
+-0x1.68bbfbfcp-12,-0x1.de7296f8p-13,-0x1.460d9dep-15,-0x1.c7aa15ep-15,
+-0x1.5254b03ep-11,-0x1.2a3d19df8p-9,-0x1.687f3aa3cp-8,0x1.0297aa42p-11,
+0x1.183f6af1p-10,0x1.43869491p-10,0x1.28ac2901p-10,0x1.cdf26182p-11,
+0x1.2ee9cba2p-11,0x1.3392cec4p-12,0x1.3cc3761p-14,-0x1.b25813ep-15,
+-0x1.738344fp-14,-0x1.ecbe45ep-15,-0x1.4fcb9f8p-17,-0x1.d5477f8p-17,
+-0x1.5c709b78p-13,-0x1.33265a1ep-11,-0x1.7344b2dfp-10,-0x1.62948b7cp-12,
+-0x1.80461a1ep-11,-0x1.bb9dc6dep-11,-0x1.96cb9dfep-11,-0x1.3cb58e7ep-11,
+-0x1.9f5a48bcp-12,-0x1.a5be2278p-13,-0x1.b25813ep-15,0x1.29c8ec2p-15,
+0x1.fd6a762p-15,0x1.51d2ba2p-15,0x1.cc70c1p-18,0x1.41bc808p-17,0x1.ddc7491p-14,
+0x1.a5296bc4p-12,0x1.fd14aa42p-11,-0x1.2f49951ep-11,-0x1.48af83bfp-10,
+-0x1.7b71981fp-10,-0x1.5bf300afp-10,-0x1.0ee50cefp-10,-0x1.6344c5bep-11,
+-0x1.68bbfbfcp-12,-0x1.738344fp-14,0x1.fd6a762p-15,0x1.b3b9901p-14,
+0x1.20f4521p-14,0x1.89d5888p-17,0x1.1331d44p-16,0x1.98a9ff08p-13,
+0x1.683cc882p-11,0x1.b3702d71p-10,-0x1.924141bcp-12,-0x1.b3f0df3ep-11,
+-0x1.f7431ffep-11,-0x1.cd7d951ep-11,-0x1.674abd9ep-11,-0x1.d732cafcp-12,
+-0x1.de7296f8p-13,-0x1.ecbe45ep-15,0x1.51d2ba2p-15,0x1.20f4521p-14,
+0x1.7f3ea82p-15,0x1.052c988p-17,0x1.6cfeb88p-17,0x1.0f024008p-13,
+0x1.ddc9e184p-12,0x1.20c3a791p-10,-0x1.122117fp-14,-0x1.2915ed78p-13,
+-0x1.56f6c078p-13,-0x1.3a7f4cf8p-13,-0x1.e9b39dfp-14,-0x1.411cecfp-14,
+-0x1.460d9dep-15,-0x1.4fcb9f8p-17,0x1.cc70c1p-18,0x1.89d5888p-17,
+0x1.052c988p-17,0x1.63f884p-20,0x1.f17984p-20,0x1.715ffc4p-16,0x1.459aa51p-14,
+0x1.89933408p-13,-0x1.7f1993fp-14,-0x1.9f2e8b78p-13,-0x1.df4c1e78p-13,
+-0x1.b783caf8p-13,-0x1.562eccf8p-13,-0x1.c0c2a8fp-14,-0x1.c7aa15ep-15,
+-0x1.d5477f8p-17,0x1.41bc808p-17,0x1.1331d44p-16,0x1.6cfeb88p-17,0x1.f17984p-20,
+0x1.5b9d42p-19,0x1.021a862p-15,0x1.c709691p-14,0x1.13037b04p-12,
+-0x1.1c73a1afp-10,-0x1.3445c26f8p-9,-0x1.63e0d69f8p-9,-0x1.4656f9e78p-9,
+-0x1.fc24380fp-10,-0x1.4d345fffp-10,-0x1.5254b03ep-11,-0x1.5c709b78p-13,
+0x1.ddc7491p-14,0x1.98a9ff08p-13,0x1.0f024008p-13,0x1.715ffc4p-16,
+0x1.021a862p-15,0x1.7f48ab04p-12,0x1.51dd6321p-10,0x1.98652b288p-9,
+-0x1.f57d09a78p-9,-0x1.0fbe050fep-7,-0x1.39b4ee9bep-7,-0x1.1fab262dep-7,
+-0x1.bfed436bcp-8,-0x1.25b84be7cp-8,-0x1.2a3d19df8p-9,-0x1.33265a1ep-11,
+0x1.a5296bc4p-12,0x1.683cc882p-11,0x1.ddc9e184p-12,0x1.459aa51p-14,
+0x1.c709691p-14,0x1.51dd6321p-10,0x1.29d3efe04p-8,0x1.68001c962p-7,
+-0x1.2f1680a3ep-7,-0x1.48782834fp-6,-0x1.7b31b01afp-6,-0x1.5bb86693fp-6,
+-0x1.0eb76d17fp-6,-0x1.6308f00dep-7,-0x1.687f3aa3cp-8,-0x1.7344b2dfp-10,
+0x1.fd14aa42p-11,0x1.b3702d71p-10,0x1.20c3a791p-10,0x1.89933408p-13,
+0x1.13037b04p-12,0x1.98652b288p-9,0x1.68001c962p-7,0x1.b326d72e1p-6,
+0x1.397d4d6388p-5,0x1.53bdf28d04p-4,0x1.88351fbb84p-4,0x1.67a7525944p-4,
+0x1.1801d32844p-4,0x1.6f381f2108p-5,0x1.74de66801p-6,0x1.800280ac4p-8,
+-0x1.07469d53cp-8,-0x1.c261bfffcp-8,-0x1.2aac9cf7cp-8,-0x1.9714fbdep-11,
+-0x1.1c73a1afp-10,-0x1.a6692723ep-7,-0x1.745aeba5f8p-5,-0x1.c215e56e3cp-4,
+0x1.53bdf28d04p-4,0x1.7031662622p-3,0x1.a90d576162p-3,0x1.85c5a46642p-3,
+0x1.2f74ab65c2p-3,0x1.8df8a2a7c4p-4,0x1.9418079e88p-5,0x1.a02af9b02p-7,
+-0x1.1d52c54fep-7,-0x1.e8191e85ep-7,-0x1.43afa5c1ep-7,-0x1.b92c151fp-10,
+-0x1.3445c26f8p-9,-0x1.c9c8df74fp-6,-0x1.93898a13bcp-4,-0x1.e7c6e9c97ep-3,
+0x1.88351fbb84p-4,0x1.a90d576162p-3,0x1.eab11f64a2p-3,0x1.c1f6ae1582p-3,
+0x1.5e51534502p-3,0x1.cb6dd0ce44p-4,0x1.d27f424b88p-5,0x1.e06f88242p-7,
+-0x1.496296dbep-7,-0x1.19bca9e8fp-6,-0x1.75ac148dep-7,-0x1.fd4d257fp-10,
+-0x1.63e0d69f8p-9,-0x1.083d57ad78p-5,-0x1.d1dac39d3cp-4,-0x1.198d36991fp-2,
+0x1.67a7525944p-4,0x1.85c5a46642p-3,0x1.c1f6ae1582p-3,0x1.9c9da68862p-3,
+0x1.413d9dffe2p-3,0x1.a54ba96004p-4,0x1.abc6eaff08p-5,0x1.b88f04922p-7,
+-0x1.2e0baa6dep-7,-0x1.025a3081fp-6,-0x1.56a81fffep-7,-0x1.d307480fp-10,
+-0x1.4656f9e78p-9,-0x1.e49d51d3fp-6,-0x1.ab3013937cp-4,-0x1.022ead71afp-2,
+0x1.1801d32844p-4,0x1.2f74ab65c2p-3,0x1.5e51534502p-3,0x1.413d9dffe2p-3,
+0x1.f433a72ec4p-4,0x1.47ff8e7f04p-4,0x1.4d0b5d7d08p-5,0x1.56fed90a2p-7,
+-0x1.d6502bebcp-8,-0x1.9247570bep-7,-0x1.0ac63707ep-7,-0x1.6b9a7c4fp-10,
+-0x1.fc24380fp-10,-0x1.794b8857fp-6,-0x1.4c95ed947cp-4,-0x1.9203967bdep-3,
+0x1.6f381f2108p-5,0x1.8df8a2a7c4p-4,0x1.cb6dd0ce44p-4,0x1.a54ba96004p-4,
+0x1.47ff8e7f04p-4,0x1.ae286a2688p-5,0x1.b4c6932b1p-6,0x1.c1d381984p-8,
+-0x1.34663c67cp-8,-0x1.07c976a9ep-7,-0x1.5ddd64cbcp-8,-0x1.dcda507ep-11,
+-0x1.4d345fffp-10,-0x1.eecf0e8dep-7,-0x1.b42c8f7078p-5,-0x1.079d0947bep-3,
+0x1.74de66801p-6,0x1.9418079e88p-5,0x1.d27f424b88p-5,0x1.abc6eaff08p-5,
+0x1.4d0b5d7d08p-5,0x1.b4c6932b1p-6,0x1.bb7ecc922p-7,0x1.c8bf21208p-9,
+-0x1.3924dadf8p-9,-0x1.0bd860dbcp-8,-0x1.633f52a78p-9,-0x1.e430617cp-12,
+-0x1.5254b03ep-11,-0x1.f66bd7a3cp-8,-0x1.bae26a42fp-6,-0x1.0bab447ffcp-4,
+0x1.800280ac4p-8,0x1.a02af9b02p-7,0x1.e06f88242p-7,0x1.b88f04922p-7,
+0x1.56fed90a2p-7,0x1.c1d381984p-8,0x1.c8bf21208p-9,0x1.d664d1e2p-11,
+-0x1.42801e1ep-11,-0x1.13d925bfp-10,-0x1.6ddca33ep-11,-0x1.f2a7fafp-14,
+-0x1.5c709b78p-13,-0x1.02b7736f8p-9,-0x1.c81e129fcp-8,-0x1.13aab054fp-6,
+-0x1.07469d53cp-8,-0x1.1d52c54fep-7,-0x1.496296dbep-7,-0x1.2e0baa6dep-7,
+-0x1.d6502bebcp-8,-0x1.34663c67cp-8,-0x1.3924dadf8p-9,-0x1.42801e1ep-11,
+0x1.ba35e3c4p-12,0x1.7a3dc482p-11,0x1.f5aad984p-12,0x1.55e0851p-14,
+0x1.ddc7491p-14,0x1.62c02121p-10,0x1.38b66f604p-8,0x1.79fe10562p-7,
+-0x1.c261bfffcp-8,-0x1.e8191e85ep-7,-0x1.19bca9e8fp-6,-0x1.025a3081fp-6,
+-0x1.9247570bep-7,-0x1.07c976a9ep-7,-0x1.0bd860dbcp-8,-0x1.13d925bfp-10,
+0x1.7a3dc482p-11,0x1.43869491p-10,0x1.ad18e562p-11,0x1.246bfd08p-13,
+0x1.98a9ff08p-13,0x1.2f6edcb88p-9,0x1.0b79ee7a2p-7,0x1.435017801p-6,
+-0x1.2aac9cf7cp-8,-0x1.43afa5c1ep-7,-0x1.75ac148dep-7,-0x1.56a81fffep-7,
+-0x1.0ac63707ep-7,-0x1.5ddd64cbcp-8,-0x1.633f52a78p-9,-0x1.6ddca33ep-11,
+0x1.f5aad984p-12,0x1.ad18e562p-11,0x1.1c8f29a2p-11,0x1.83d7fc1p-14,
+0x1.0f024008p-13,0x1.9272b391p-10,0x1.62c20e7c4p-8,0x1.acd0a0842p-7,
+-0x1.9714fbdep-11,-0x1.b92c151fp-10,-0x1.fd4d257fp-10,-0x1.d307480fp-10,
+-0x1.6b9a7c4fp-10,-0x1.dcda507ep-11,-0x1.e430617cp-12,-0x1.f2a7fafp-14,
+0x1.55e0851p-14,0x1.246bfd08p-13,0x1.83d7fc1p-14,0x1.084eec4p-16,
+0x1.715ffc4p-16,0x1.1242ca04p-12,0x1.e385a5c2p-11,0x1.243abd088p-9,
+-0x1.1c73a1afp-10,-0x1.3445c26f8p-9,-0x1.63e0d69f8p-9,-0x1.4656f9e78p-9,
+-0x1.fc24380fp-10,-0x1.4d345fffp-10,-0x1.5254b03ep-11,-0x1.5c709b78p-13,
+0x1.ddc7491p-14,0x1.98a9ff08p-13,0x1.0f024008p-13,0x1.715ffc4p-16,
+0x1.021a862p-15,0x1.7f48ab04p-12,0x1.51dd6321p-10,0x1.98652b288p-9,
+-0x1.a6692723ep-7,-0x1.c9c8df74fp-6,-0x1.083d57ad78p-5,-0x1.e49d51d3fp-6,
+-0x1.794b8857fp-6,-0x1.eecf0e8dep-7,-0x1.f66bd7a3cp-8,-0x1.02b7736f8p-9,
+0x1.62c02121p-10,0x1.2f6edcb88p-9,0x1.9272b391p-10,0x1.1242ca04p-12,
+0x1.7f48ab04p-12,0x1.1c9698944p-8,0x1.f5baae162p-7,0x1.2f3bc1f708p-5,
+-0x1.745aeba5f8p-5,-0x1.93898a13bcp-4,-0x1.d1dac39d3cp-4,-0x1.ab3013937cp-4,
+-0x1.4c95ed947cp-4,-0x1.b42c8f7078p-5,-0x1.bae26a42fp-6,-0x1.c81e129fcp-8,
+0x1.38b66f604p-8,0x1.0b79ee7a2p-7,0x1.62c20e7c4p-8,0x1.e385a5c2p-11,
+0x1.51dd6321p-10,0x1.f5baae162p-7,0x1.ba463f1888p-5,0x1.0b4ce20682p-3,
+-0x1.c215e56e3cp-4,-0x1.e7c6e9c97ep-3,-0x1.198d36991fp-2,-0x1.022ead71afp-2,
+-0x1.9203967bdep-3,-0x1.079d0947bep-3,-0x1.0bab447ffcp-4,-0x1.13aab054fp-6,
+0x1.79fe10562p-7,0x1.435017801p-6,0x1.acd0a0842p-7,0x1.243abd088p-9,
+0x1.98652b288p-9,0x1.2f3bc1f708p-5,0x1.0b4ce20682p-3,0x1.4319a39c71p-2,
+0x1.14574d0da2p-3,0x1.2b7b8d0ba1p-2,0x1.59bb22b341p-2,0x1.3d08e324b1p-2,
+0x1.eda71580e2p-3,0x1.43b42d4102p-3,0x1.48af126184p-4,0x1.528133511p-6,
+-0x1.d027c85dep-7,-0x1.8d02fcf9fp-6,-0x1.07480b77fp-6,-0x1.66d7c3c78p-9,
+-0x1.f57d09a78p-9,-0x1.745aeba5f8p-5,-0x1.483b2c18bep-3,-0x1.8cc01f812fp-2,
+0x1.2b7b8d0ba1p-2,0x1.448fea34b88p-1,0x1.76aefb11888p-1,0x1.57958947c08p-1,
+0x1.0b7f0cfba08p-1,0x1.5ecfcc9451p-2,0x1.6435752462p-3,0x1.6eda206f08p-5,
+-0x1.f7066ea1fp-6,-0x1.ae4232ae78p-5,-0x1.1d54521d78p-5,-0x1.84e4b42fcp-8,
+-0x1.0fbe050fep-7,-0x1.93898a13bcp-4,-0x1.63b7da2e8fp-2,-0x1.adf9bbbe2f8p-1,
+0x1.59bb22b341p-2,0x1.76aefb11888p-1,0x1.b08b8460588p-1,0x1.8ca49b21908p-1,
+0x1.34ce1ae1708p-1,0x1.94fc99b9f1p-2,0x1.9b37a007a2p-3,0x1.a7810eec08p-5,
+-0x1.225a60d3f8p-5,-0x1.f0b3cf2178p-5,-0x1.496460f078p-5,-0x1.c0f30147cp-8,
+-0x1.39b4ee9bep-7,-0x1.d1dac39d3cp-4,-0x1.9aa69f74efp-2,-0x1.f060276a5f8p-1,
+0x1.3d08e324b1p-2,0x1.57958947c08p-1,0x1.8ca49b21908p-1,0x1.6bb88e83488p-1,
+0x1.1b2c7995288p-1,0x1.735f428861p-2,0x1.7915e50882p-3,0x1.845a405788p-5,
+-0x1.0a40d36878p-5,-0x1.c779a71df8p-5,-0x1.2e0d4e7cf8p-5,-0x1.9baf876bcp-8,
+-0x1.1fab262dep-7,-0x1.ab3013937cp-4,-0x1.7890ed887fp-2,-0x1.c72cf0f1a78p-1,
+0x1.eda71580e2p-3,0x1.0b7f0cfba08p-1,0x1.34ce1ae1708p-1,0x1.1b2c7995288p-1,
+0x1.b8ed8e5e11p-2,0x1.21216ab821p-2,0x1.2594257802p-3,0x1.2e59c0b588p-5,
+-0x1.9e94c614fp-6,-0x1.629bd55ff8p-5,-0x1.d652b9fdfp-6,-0x1.40843a7bcp-8,
+-0x1.bfed436bcp-8,-0x1.4c95ed947cp-4,-0x1.252ca020bfp-2,-0x1.62601c23c78p-1,
+0x1.43b42d4102p-3,0x1.5ecfcc9451p-2,0x1.94fc99b9f1p-2,0x1.735f428861p-2,
+0x1.21216ab821p-2,0x1.7b2f2a8662p-3,0x1.8104919444p-4,0x1.8c8599ac1p-6,
+-0x1.0fdaa5d3fp-6,-0x1.d10e782efp-6,-0x1.3467e94cfp-6,-0x1.a45887ef8p-9,
+-0x1.25b84be7cp-8,-0x1.b42c8f7078p-5,-0x1.807cce075ep-3,-0x1.d0c024e77fp-2,
+0x1.48af126184p-4,0x1.6435752462p-3,0x1.9b37a007a2p-3,0x1.7915e50882p-3,
+0x1.2594257802p-3,0x1.8104919444p-4,0x1.86f0f25788p-5,0x1.929f49542p-7,
+-0x1.140955abep-7,-0x1.d83613a1ep-7,-0x1.39268e5dep-7,-0x1.aad00bffp-10,
+-0x1.2a3d19df8p-9,-0x1.bae26a42fp-6,-0x1.866718173cp-4,-0x1.d7e68bdf3ep-3,
+0x1.528133511p-6,0x1.6eda206f08p-5,0x1.a7810eec08p-5,0x1.845a405788p-5,
+0x1.2e59c0b588p-5,0x1.8c8599ac1p-6,0x1.929f49542p-7,0x1.9ea6f9a88p-9,
+-0x1.1c48c2578p-9,-0x1.e6520eaf8p-9,-0x1.4281de9f8p-9,-0x1.b790c53cp-12,
+-0x1.33265a1ep-11,-0x1.c81e129fcp-8,-0x1.921150a1fp-6,-0x1.e600269778p-5,
+-0x1.d027c85dep-7,-0x1.f7066ea1fp-6,-0x1.225a60d3f8p-5,-0x1.0a40d36878p-5,
+-0x1.9e94c614fp-6,-0x1.0fdaa5d3fp-6,-0x1.140955abep-7,-0x1.1c48c2578p-9,
+0x1.85cf0351p-10,0x1.4d6b75508p-9,0x1.ba384ac1p-10,0x1.2d5d5ac4p-12,
+0x1.a5296bc4p-12,0x1.38b66f604p-8,0x1.13a7ffde1p-6,0x1.4d334da888p-5,
+-0x1.8d02fcf9fp-6,-0x1.ae4232ae78p-5,-0x1.f0b3cf2178p-5,-0x1.c779a71df8p-5,
+-0x1.629bd55ff8p-5,-0x1.d10e782efp-6,-0x1.d83613a1ep-7,-0x1.e6520eaf8p-9,
+0x1.4d6b75508p-9,0x1.1d301ebc4p-8,0x1.7a3fd2888p-9,0x1.01c51802p-11,
+0x1.683cc882p-11,0x1.0b79ee7a2p-7,0x1.d78f91231p-6,0x1.1d0016a184p-4,
+-0x1.07480b77fp-6,-0x1.1d54521d78p-5,-0x1.496460f078p-5,-0x1.2e0d4e7cf8p-5,
+-0x1.d652b9fdfp-6,-0x1.3467e94cfp-6,-0x1.39268e5dep-7,-0x1.4281de9f8p-9,
+0x1.ba384ac1p-10,0x1.7a3fd2888p-9,0x1.f5ad9331p-10,0x1.55e26084p-12,
+0x1.ddc9e184p-12,0x1.62c20e7c4p-8,0x1.38b822451p-6,0x1.7a001e0408p-5,
+-0x1.66d7c3c78p-9,-0x1.84e4b42fcp-8,-0x1.c0f30147cp-8,-0x1.9baf876bcp-8,
+-0x1.40843a7bcp-8,-0x1.a45887ef8p-9,-0x1.aad00bffp-10,-0x1.b790c53cp-12,
+0x1.2d5d5ac4p-12,0x1.01c51802p-11,0x1.55e26084p-12,0x1.d1f9c22p-15,
+0x1.459aa51p-14,0x1.e385a5c2p-11,0x1.aa398ba08p-9,0x1.0199ae0e2p-7,
+-0x1.f57d09a78p-9,-0x1.0fbe050fep-7,-0x1.39b4ee9bep-7,-0x1.1fab262dep-7,
+-0x1.bfed436bcp-8,-0x1.25b84be7cp-8,-0x1.2a3d19df8p-9,-0x1.33265a1ep-11,
+0x1.a5296bc4p-12,0x1.683cc882p-11,0x1.ddc9e184p-12,0x1.459aa51p-14,
+0x1.c709691p-14,0x1.51dd6321p-10,0x1.29d3efe04p-8,0x1.68001c962p-7,
+-0x1.745aeba5f8p-5,-0x1.93898a13bcp-4,-0x1.d1dac39d3cp-4,-0x1.ab3013937cp-4,
+-0x1.4c95ed947cp-4,-0x1.b42c8f7078p-5,-0x1.bae26a42fp-6,-0x1.c81e129fcp-8,
+0x1.38b66f604p-8,0x1.0b79ee7a2p-7,0x1.62c20e7c4p-8,0x1.e385a5c2p-11,
+0x1.51dd6321p-10,0x1.f5baae162p-7,0x1.ba463f1888p-5,0x1.0b4ce20682p-3,
+-0x1.483b2c18bep-3,-0x1.63b7da2e8fp-2,-0x1.9aa69f74efp-2,-0x1.7890ed887fp-2,
+-0x1.252ca020bfp-2,-0x1.807cce075ep-3,-0x1.866718173cp-4,-0x1.921150a1fp-6,
+0x1.13a7ffde1p-6,0x1.d78f91231p-6,0x1.38b822451p-6,0x1.aa398ba08p-9,
+0x1.29d3efe04p-8,0x1.ba463f1888p-5,0x1.85dd6e72e2p-3,0x1.d740256ba1p-2,
+-0x1.8cc01f812fp-2,-0x1.adf9bbbe2f8p-1,-0x1.f060276a5f8p-1,-0x1.c72cf0f1a78p-1,
+-0x1.62601c23c78p-1,-0x1.d0c024e77fp-2,-0x1.d7e68bdf3ep-3,-0x1.e600269778p-5,
+0x1.4d334da888p-5,0x1.1d0016a184p-4,0x1.7a001e0408p-5,0x1.0199ae0e2p-7,
+0x1.68001c962p-7,0x1.0b4ce20682p-3,0x1.d740256ba1p-2,0x1.1cd0169db44p+0,
+0x1.4e07331b01p-2,0x1.6a00280b688p-1,0x1.a1e74b26388p-1,0x1.7f377dd9708p-1,
+0x1.2a5a26a1508p-1,0x1.87472ef5b1p-2,0x1.8d4c378f22p-3,0x1.992b2daa08p-5,
+-0x1.18865215f8p-5,-0x1.dfe3a10378p-5,-0x1.3e3e071278p-5,-0x1.b1c0a157cp-8,
+-0x1.2f1680a3ep-7,-0x1.c215e56e3cp-4,-0x1.8cc01f812fp-2,-0x1.df92ce367f8p-1,
+0x1.6a00280b688p-1,0x1.8850cae6e84p+0,0x1.c4e662d0d04p+0,0x1.9f4ef6ad2c4p+0,
+0x1.435647941c4p+0,0x1.a80b7998408p-1,0x1.ae918f2861p-2,0x1.bb6f031444p-4,
+-0x1.300442cbbcp-4,-0x1.0409ca7f3ep-3,-0x1.58e4909dfcp-4,-0x1.d6137ef1ep-7,
+-0x1.48782834fp-6,-0x1.e7c6e9c97ep-3,-0x1.adf9bbbe2f8p-1,-0x1.03ddfebe25ep+1,
+0x1.a1e74b26388p-1,0x1.c4e662d0d04p+0,0x1.056b8b51dc2p+1,0x1.df718b4d944p+0,
+0x1.7544e95a844p+0,0x1.e9876f42108p-1,0x1.f10f6d0801p-2,0x1.ffe97a8ac4p-4,
+-0x1.5ef717553cp-4,-0x1.2c3200bffep-3,-0x1.8e275f4f7cp-4,-0x1.0f559ddefp-6,
+-0x1.7b31b01afp-6,-0x1.198d36991fp-2,-0x1.f060276a5f8p-1,-0x1.2bff719771ep+1,
+0x1.7f377dd9708p-1,0x1.9f4ef6ad2c4p+0,0x1.df718b4d944p+0,0x1.b7a61c93b04p+0,
+0x1.564984f9a04p+0,0x1.c0e5b35bc88p-1,0x1.c7cdaa4d71p-2,0x1.d56c241484p-4,
+-0x1.41d59fcb7cp-4,-0x1.134751351ep-3,-0x1.6d1b3881bcp-4,-0x1.f1a05c2fep-7,
+-0x1.5bb86693fp-6,-0x1.022ead71afp-2,-0x1.c72cf0f1a78p-1,-0x1.1318f45aa3ep+1,
+0x1.2a5a26a1508p-1,0x1.435647941c4p+0,0x1.7544e95a844p+0,0x1.564984f9a04p+0,
+0x1.0a7c8f63904p+0,0x1.5d7ccc4da88p-1,0x1.62dd3db931p-2,0x1.6d77a01384p-4,
+-0x1.f5205798f8p-5,-0x1.aca26cbb3cp-4,-0x1.1c4098f2bcp-4,-0x1.836ce737ep-7,
+-0x1.0eb76d17fp-6,-0x1.9203967bdep-3,-0x1.62601c23c78p-1,-0x1.ac5a3bd157cp+0,
+0x1.87472ef5b1p-2,0x1.a80b7998408p-1,0x1.e9876f42108p-1,0x1.c0e5b35bc88p-1,
+0x1.5d7ccc4da88p-1,0x1.ca57180961p-2,0x1.d1643fca82p-3,0x1.df4c10df88p-5,
+-0x1.489ac2e078p-5,-0x1.1911be0afcp-4,-0x1.74c96274f8p-5,-0x1.fc182b2bcp-8,
+-0x1.6308f00dep-7,-0x1.079d0947bep-3,-0x1.d0c024e77fp-2,-0x1.18e2678493cp+0,
+0x1.8d4c378f22p-3,0x1.ae918f2861p-2,0x1.f10f6d0801p-2,0x1.c7cdaa4d71p-2,
+0x1.62dd3db931p-2,0x1.d1643fca82p-3,0x1.d88d2d1484p-4,0x1.e6abc25d1p-6,
+-0x1.4da8f522fp-6,-0x1.1d64b916f8p-5,-0x1.7a85972bfp-6,-0x1.01f4a3b3cp-8,
+-0x1.687f3aa3cp-8,-0x1.0bab447ffcp-4,-0x1.d7e68bdf3ep-3,-0x1.1d34a820378p-1,
+0x1.992b2daa08p-5,0x1.bb6f031444p-4,0x1.ffe97a8ac4p-4,0x1.d56c241484p-4,
+0x1.6d77a01384p-4,0x1.df4c10df88p-5,0x1.e6abc25d1p-6,0x1.f53657e04p-8,
+-0x1.57a1261fcp-8,-0x1.25ebb845ep-7,-0x1.85d4ef03cp-8,-0x1.09a9c31fp-10,
+-0x1.7344b2dfp-10,-0x1.13aab054fp-6,-0x1.e600269778p-5,-0x1.25ba37a57ep-3,
+-0x1.18865215f8p-5,-0x1.300442cbbcp-4,-0x1.5ef717553cp-4,-0x1.41d59fcb7cp-4,
+-0x1.f5205798f8p-5,-0x1.489ac2e078p-5,-0x1.4da8f522fp-6,-0x1.57a1261fcp-8,
+0x1.d72eb7c08p-9,0x1.9305b1744p-8,0x1.0b4472fc4p-8,0x1.6c4689c2p-11,
+0x1.fd14aa42p-11,0x1.79fe10562p-7,0x1.4d334da888p-5,0x1.92c1d0d504p-4,
+-0x1.dfe3a10378p-5,-0x1.0409ca7f3ep-3,-0x1.2c3200bffep-3,-0x1.134751351ep-3,
+-0x1.aca26cbb3cp-4,-0x1.1911be0afcp-4,-0x1.1d64b916f8p-5,-0x1.25ebb845ep-7,
+0x1.9305b1744p-8,0x1.58b8cea42p-7,0x1.c935c9504p-8,0x1.37948931p-10,
+0x1.b3702d71p-10,0x1.435017801p-6,0x1.1d0016a184p-4,0x1.587ebfaf22p-3,
+-0x1.3e3e071278p-5,-0x1.58e4909dfcp-4,-0x1.8e275f4f7cp-4,-0x1.6d1b3881bcp-4,
+-0x1.1c4098f2bcp-4,-0x1.74c96274f8p-5,-0x1.7a85972bfp-6,-0x1.85d4ef03cp-8,
+0x1.0b4472fc4p-8,0x1.c935c9504p-8,0x1.2f33d6584p-8,0x1.9d40f6a2p-11,
+0x1.20c3a791p-10,0x1.acd0a0842p-7,0x1.7a001e0408p-5,0x1.c8e8c856c4p-4,
+-0x1.b1c0a157cp-8,-0x1.d6137ef1ep-7,-0x1.0f559ddefp-6,-0x1.f1a05c2fep-7,
+-0x1.836ce737ep-7,-0x1.fc182b2bcp-8,-0x1.01f4a3b3cp-8,-0x1.09a9c31fp-10,
+0x1.6c4689c2p-11,0x1.37948931p-10,0x1.9d40f6a2p-11,0x1.199ff208p-13,
+0x1.89933408p-13,0x1.243abd088p-9,0x1.0199ae0e2p-7,0x1.37600f2a1p-6,
+-0x1.2f1680a3ep-7,-0x1.48782834fp-6,-0x1.7b31b01afp-6,-0x1.5bb86693fp-6,
+-0x1.0eb76d17fp-6,-0x1.6308f00dep-7,-0x1.687f3aa3cp-8,-0x1.7344b2dfp-10,
+0x1.fd14aa42p-11,0x1.b3702d71p-10,0x1.20c3a791p-10,0x1.89933408p-13,
+0x1.13037b04p-12,0x1.98652b288p-9,0x1.68001c962p-7,0x1.b326d72e1p-6,
+-0x1.c215e56e3cp-4,-0x1.e7c6e9c97ep-3,-0x1.198d36991fp-2,-0x1.022ead71afp-2,
+-0x1.9203967bdep-3,-0x1.079d0947bep-3,-0x1.0bab447ffcp-4,-0x1.13aab054fp-6,
+0x1.79fe10562p-7,0x1.435017801p-6,0x1.acd0a0842p-7,0x1.243abd088p-9,
+0x1.98652b288p-9,0x1.2f3bc1f708p-5,0x1.0b4ce20682p-3,0x1.4319a39c71p-2,
+-0x1.8cc01f812fp-2,-0x1.adf9bbbe2f8p-1,-0x1.f060276a5f8p-1,-0x1.c72cf0f1a78p-1,
+-0x1.62601c23c78p-1,-0x1.d0c024e77fp-2,-0x1.d7e68bdf3ep-3,-0x1.e600269778p-5,
+0x1.4d334da888p-5,0x1.1d0016a184p-4,0x1.7a001e0408p-5,0x1.0199ae0e2p-7,
+0x1.68001c962p-7,0x1.0b4ce20682p-3,0x1.d740256ba1p-2,0x1.1cd0169db44p+0,
+-0x1.df92ce367f8p-1,-0x1.03ddfebe25ep+1,-0x1.2bff719771ep+1,-0x1.1318f45aa3ep+1,
+-0x1.ac5a3bd157cp+0,-0x1.18e2678493cp+0,-0x1.1d34a820378p-1,-0x1.25ba37a57ep-3,
+0x1.92c1d0d504p-4,0x1.587ebfaf22p-3,0x1.c8e8c856c4p-4,0x1.37600f2a1p-6,
+0x1.b326d72e1p-6,0x1.4319a39c71p-2,0x1.1cd0169db44p+0,0x1.5844ba81602p+1,
+}
+#else
+/* C89: decimal floats; may not reproduce exactly */
+{
+-2.1960141602761496e-03,-6.5805378824137506e-03,-1.0955064781441592e-02,
+-1.5319606022316634e-02,-1.9674172764538866e-02,-2.4018776162151312e-02,
+-2.8353427363740025e-02,-3.2678137512434091e-02,-3.6992917745905629e-02,
+-4.1297779196369788e-02,-4.5592732990584750e-02,-4.9877790249851728e-02,
+-5.4152962090014967e-02,-5.8418259621461743e-02,-6.2673693949122367e-02,
+-6.6919276172470177e-02,-7.1155017385521546e-02,-7.5380928676835879e-02,
+-7.9597021129515610e-02,-8.3803305821206209e-02,-8.7999793824096173e-02,
+-9.2186496204917034e-02,-9.6363424024943356e-02,-1.0053058833999273e-01,
+-1.0468800020042579e-01,-1.0883567065114619e-01,-1.1297361073160062e-01,
+-1.1710183147577879e-01,-1.2122034391221348e-01,-1.2532915906398046e-01,
+-1.2942828794869854e-01,-1.3351774157852958e-01,-1.3759753096017846e-01,
+-1.4166766709489309e-01,-1.4572816097846442e-01,-1.4977902360122641e-01,
+-1.5382026594805609e-01,-1.5785189899837349e-01,-1.6187393372614167e-01,
+-1.6588638109986675e-01,-1.6988925208259786e-01,-1.7388255763192717e-01,
+-1.7786630869998987e-01,-1.8184051623346420e-01,-1.8580519117357142e-01,
+-1.8976034445607581e-01,-1.9370598701128472e-01,-1.9764212976404849e-01,
+-2.0156878363376052e-01,-2.0548595953435722e-01,-2.0939366837431805e-01,
+-2.1329192105666550e-01,-2.1718072847896508e-01,-2.2106010153332534e-01,
+-2.2493005110639785e-01,-2.2879058807937724e-01,-2.3264172332800115e-01,
+-2.3648346772255024e-01,-2.4031583212784824e-01,-2.4413882740326187e-01,
+-2.4795246440270091e-01,-2.5175675397461816e-01,-2.5555170696200946e-01,
+-2.5933733420241367e-01,-2.6311364652791269e-01,-2.6688065476513145e-01,
+-2.7063836973523792e-01,-2.7438680225394307e-01,-2.7812596313150095e-01,
+-2.8185586317270861e-01,-2.8557651317690613e-01,-2.8928792393797664e-01,
+-2.9299010624434629e-01,-2.9668307087898427e-01,-3.0036682861940278e-01,
+-3.0404139023765708e-01,-3.0770676650034545e-01,-3.1136296816860920e-01,
+-3.1501000599813267e-01,-3.1864789073914324e-01,-3.2227663313641131e-01,
+-3.2589624392925032e-01,-3.2950673385151674e-01,-3.3310811363161008e-01,
+-3.3670039399247287e-01,-3.4028358565159067e-01,-3.4385769932099208e-01,
+-3.4742274570724874e-01,-3.5097873551147529e-01,-3.5452567942932944e-01,
+-3.5806358815101191e-01,-3.6159247236126646e-01,-3.6511234273937987e-01,
+-3.6862320995918196e-01,-3.7212508468904559e-01,-3.7561797759188664e-01,
+-3.7910189932516403e-01,-3.8257686054087969e-01,-3.8604287188557862e-01,
+-3.8949994400034882e-01,-3.9294808752082133e-01,-3.9638731307717023e-01,
+-3.9981763129411263e-01,-4.0323905279090866e-01,-4.0665158818136149e-01,
+-4.1005524807381732e-01,-4.1345004307116540e-01,-4.1683598377083797e-01,
+-4.2021308076481034e-01,-4.2358134463960084e-01,-4.2694078597627083e-01,
+-4.3029141535042470e-01,-4.3363324333220987e-01,-4.3696628048631680e-01,
+-4.4029053737197898e-01,-4.4360602454297293e-01,-4.4691275254761820e-01,
+-4.5021073192877736e-01,-4.5349997322385605e-01,-4.5678048696480289e-01,
+-4.6005228367810957e-01,-4.6331537388481081e-01,-4.6656976810048434e-01,
+-4.6981547683525093e-01,-4.7305251059377440e-01,-4.7628087987526158e-01,
+-4.7950059517346233e-01,-4.8271166697666956e-01,-4.8591410576771921e-01,
+-4.8910792202399023e-01,-4.9229312621740462e-01,-4.9546972881442741e-01,
+-4.9863774027606667e-01,-5.0179717105787347e-01,-5.0494803160994195e-01,
+-5.0809033237690926e-01,-5.1122408379795559e-01,-5.1434929630680415e-01,
+-5.1746598033172120e-01,-5.2057414629551602e-01,-5.2367380461554092e-01,
+-5.2676496570369125e-01,-5.2984763996640538e-01,-5.3292183780466473e-01,
+-5.3598756961399374e-01,-5.3904484578445988e-01,-5.4209367670067365e-01,
+-5.4513407274178860e-01,-5.4816604428150129e-01,-5.5118960168805131e-01,
+-5.5420475532422131e-01,-5.5721151554733694e-01,-5.6020989270926691e-01,
+-5.6319989715642294e-01,-5.6618153922975978e-01,-5.6915482926477523e-01,
+-5.7211977759151011e-01,-5.7507639453454829e-01,-5.7802469041301663e-01,
+-5.8096467554058506e-01,-5.8389636022546654e-01,-5.8681975477041703e-01,
+-5.8973486947273557e-01,-5.9264171462426418e-01,-5.9554030051138795e-01,
+-5.9843063741503499e-01,-6.0131273561067644e-01,-6.0418660536832647e-01,
+-6.0705225695254228e-01,-6.0990970062242411e-01,-6.1275894663161523e-01,
+-6.1560000522830194e-01,-6.1843288665521357e-01,-6.2125760114962247e-01,
+-6.2407415894334406e-01,-6.2688257026273675e-01,-6.2968284532870200e-01,
+-6.3247499435668431e-01,-6.3525902755667119e-01,-6.3803495513319319e-01,
+-6.4080278728532392e-01,-6.4356253420667997e-01,-6.4631420608542101e-01,
+-6.4905781310424970e-01,-6.5179336544041178e-01,-6.5452087326569597e-01,
+-6.5724034674643406e-01,-6.5995179604350085e-01,-6.6265523131231419e-01,
+-6.6535066270283494e-01,-6.6803810035956701e-01,-6.7071755442155734e-01,
+-6.7338903502239589e-01,-6.7605255229021566e-01,-6.7870811634769268e-01,
+-6.8135573731204602e-01,-6.8399542529503776e-01,-6.8662719040297304e-01,
+-6.8925104273670001e-01,-6.9186699239160987e-01,-6.9447504945763683e-01,
+-6.9707522401925814e-01,-6.9966752615549410e-01,-7.0225196593990802e-01,
+-7.0482855344060624e-01,-7.0739729872023815e-01,-7.0995821183599617e-01,
+-7.1251130283961572e-01,-7.1505658177737530e-01,-7.1759405869009640e-01,
+-7.2012374361314357e-01,-7.2264564657642438e-01,-7.2515977760438943e-01,
+-7.2766614671603236e-01,-7.3016476392488983e-01,-7.3265563923904153e-01,
+-7.3513878266111021e-01,-7.3761420418826162e-01,-7.4008191381220456e-01,
+-7.4254192151919085e-01,-7.4499423729001535e-01,-7.4743887110001594e-01,
+-7.4987583291907356e-01,-7.5230513271161215e-01,-7.5472678043659869e-01,
+-7.5714078604754320e-01,-7.5954715949249874e-01,-7.6194591071406137e-01,
+-7.6433704964937021e-01,-7.6672058623010741e-01,-7.6909653038249814e-01,
+-7.7146489202731061e-01,-7.7382568107985605e-01,-7.7617890744998874e-01,
+-7.7852458104210598e-01,-7.8086271175514810e-01,-7.8319330948259847e-01,
+-7.8551638411248348e-01,-7.8783194552737257e-01,-7.9014000360437819e-01,
+-7.9244056821515585e-01,-7.9473364922590406e-01,-7.9701925649736438e-01,
+-7.9929739988482140e-01,-8.0156808923810274e-01,-8.0383133440157906e-01,
+-8.0608714521416402e-01,-8.0833553150931436e-01,-8.1057650311502982e-01,
+-8.1281006985385318e-01,-8.1503624154287024e-01,-8.1725502799370986e-01,
+-8.1946643901254390e-01,-8.2167048440008728e-01,-8.2386717395159792e-01,
+-8.2605651745687680e-01,-8.2823852470026793e-01,-8.3041320546065833e-01,
+-8.3258056951147807e-01,-8.3474062662070025e-01,-8.3689338655084100e-01,
+-8.3903885905895947e-01,-8.4117705389665787e-01,-8.4330798081008140e-01,
+-8.4543164953991834e-01,-8.4754806982139996e-01,-8.4965725138430059e-01,
+-8.5175920395293758e-01,-8.5385393724617131e-01,-8.5594146097740520e-01,
+-8.5802178485458569e-01,-8.6009491858020226e-01,-8.6216087185128742e-01,
+-8.6421965435941672e-01,-8.6627127579070873e-01,-8.6831574582582505e-01,
+-8.7035307413997032e-01,-8.7238327040289221e-01,-8.7440634427888142e-01,
+-8.7642230542677169e-01,-8.7843116349993977e-01,-8.8043292814630547e-01,
+-8.8242760900833161e-01,-8.8441521572302406e-01,-8.8639575792193170e-01,
+-8.8836924523114646e-01,-8.9033568727130330e-01,-8.9229509365758020e-01,
+-8.9424747399969817e-01,-8.9619283790192128e-01,-8.9813119496305660e-01,
+-9.0006255477645425e-01,-9.0198692693000737e-01,-9.0390432100615214e-01,
+-9.0581474658186778e-01,-9.0771821322867652e-01,-9.0961473051264363e-01,
+-9.1150430799437743e-01,-9.1338695522902924e-01,-9.1526268176629344e-01,
+-9.1713149715040743e-01,-9.1899341092015163e-01,-9.2084843260884952e-01,
+-9.2269657174436759e-01,-9.2453783784911536e-01,-9.2637224044004540e-01,
+-9.2819978902865330e-01,-9.3002049312097768e-01,-9.3183436221760019e-01,
+-9.3364140581364552e-01,-9.3544163339878139e-01,-9.3723505445721855e-01,
+-9.3902167846771079e-01,-9.4080151490355490e-01,-9.4257457323259075e-01,
+-9.4434086291720121e-01,-9.4610039341431218e-01,-9.4785317417539261e-01,
+-9.4959921464645447e-01,-9.5133852426805277e-01,-9.5307111247528553e-01,
+-9.5479698869779384e-01,-9.5651616235976178e-01,-9.5822864287991649e-01,
+-9.5993443967152814e-01,-9.6163356214240991e-01,-9.6332601969491805e-01,
+-9.6501182172595179e-01,-9.6669097762695344e-01,-9.6836349678390832e-01,
+-9.7002938857734478e-01,-9.7168866238233420e-01,-9.7334132756849101e-01,
+-9.7498739349997265e-01,-9.7662686953547961e-01,-9.7825976502825540e-01,
+-9.7988608932608656e-01,-9.8150585177130267e-01,-9.8311906170077634e-01,
+-9.8472572844592321e-01,-9.8632586133270195e-01,-9.8791946968161426e-01,
+-9.8950656280770488e-01,-9.9108715002056158e-01,-9.9266124062431516e-01,
+-9.9422884391763944e-01,-9.9578996919375129e-01,-9.9734462574041061e-01,
+-9.9889282283992031e-01,-1.0004345697691264e+00,-1.0019698757994178e+00,
+-1.0034987501967265e+00,-1.0050212022215277e+00,-1.0065372411288394e+00,
+-1.0080468761682226e+00,-1.0095501165837817e+00,-1.0110469716141637e+00,
+-1.0125374504925588e+00,-1.0140215624467004e+00,-1.0154993166988646e+00,
+-1.0169707224658708e+00,-1.0184357889590814e+00,-1.0198945253844016e+00,
+-1.0213469409422800e+00,-1.0227930448277078e+00,-1.0242328462302197e+00,
+-1.0256663543338931e+00,-1.0270935783173485e+00,-1.0285145273537495e+00,
+-1.0299292106108027e+00,-1.0313376372507577e+00,-1.0327398164304071e+00,
+-1.0341357573010868e+00,-1.0355254690086753e+00,-1.0369089606935944e+00,
+-1.0382862414908089e+00,-1.0396573205298267e+00,-1.0410222069346986e+00,
+-1.0423809098240184e+00,-1.0437334383109231e+00,-1.0450798015030927e+00,
+-1.0464200085027500e+00,-1.0477540684066611e+00,-1.0490819903061350e+00,
+-1.0504037832870239e+00,-1.0517194564297228e+00,-1.0530290188091698e+00,
+-1.0543324794948461e+00,-1.0556298475507759e+00,-1.0569211320355265e+00,
+-1.0582063420022081e+00,-1.0594854864984740e+00,-1.0607585745665205e+00,
+-1.0620256152430869e+00,-1.0632866175594557e+00,-1.0645415905414524e+00,
+-1.0657905432094452e+00,-1.0670334845783458e+00,-1.0682704236576086e+00,
+-1.0695013694512312e+00,-1.0707263309577542e+00,-1.0719453171702611e+00,
+-1.0731583370763786e+00,-1.0743653996582765e+00,-1.0755665138926673e+00,
+-1.0767616887508069e+00,-1.0779509331984940e+00,-1.0791342561960704e+00,
+-1.0803116666984209e+00,-1.0814831736549735e+00,-1.0826487860096989e+00,
+-1.0838085127011112e+00,-1.0849623626622673e+00,-1.0861103448207672e+00,
+-1.0872524680987539e+00,-1.0883887414129134e+00,-1.0895191736744749e+00,
+-1.0906437737892105e+00,-1.0917625506574353e+00,-1.0928755131740076e+00,
+-1.0939826702283284e+00,-1.0950840307043421e+00,-1.0961796034805360e+00,
+-1.0972693974299403e+00,-1.0983534214201285e+00,-1.0994316843132168e+00,
+-1.1005041949658647e+00,-1.1015709622292746e+00,-1.1026319949491921e+00,
+-1.1036873019659055e+00,-1.1047368921142464e+00,-1.1057807742235894e+00,
+-1.1068189571178522e+00,-1.1078514496154952e+00,-1.1088782605295222e+00,
+-1.1098993986674799e+00,-1.1109148728314580e+00,-1.1119246918180892e+00,
+-1.1129288644185493e+00,-1.1139273994185572e+00,-1.1149203055983747e+00,
+-1.1159075917328067e+00,-1.1168892665912011e+00,-1.1178653389374489e+00,
+-1.1188358175299840e+00,-1.1198007111217834e+00,-1.1207600284603672e+00,
+-1.1217137782877984e+00,-1.1226619693406832e+00,-1.1236046103501707e+00,
+-1.1245417100419530e+00,-1.1254732771362654e+00,-1.1263993203478861e+00,
+-1.1273198483861364e+00,-1.1282348699548805e+00,-1.1291443937525258e+00,
+-1.1300484284720227e+00,-1.1309469828008645e+00,-1.1318400654210876e+00,
+-1.1327276850092716e+00,-1.1336098502365388e+00,-1.1344865697685549e+00,
+-1.1353578522655283e+00,-1.1362237063822107e+00,-1.1370841407678967e+00,
+-1.1379391640664238e+00,-1.1387887849161729e+00,-1.1396330119500675e+00,
+-1.1404718537955745e+00,-1.1413053190747036e+00,-1.1421334164040076e+00,
+-1.1429561543945823e+00,-1.1437735416520667e+00,-1.1445855867766426e+00,
+-1.1453922983630349e+00,-1.1461936850005117e+00,-1.1469897552728838e+00,
+-1.1477805177585054e+00,-1.1485659810302735e+00,-1.1493461536556282e+00,
+-1.1501210441965526e+00,-1.1508906612095728e+00,-1.1516550132457581e+00,
+-1.1524141088507207e+00,-1.1531679565646158e+00,-1.1539165649221417e+00,
+-1.1546599424525397e+00,-1.1553980976795941e+00,-1.1561310391216324e+00,
+-1.1568587752915249e+00,-1.1575813146966851e+00,-1.1582986658390695e+00,
+-1.1590108372151775e+00,-1.1597178373160517e+00,-1.1604196746272777e+00,
+-1.1611163576289840e+00,-1.1618078947958423e+00,-1.1624942945970673e+00,
+-1.1631755654964167e+00,-1.1638517159521911e+00,-1.1645227544172343e+00,
+-1.1651886893389332e+00,-1.1658495291592175e+00,-1.1665052823145601e+00,
+-1.1671559572359769e+00,-1.1678015623490268e+00,-1.1684421060738117e+00,
+-1.1690775968249767e+00,-1.1697080430117097e+00,-1.1703334530377418e+00,
+-1.1709538353013471e+00,-1.1715691981953427e+00,-1.1721795501070886e+00,
+-1.1727848994184882e+00,-1.1733852545059875e+00,-1.1739806237405759e+00,
+-1.1745710154877855e+00,-1.1751564381076918e+00,-1.1757368999549129e+00,
+-1.1763124093786104e+00,-1.1768829747224885e+00,-1.1774486043247947e+00,
+-1.1780093065183195e+00,-1.1785650896303963e+00,-1.1791159619829017e+00,
+-1.1796619318922552e+00,-1.1802030076694194e+00,-1.1807391976199000e+00,
+-1.1812705100437455e+00,-1.1817969532355477e+00,-1.1823185354844412e+00,
+-1.1828352650741039e+00,-1.1833471502827564e+00,-1.1838541993831626e+00,
+-1.1843564206426294e+00,-1.1848538223230065e+00,-1.1853464126806870e+00,
+-1.1858341999666067e+00,-1.1863171924262446e+00,-1.1867953982996227e+00,
+-1.1872688258213060e+00,-1.1877374832204026e+00,-1.1882013787205636e+00,
+-1.1886605205399832e+00,-1.1891149168913984e+00,-1.1895645759820894e+00,
+-1.1900095060138796e+00,-1.1904497151831350e+00,-1.1908852116807651e+00,
+-1.1913160036922221e+00,-1.1917420993975014e+00,-1.1921635069711414e+00,
+-1.1925802345822234e+00,-1.1929922903943719e+00,-1.1933996825657545e+00,
+-1.1938024192490815e+00,-1.1942005085916065e+00,-1.1945939587351262e+00,
+-1.1949827778159801e+00,-1.1953669739650508e+00,-1.1957465553077640e+00,
+-1.1961215299640884e+00,-1.1964919060485357e+00,-1.1968576916701608e+00,
+-1.1972188949325613e+00,-1.1975755239338781e+00,-1.1979275867667951e+00,
+-1.1982750915185392e+00,-1.1986180462708802e+00,-1.1989564591001312e+00,
+-1.1992903380771480e+00,-1.1996196912673298e+00,-1.1999445267306186e+00,
+-1.2002648525214994e+00,-1.2005806766890004e+00,-1.2008920072766927e+00,
+-1.2011988523226904e+00,-1.2015012198596509e+00,-1.2017991179147742e+00,
+-1.2020925545098038e+00,-1.2023815376610258e+00,-1.2026660753792697e+00,
+-1.2029461756699078e+00,-1.2032218465328555e+00,-1.2034930959625711e+00,
+-1.2037599319480563e+00,-1.2040223624728554e+00,-1.2042803955150561e+00,
+-1.2045340390472887e+00,-1.2047833010367270e+00,-1.2050281894450876e+00,
+-1.2052687122286301e+00,-1.2055048773381571e+00,-1.2057366927190145e+00,
+-1.2059641663110909e+00,-1.2061873060488182e+00,-1.2064061198611711e+00,
+-1.2066206156716675e+00,-1.2068308013983682e+00,-1.2070366849538772e+00,
+-1.2072382742453414e+00,-1.2074355771744507e+00,-1.2076286016374382e+00,
+-1.2078173555250800e+00,-1.2080018467226949e+00,-1.2081820831101453e+00,
+-1.2083580725618361e+00,-1.2085298229467156e+00,-1.2086973421282750e+00,
+-1.2088606379645483e+00,-1.2090197183081131e+00,-1.2091745910060894e+00,
+-1.2093252639001406e+00,-1.2094717448264731e+00,-1.2096140416158363e+00,
+-1.2097521620935225e+00,-1.2098861140793673e+00,-1.2100159053877491e+00,
+-1.2101415438275893e+00,-1.2102630372023526e+00,-1.2103803933100465e+00,
+-1.2104936199432217e+00,-1.2106027248889717e+00,-1.2107077159289332e+00,
+-1.2108086008392860e+00,-1.2109053873907527e+00,-1.2109980833485992e+00,
+-1.2110866964726341e+00,-1.2111712345172094e+00,-1.2112517052312199e+00,
+-1.2113281163581036e+00,-1.2114004756358412e+00,-1.2114687907969568e+00,
+-1.2115330695685174e+00,-1.2115933196721329e+00,-1.2116495488239565e+00,
+-1.2117017647346842e+00,-1.2117499751095551e+00,-1.2117941876483513e+00,
+-1.2118344100453982e+00,-1.2118706499895637e+00,-1.2119029151642593e+00,
+-1.2119312132474391e+00,-1.2119555519116005e+00,-1.2119759388237838e+00,
+-1.2119923816455724e+00,-1.2120048880330927e+00,-1.2120134656370141e+00,
+-1.2120181221025490e+00,-1.2120188650694530e+00,-1.2120157021720246e+00,
+-1.2120086410391053e+00,-1.2119976892940798e+00,-1.2119828545548756e+00,
+-1.2119641444339635e+00,-1.2119415665383571e+00,-1.2119151284696130e+00,
+-1.2118848378238312e+00,-1.2118507021916542e+00,-1.2118127291582681e+00,
+-1.2117709263034016e+00,-1.2117253012013265e+00,-1.2116758614208578e+00,
+-1.2116226145253535e+00,-1.2115655680727144e+00,-1.2115047296153847e+00,
+-1.2114401067003513e+00,-1.2113717068691443e+00,-1.2112995376578368e+00,
+-1.2112236065970450e+00,-1.2111439212119279e+00,-1.2110604890221879e+00,
+-1.2109733175420700e+00,-1.2108824142803627e+00,-1.2107877867403971e+00,
+-1.2106894424200476e+00,-1.2105873888117316e+00,-1.2104816334024093e+00,
+-1.2103721836735843e+00,-1.2102590471013031e+00,-1.2101422311561549e+00,
+-1.2100217433032725e+00,-1.2098975910023313e+00,-1.2097697817075499e+00,
+-1.2096383228676899e+00,-1.2095032219260560e+00,-1.2093644863204958e+00,
+-1.2092221234834000e+00,-1.2090761408417023e+00,-1.2089265458168796e+00,
+-1.2087733458249517e+00,-1.2086165482764812e+00,-1.2084561605765742e+00,
+-1.2082921901248795e+00,-1.2081246443155891e+00,-1.2079535305374378e+00,
+-1.2077788561737037e+00,-1.2076006286022078e+00,-1.2074188551953142e+00,
+-1.2072335433199299e+00,-1.2070447003375051e+00,-1.2068523336040329e+00,
+-1.2066564504700494e+00,-1.2064570582806340e+00,-1.2062541643754088e+00,
+-1.2060477760885391e+00,-1.2058379007487332e+00,-1.2056245456792425e+00,
+-1.2054077181978613e+00,-1.2051874256169270e+00,-1.2049636752433202e+00,
+-1.2047364743784641e+00,-1.2045058303183254e+00,-1.2042717503534135e+00,
+-1.2040342417687810e+00,-1.2037933118440236e+00,-1.2035489678532798e+00,
+-1.2033012170652313e+00,-1.2030500667431028e+00,-1.2027955241446620e+00,
+-1.2025375965222196e+00,-1.2022762911226295e+00,-1.2020116151872884e+00,
+-1.2017435759521362e+00,-1.2014721806476558e+00,-1.2011974364988731e+00,
+-1.2009193507253570e+00,-1.2006379305412196e+00,-1.2003531831551157e+00,
+-1.2000651157702436e+00,-1.1997737355843441e+00,-1.1994790497897014e+00,
+-1.1991810655731427e+00,-1.1988797901160382e+00,-1.1985752305943009e+00,
+-1.1982673941783872e+00,-1.1979562880332963e+00,-1.1976419193185706e+00,
+-1.1973242951882952e+00,-1.1970034227910986e+00,-1.1966793092701522e+00,
+-1.1963519617631704e+00,-1.1960213874024106e+00,-1.1956875933146733e+00,
+-1.1953505866213021e+00,-1.1950103744381835e+00,-1.1946669638757470e+00,
+-1.1943203620389653e+00,-1.1939705760273540e+00,-1.1936176129349718e+00,
+-1.1932614798504204e+00,-1.1929021838568445e+00,-1.1925397320319320e+00,
+-1.1921741314479135e+00,-1.1918053891715630e+00,-1.1914335122641972e+00,
+-1.1910585077816762e+00,-1.1906803827744028e+00,-1.1902991442873230e+00,
+-1.1899147993599257e+00,-1.1895273550262431e+00,-1.1891368183148501e+00,
+-1.1887431962488648e+00,-1.1883464958459484e+00,-1.1879467241183050e+00,
+-1.1875438880726819e+00,-1.1871379947103691e+00,-1.1867290510271999e+00,
+-1.1863170640135507e+00,-1.1859020406543408e+00,-1.1854839879290324e+00,
+-1.1850629128116310e+00,-1.1846388222706850e+00,-1.1842117232692857e+00,
+-1.1837816227650677e+00,-1.1833485277102085e+00,-1.1829124450514286e+00,
+-1.1824733817299915e+00,-1.1820313446817039e+00,-1.1815863408369154e+00,
+-1.1811383771205186e+00,-1.1806874604519493e+00,-1.1802335977451861e+00,
+-1.1797767959087508e+00,-1.1793170618457083e+00,-1.1788544024536662e+00,
+-1.1783888246247756e+00,-1.1779203352457301e+00,-1.1774489411977669e+00,
+-1.1769746493566657e+00,-1.1764974665927497e+00,-1.1760173997708847e+00,
+-1.1755344557504799e+00,-1.1750486413854873e+00,-1.1745599635244020e+00,
+-1.1740684290102621e+00,-1.1735740446806489e+00,-1.1730768173676864e+00,
+-1.1725767538980421e+00,-1.1720738610929260e+00,-1.1715681457680915e+00,
+-1.1710596147338350e+00,-1.1705482747949958e+00,-1.1700341327509562e+00,
+-1.1695171953956418e+00,-1.1689974695175209e+00,-1.1684749618996051e+00,
+-1.1679496793194488e+00,-1.1674216285491497e+00,-1.1668908163553482e+00,
+-1.1663572494992280e+00,-1.1658209347365158e+00,-1.1652818788174812e+00,
+-1.1647400884869370e+00,-1.1641955704842388e+00,-1.1636483315432855e+00,
+-1.1630983783925188e+00,-1.1625457177549237e+00,-1.1619903563480278e+00,
+-1.1614323008839023e+00,-1.1608715580691609e+00,-1.1603081346049606e+00,
+-1.1597420371870015e+00,-1.1591732725055266e+00,-1.1586018472453219e+00,
+-1.1580277680857165e+00,-1.1574510417005826e+00,-1.1568716747583352e+00,
+-1.1562896739219326e+00,-1.1557050458488760e+00,-1.1551177971912097e+00,
+-1.1545279345955208e+00,-1.1539354647029398e+00,-1.1533403941491400e+00,
+-1.1527427295643378e+00,-1.1521424775732925e+00,-1.1515396447953066e+00,
+-1.1509342378442255e+00,-1.1503262633284379e+00,-1.1497157278508752e+00,
+-1.1491026380090119e+00,-1.1484870003948657e+00,-1.1478688215949973e+00,
+-1.1472481081905102e+00,-1.1466248667570511e+00,-1.1459991038648099e+00,
+-1.1453708260785191e+00,-1.1447400399574548e+00,-1.1441067520554355e+00,
+-1.1434709689208233e+00,-1.1428326970965230e+00,-1.1421919431199825e+00,
+-1.1415487135231928e+00,-1.1409030148326877e+00,-1.1402548535695445e+00,
+-1.1396042362493830e+00,-1.1389511693823664e+00,-1.1382956594732008e+00,
+-1.1376377130211353e+00,-1.1369773365199620e+00,-1.1363145364580163e+00,
+-1.1356493193181763e+00,-1.1349816915778632e+00,-1.1343116597090415e+00,
+-1.1336392301782183e+00,-1.1329644094464442e+00,-1.1322872039693124e+00,
+-1.1316076201969594e+00,-1.1309256645740646e+00,-1.1302413435398506e+00,
+-1.1295546635280829e+00,-1.1288656309670699e+00,-1.1281742522796634e+00,
+-1.1274805338832579e+00,-1.1267844821897910e+00,-1.1260861036057435e+00,
+-1.1253854045321390e+00,-1.1246823913645443e+00,-1.1239770704930692e+00,
+-1.1232694483023664e+00,-1.1225595311716319e+00,-1.1218473254746044e+00,
+-1.1211328375795659e+00,-1.1204160738493414e+00,-1.1196970406412987e+00,
+-1.1189757443073489e+00,-1.1182521911939460e+00,-1.1175263876420871e+00,
+-1.1167983399873123e+00,-1.1160680545597046e+00,-1.1153355376838903e+00,
+-1.1146007956790385e+00,-1.1138638348588614e+00,-1.1131246615316144e+00,
+-1.1123832820000956e+00,-1.1116397025616465e+00,-1.1108939295081512e+00,
+-1.1101459691260374e+00,-1.1093958276962752e+00,-1.1086435114943782e+00,
+-1.1078890267904029e+00,-1.1071323798489487e+00,-1.1063735769291583e+00,
+-1.1056126242847171e+00,-1.1048495281638537e+00,-1.1040842948093399e+00,
+-1.1033169304584902e+00,-1.1025474413431624e+00,-1.1017758336897572e+00,
+-1.1010021137192183e+00,-1.1002262876470326e+00,-1.0994483616832298e+00,
+-1.0986683420323828e+00,-1.0978862348936076e+00,-1.0971020464605630e+00,
+-1.0963157829214509e+00,-1.0955274504590164e+00,-1.0947370552505475e+00,
+-1.0939446034678753e+00,-1.0931501012773737e+00,-1.0923535548399599e+00,
+-1.0915549703110941e+00,-1.0907543538407793e+00,-1.0899517115735620e+00,
+-1.0891470496485312e+00,-1.0883403741993192e+00,-1.0875316913541013e+00,
+-1.0867210072355959e+00,-1.0859083279610644e+00,-1.0850936596423111e+00,
+-1.0842770083856834e+00,-1.0834583802920719e+00,-1.0826377814569099e+00,
+-1.0818152179701741e+00,-1.0809906959163840e+00,-1.0801642213746021e+00,
+-1.0793358004184341e+00,-1.0785054391160287e+00,-1.0776731435300775e+00,
+-1.0768389197178152e+00,-1.0760027737310196e+00,-1.0751647116160115e+00,
+-1.0743247394136546e+00,-1.0734828631593558e+00,-1.0726390888830650e+00,
+-1.0717934226092751e+00,-1.0709458703570220e+00,-1.0700964381398848e+00,
+-1.0692451319659853e+00,-1.0683919578379886e+00,-1.0675369217531028e+00,
+-1.0666800297030790e+00,-1.0658212876742112e+00,-1.0649607016473368e+00,
+-1.0640982775978358e+00,-1.0632340214956315e+00,-1.0623679393051901e+00,
+-1.0615000369855210e+00,-1.0606303204901764e+00,-1.0597587957672516e+00,
+-1.0588854687593852e+00,-1.0580103454037584e+00,-1.0571334316320957e+00,
+-1.0562547333706647e+00,-1.0553742565402757e+00,-1.0544920070562824e+00,
+-1.0536079908285814e+00,-1.0527222137616121e+00,-1.0518346817543573e+00,
+-1.0509454007003427e+00,-1.0500543764876369e+00,-1.0491616149988516e+00,
+-1.0482671221111417e+00,-1.0473709036962049e+00,-1.0464729656202820e+00,
+-1.0455733137441570e+00,-1.0446719539231566e+00,-1.0437688920071508e+00,
+-1.0428641338405527e+00,-1.0419576852623180e+00,-1.0410495521059460e+00,
+-1.0401397401994785e+00,-1.0392282553655008e+00,-1.0383151034211409e+00,
+-1.0374002901780699e+00,-1.0364838214425021e+00,-1.0355657030151946e+00,
+-1.0346459406914477e+00,-1.0337245402611046e+00,-1.0328015075085517e+00,
+-1.0318768482127183e+00,-1.0309505681470768e+00,-1.0300226730796425e+00,
+-1.0290931687729739e+00,-1.0281620609841724e+00,-1.0272293554648826e+00,
+-1.0262950579612919e+00,-1.0253591742141310e+00,-1.0244217099586734e+00,
+-1.0234826709247358e+00,-1.0225420628366777e+00,-1.0215998914134019e+00,
+-1.0206561623683541e+00,-1.0197108814095230e+00,-1.0187640542394405e+00,
+-1.0178156865551813e+00,-1.0168657840483633e+00,-1.0159143524051473e+00,
+-1.0149613973062372e+00,-1.0140069244268801e+00,-1.0130509394368659e+00,
+-1.0120934480005275e+00,-1.0111344557767410e+00,-1.0101739684189255e+00,
+-1.0092119915750430e+00,-1.0082485308875988e+00,-1.0072835919936409e+00,
+-1.0063171805247606e+00,-1.0053493021070921e+00,-1.0043799623613126e+00,
+-1.0034091669026424e+00,-1.0024369213408448e+00,-1.0014632312802263e+00,
+-1.0004881023196361e+00,-9.9951154005246678e-01,-9.9853355006665367e-01,
+-9.9755413794467529e-01,-9.9657330926355314e-01,-9.9559106959485177e-01,
+-9.9460742450467876e-01,-9.9362237955368471e-01,-9.9263594029706326e-01,
+-9.9164811228455108e-01,-9.9065890106042787e-01,-9.8966831216351636e-01,
+-9.8867635112718233e-01,-9.8768302347933457e-01,-9.8668833474242490e-01,
+-9.8569229043344819e-01,-9.8469489606394234e-01,-9.8369615713998826e-01,
+-9.8269607916220991e-01,-9.8169466762577429e-01,-9.8069192802039140e-01,
+-9.7968786583031431e-01,-9.7868248653433909e-01,-9.7767579560580486e-01,
+-9.7666779851259378e-01,-9.7565850071713101e-01,-9.7464790767638476e-01,
+-9.7363602484186629e-01,-9.7262285765962986e-01,-9.7160841157027278e-01,
+-9.7059269200893539e-01,-9.6957570440530105e-01,-9.6855745418359618e-01,
+-9.6753794676259020e-01,-9.6651718755559557e-01,-9.6549518197046780e-01,
+-9.6447193540960541e-01,-9.6344745326994996e-01,-9.6242174094298605e-01,
+-9.6139480381474129e-01,-9.6036664726578636e-01,-9.5933727667123492e-01,
+-9.5830669740074370e-01,-9.5727491481851246e-01,-9.5624193428328397e-01,
+-9.5520776114834405e-01,-9.5417240076152154e-01,-9.5313585846518833e-01,
+-9.5209813959625933e-01,-9.5105924948619247e-01,-9.5001919346098873e-01,
+-9.4897797684119212e-01,-9.4793560494188966e-01,-9.4689208307271144e-01,
+-9.4584741653783055e-01,-9.4480161063596313e-01,-9.4375467066036833e-01,
+-9.4270660189884836e-01,-9.4165740963374844e-01,-9.4060709914195684e-01,
+-9.3955567569490483e-01,-9.3850314455856676e-01,-9.3744951099345997e-01,
+-9.3639478025464484e-01,-9.3533895759172481e-01,-9.3428204824884631e-01,
+-9.3322405746469883e-01,-9.3216499047251489e-01,-9.3110485250007002e-01,
+-9.3004364876968282e-01,-9.2898138449821488e-01,-9.2791806489707085e-01,
+-9.2685369517219840e-01,-9.2578828052408824e-01,-9.2472182614777410e-01,
+-9.2365433723283275e-01,-9.2258581896338399e-01,-9.2151627651809065e-01,
+-9.2044571507015860e-01,-9.1937413978733673e-01,-9.1830155583191697e-01,
+-9.1722796836073428e-01,-9.1615338252516665e-01,-9.1507780347113510e-01,
+-9.1400123633910368e-01,-9.1292368626407949e-01,-9.1184515837561264e-01,
+-9.1076565779779628e-01,-9.0968518964926659e-01,-9.0860375904320279e-01,
+-9.0752137108732711e-01,-9.0643803088390484e-01,-9.0535374352974429e-01,
+-9.0426851411619680e-01,-9.0318234772915673e-01,-9.0209524944906150e-01,
+-9.0100722435089153e-01,-8.9991827750417031e-01,-8.9882841397296431e-01,
+-8.9773763881588309e-01,-8.9664595708607919e-01,-8.9555337383124822e-01,
+-8.9445989409362880e-01,-8.9336552291000260e-01,-8.9227026531169429e-01,
+-8.9117412632457160e-01,-8.9007711096904529e-01,-8.8897922426006915e-01,
+-8.8788047120713998e-01,-8.8678085681429764e-01,-8.8568038608012500e-01,
+-8.8457906399774799e-01,-8.8347689555483555e-01,-8.8237388573359965e-01,
+-8.8127003951079530e-01,-8.8016536185772054e-01,-8.7905985774021644e-01,
+-8.7795353211866711e-01,-8.7684638994799968e-01,-8.7573843617768432e-01,
+-8.7462967575173423e-01,-8.7352011360870563e-01,-8.7240975468169779e-01,
+-8.7129860389835301e-01,-8.7018666618085661e-01,-8.6907394644593694e-01,
+-8.6796044960486540e-01,-8.6684618056345641e-01,-8.6573114422206743e-01,
+-8.6461534547559893e-01,-8.6349878921349443e-01,-8.6238148031974049e-01,
+-8.6126342367286668e-01,-8.6014462414594561e-01,-8.5902508660659294e-01,
+-8.5790481591696732e-01,-8.5678381693377048e-01,-8.5566209450824715e-01,
+-8.5453965348618510e-01,-8.5341649870791514e-01,-8.5229263500831109e-01,
+-8.5116806721678984e-01,-8.5004280015731126e-01,-8.4891683864837830e-01,
+-8.4779018750303692e-01,-8.4666285152887610e-01,-8.4553483552802788e-01,
+-8.4440614429716732e-01,-8.4327678262751249e-01,-8.4214675530482452e-01,
+-8.4101606710940757e-01,-8.3988472281610882e-01,-8.3875272719431848e-01,
+-8.3762008500796981e-01,-8.3648680101553907e-01,-8.3535287997004559e-01,
+-8.3421832661905171e-01,-8.3308314570466280e-01,-8.3194734196352726e-01,
+-8.3081092012683655e-01,-8.2967388492032512e-01,-8.2853624106427048e-01,
+-8.2739799327349317e-01,-8.2625914625735675e-01,-8.2511970471976781e-01,
+-8.2397967335917599e-01,-8.2283905686857395e-01,-8.2169785993549738e-01,
+-8.2055608724202500e-01,-8.1941374346477858e-01,-8.1827083327492289e-01,
+-8.1712736133816577e-01,-8.1598333231475806e-01,-8.1483875085949364e-01,
+-8.1369362162170944e-01,-8.1254794924528539e-01,-8.1140173836864449e-01,
+-8.1025499362475273e-01,-8.0910771964111916e-01,-8.0795992103979586e-01,
+-8.0681160243737793e-01,-8.0566276844500351e-01,-8.0451342366835377e-01,
+-8.0336357270765291e-01,-8.0221322015766816e-01,-8.0106237060770979e-01,
+-7.9991102864163111e-01,-7.9875919883782842e-01,-7.9760688576924110e-01,
+-7.9645409400335154e-01,-7.9530082810218516e-01,-7.9414709262231042e-01,
+-7.9299289211483881e-01,-7.9183823112542484e-01,-7.9068311419426607e-01,
+-7.8952754585610307e-01,-7.8837153064021948e-01,-7.8721507307044192e-01,
+-7.8605817766514008e-01,-7.8490084893722667e-01,-7.8374309139415743e-01,
+-7.8258490953793114e-01,-7.8142630786508960e-01,-7.8026729086671764e-01,
+-7.7910786302844315e-01,-7.7794802883043701e-01,-7.7678779274741316e-01,
+-7.7562715924862857e-01,-7.7446613279788323e-01,-7.7330471785352017e-01,
+-7.7214291886842545e-01,-7.7098074029002817e-01,-7.6981818656030043e-01,
+-7.6865526211575741e-01,-7.6749197138745728e-01,-7.6632831880100127e-01,
+-7.6516430877653363e-01,-7.6399994572874164e-01,-7.6283523406685561e-01,
+-7.6167017819464888e-01,-7.6050478251043785e-01,-7.5933905140708191e-01,
+-7.5817298927198351e-01,-7.5700660048708812e-01,-7.5583988942888425e-01,
+-7.5467286046840343e-01,-7.5350551797122023e-01,-7.5233786629745225e-01,
+-7.5116990980176013e-01,-7.5000165283334752e-01,-7.4883309973596113e-01,
+-7.4766425484789067e-01,-7.4649512250196892e-01,-7.4532570702557166e-01,
+-7.4415601274061771e-01,-7.4298604396356893e-01,-7.4181580500543021e-01,
+-7.4064530017174945e-01,-7.3947453376261763e-01,-7.3830351007266870e-01,
+-7.3713223339107969e-01,-7.3596070800157065e-01,-7.3478893818240465e-01,
+-7.3361692820638780e-01,-7.3244468234086924e-01,-7.3127220484774114e-01,
+-7.3009949998343870e-01,-7.2892657199894018e-01,-7.2775342513976682e-01,
+-7.2658006364598293e-01,-7.2540649175219585e-01,-7.2423271368755593e-01,
+-7.2305873367575657e-01,-7.2188455593503420e-01,-7.2071018467816828e-01,
+-7.1953562411248129e-01,-7.1836087843983876e-01,-7.1718595185664924e-01,
+-7.1601084855386432e-01,-7.1483557271697862e-01,-7.1366012852602978e-01,
+-7.1248452015559849e-01,-7.1130875177480846e-01,-7.1013282754732643e-01,
+-7.0895675163136218e-01,-7.0778052817966852e-01,-7.0660416133954129e-01,
+-7.0542765525281936e-01,-7.0425101405588464e-01,-7.0307424187966205e-01,
+-7.0189734284961958e-01,-7.0072032108576821e-01,-6.9954318070266197e-01,
+-6.9836592580939794e-01,-6.9718856050961620e-01,-6.9601108890149987e-01,
+-6.9483351507777513e-01,-6.9365584312571116e-01,-6.9247807712712017e-01,
+-6.9130022115835743e-01,-6.9012227929032122e-01,-6.8894425558845285e-01,
+-6.8776615411273667e-01,-6.8658797891770007e-01,-6.8540973405241346e-01,
+-6.8423142356049027e-01,-6.8305305148008699e-01,-6.8187462184390313e-01,
+-6.8069613867918122e-01,-6.7951760600770683e-01,-6.7833902784580857e-01,
+-6.7716040820435808e-01,-6.7598175108877001e-01,-6.7480306049900207e-01,
+-6.7362434042955499e-01,-6.7244559486947253e-01,-6.7126682780234148e-01,
+-6.7008804320629167e-01,-6.6890924505399596e-01,-6.6773043731267023e-01,
+-6.6655162394407341e-01,-6.6537280890450745e-01,-6.6419399614481733e-01,
+-6.6301518961039108e-01,-6.6183639324115973e-01,-6.6065761097159736e-01,
+-6.5947884673072110e-01,-6.5830010444209108e-01,-6.5712138802381048e-01,
+-6.5594270138852551e-01,-6.5476404844342539e-01,-6.5358543309024242e-01,
+-6.5240685922525188e-01,-6.5122833073927211e-01,-6.5004985151766448e-01,
+-6.4887142544033338e-01,-6.4769305638172625e-01,-6.4651474821083355e-01,
+-6.4533650479118876e-01,-6.4415832998086842e-01,-6.4298022763249207e-01,
+-6.4180220159322232e-01,-6.4062425570476478e-01,-6.3944639380336810e-01,
+-6.3826861971982396e-01,-6.3709093727946708e-01,-6.3591335030217522e-01,
+-6.3473586260236914e-01,-6.3355847798901266e-01,-6.3238120026561262e-01,
+-6.3120403323021890e-01,-6.3002698067542440e-01,-6.2885004638836506e-01,
+-6.2767323415071985e-01,-6.2649654773871077e-01,-6.2531999092310286e-01,
+-6.2414356746920419e-01,-6.2296728113686584e-01,-6.2179113568048194e-01,
+-6.2061513484898967e-01,-6.1943928238586921e-01,-6.1826358202914378e-01,
+-6.1708803751137964e-01,-6.1591265255968608e-01,-6.1473743089571542e-01,
+-6.1356237623566301e-01,-6.1238749229026723e-01,-6.1121278276480950e-01,
+-6.1003825135911427e-01,-6.0886390176754901e-01,-6.0768973767902423e-01,
+-6.0651576277699348e-01,-6.0534198073945333e-01,-6.0416839523894339e-01,
+-6.0299500994254629e-01,-6.0182182851188770e-01,-6.0064885460313633e-01,
+-5.9947609186700390e-01,-5.9830354394874519e-01,-5.9713121448815798e-01,
+-5.9595910711958311e-01,-5.9478722547190443e-01,-5.9361557316854885e-01,
+-5.9244415382748628e-01,-5.9127297106122967e-01,-5.9010202847683502e-01,
+-5.8893132967590134e-01,-5.8776087825457068e-01,-5.8659067780352814e-01,
+-5.8542073190800181e-01,-5.8425104414776285e-01,-5.8308161809712544e-01,
+-5.8191245732494679e-01,-5.8074356539462713e-01,-5.7957494586410974e-01,
+-5.7840660228588092e-01,-5.7723853820697002e-01,-5.7607075716894940e-01,
+-5.7490326270793446e-01,-5.7373605835458363e-01,-5.7256914763409839e-01,
+-5.7140253406622321e-01,-5.7023622116524564e-01,-5.6907021243999623e-01,
+-5.6790451139384857e-01,-5.6673912152471928e-01,-5.6557404632506802e-01,
+-5.6440928928189749e-01,-5.6324485387675338e-01,-5.6208074358572446e-01,
+-5.6091696187944251e-01,-5.5975351222308234e-01,-5.5859039807636179e-01,
+-5.5742762289354175e-01,-5.5626519012342612e-01,-5.5510310320936185e-01,
+-5.5394136558923890e-01,-5.5277998069549028e-01,-5.5161895195509203e-01,
+-5.5045828278956321e-01,-5.4929797661496593e-01,-5.4813803684190532e-01,
+-5.4697846687552953e-01,-5.4581927011552978e-01,-5.4466044995614027e-01,
+-5.4350200978613827e-01,-5.4234395298884408e-01,-5.4118628294212101e-01,
+-5.4002900301837542e-01,-5.3887211658455669e-01,-5.3771562700215725e-01,
+-5.3655953762721253e-01,-5.3540385181030103e-01,-5.3424857289654426e-01,
+-5.3309370422560676e-01,-5.3193924913169610e-01,-5.3078521094356290e-01,
+-5.2963159298450080e-01,-5.2847839857234646e-01,-5.2732563101947960e-01,
+-5.2617329363282295e-01,-5.2502138971384227e-01,-5.2386992255854636e-01,
+-5.2271889545748706e-01,-5.2156831169575923e-01,-5.2041817455300077e-01,
+-5.1926848730339259e-01,-5.1811925321565866e-01,-5.1697047555306597e-01,
+-5.1582215757342453e-01,-5.1467430252908741e-01,-5.1352691366695069e-01,
+-5.1237999422845348e-01,-5.1123354744957794e-01,-5.1008757656084924e-01,
+-5.0894208478733560e-01,-5.0779707534864826e-01,-5.0665255145894150e-01,
+-5.0550851632691263e-01,-5.0436497315580198e-01,-5.0322192514339292e-01,
+-5.0207937548201187e-01,-5.0093732735852825e-01,-4.9979578395435453e-01,
+-4.9865474844544622e-01,-4.9751422400230183e-01,-4.9637421378996294e-01,
+-4.9523472096801413e-01,-4.9409574869058304e-01,-4.9295730010634031e-01,
+-4.9181937835849965e-01,-4.9068198658481776e-01,-4.8954512791759441e-01,
+-4.8840880548367238e-01,-4.8727302240443748e-01,-4.8613778179581857e-01,
+-4.8500308676828752e-01,-4.8386894042685924e-01,-4.8273534587109168e-01,
+-4.8160230619508582e-01,-4.8046982448748565e-01,-4.7933790383147823e-01,
+-4.7820654730479362e-01,-4.7707575797970492e-01,-4.7594553892302827e-01,
+-4.7481589319612283e-01,-4.7368682385489080e-01,-4.7255833394977742e-01,
+-4.7143042652577094e-01,-4.7030310462240266e-01,-4.6917637127374689e-01,
+-4.6805022950842101e-01,-4.6692468234958540e-01,-4.6579973281494347e-01,
+-4.6467538391674168e-01,-4.6355163866176952e-01,-4.6242850005135949e-01,
+-4.6130597108138716e-01,-4.6018405474227109e-01,-4.5906275401897290e-01,
+-4.5794207189099723e-01,-4.5682201133239175e-01,-4.5570257531174718e-01,
+-4.5458376679219725e-01,-4.5346558873141873e-01,-4.5234804408163143e-01,
+-4.5123113578959817e-01,-4.5011486679662482e-01,-4.4899924003856029e-01,
+-4.4788425844579649e-01,-4.4676992494326839e-01,-4.4565624245045399e-01,
+-4.4454321388137430e-01,-4.4343084214459338e-01,-4.4231913014321833e-01,
+-4.4120808077489926e-01,-4.4009769693182932e-01,-4.3898798150074470e-01,
+-4.3787893736292460e-01,-4.3677056739419129e-01,-4.3566287446491003e-01,
+-4.3455586143998914e-01,-4.3344953117887997e-01,-4.3234388653557687e-01,
+-4.3123893035861727e-01,-4.3013466549108159e-01,-4.2903109477059331e-01,
+-4.2792822102931893e-01,-4.2682604709396799e-01,-4.2572457578579304e-01,
+-4.2462380992058968e-01,-4.2352375230869654e-01,-4.2242440575499529e-01,
+-4.2132577305891061e-01,-4.2022785701441023e-01,-4.1913066041000491e-01,
+-4.1803418602874842e-01,-4.1693843664823760e-01,-4.1584341504061229e-01,
+-4.1474912397255537e-01,-4.1365556620529276e-01,-4.1256274449459340e-01,
+-4.1147066159076928e-01,-4.1037932023867540e-01,-4.0928872317770981e-01,
+-4.0819887314181358e-01,-4.0710977285947081e-01,-4.0602142505370864e-01,
+-4.0493383244209724e-01,-4.0384699773674981e-01,-4.0276092364432259e-01,
+-4.0167561286601483e-01,-4.0059106809756884e-01,-3.9950729202926993e-01,
+-3.9842428734594648e-01,-3.9734205672696987e-01,-3.9626060284625453e-01,
+-3.9517992837225790e-01,-3.9410003596798049e-01,-3.9302092829096580e-01,
+-3.9194260799330038e-01,-3.9086507772161383e-01,-3.8978834011707875e-01,
+-3.8871239781541078e-01,-3.8763725344686861e-01,-3.8656290963625395e-01,
+-3.8548936900291153e-01,-3.8441663416072913e-01,-3.8334470771813756e-01,
+-3.8227359227811064e-01,-3.8120329043816525e-01,-3.8013380479036130e-01,
+-3.7906513792130170e-01,-3.7799729241213242e-01,-3.7693027083854247e-01,
+-3.7586407577076386e-01,-3.7479870977357166e-01,-3.7373417540628395e-01,
+-3.7267047522276187e-01,-3.7160761177140955e-01,-3.7054558759517420e-01,
+-3.6948440523154602e-01,-3.6842406721255827e-01,-3.6736457606478723e-01,
+-3.6630593430935221e-01,-3.6524814446191556e-01,-3.6419120903268265e-01,
+-3.6313513052640189e-01,-3.6207991144236473e-01,-3.6102555427440564e-01,
+-3.5997206151090211e-01,-3.5891943563477469e-01,-3.5786767912348694e-01,
+-3.5681679444904546e-01,-3.5576678407799989e-01,-3.5471765047144288e-01,
+-3.5366939608501013e-01,-3.5262202336888038e-01,-3.5157553476777537e-01,
+-3.5052993272095989e-01,-3.4948521966224178e-01,-3.4844139801997187e-01,
+-3.4739847021704406e-01,-3.4635643867089527e-01,-3.4531530579350544e-01,
+-3.4427507399139756e-01,-3.4323574566563764e-01,-3.4219732321183471e-01,
+-3.4115980902014087e-01,-3.4012320547525121e-01,-3.3908751495640388e-01,
+-3.3805273983738005e-01,-3.3701888248650391e-01,-3.3598594526664272e-01,
+-3.3495393053520672e-01,-3.3392284064414923e-01,-3.3289267793996657e-01,
+-3.3186344476369811e-01,-3.3083514345092624e-01,-3.2980777633177638e-01,
+-3.2878134573091700e-01,-3.2775585396755957e-01,-3.2673130335545864e-01,
+-3.2570769620291173e-01,-3.2468503481275945e-01,-3.2366332148238541e-01,
+-3.2264255850371626e-01,-3.2162274816322167e-01,-3.2060389274191436e-01,
+-3.1958599451535008e-01,-3.1856905575362759e-01,-3.1755307872138872e-01,
+-3.1653806567781828e-01,-3.1552401887664416e-01,-3.1451094056613726e-01,
+-3.1349883298911152e-01,-3.1248769838292390e-01,-3.1147753897947439e-01,
+-3.1046835700520603e-01,-3.0946015468110488e-01,-3.0845293422270004e-01,
+-3.0744669784006362e-01,-3.0644144773781079e-01,-3.0543718611509973e-01,
+-3.0443391516563167e-01,-3.0343163707765086e-01,-3.0243035403394458e-01,
+-3.0143006821184315e-01,-3.0043078178321991e-01,-2.9943249691449125e-01,
+-2.9843521576661658e-01,-2.9743894049509834e-01,-2.9644367324998200e-01,
+-2.9544941617585607e-01,-2.9445617141185210e-01,-2.9346394109164464e-01,
+-2.9247272734345131e-01,-2.9148253229003274e-01,-2.9049335804869258e-01,
+-2.8950520673127755e-01,-2.8851808044417737e-01,-2.8753198128832480e-01,
+-2.8654691135919563e-01,-2.8556287274680869e-01,-2.8457986753572584e-01,
+-2.8359789780505196e-01,-2.8261696562843497e-01,-2.8163707307406582e-01,
+-2.8065822220467851e-01,-2.7968041507755004e-01,-2.7870365374450046e-01,
+-2.7772794025189285e-01,-2.7675327664063332e-01,-2.7577966494617101e-01,
+-2.7480710719849810e-01,-2.7383560542214980e-01,-2.7286516163620433e-01,
+-2.7189577785428298e-01,-2.7092745608455004e-01,-2.6996019832971285e-01,
+-2.6899400658702177e-01,-2.6802888284827020e-01,-2.6706482909979457e-01,
+-2.6610184732247433e-01,-2.6513993949173198e-01,-2.6417910757753305e-01,
+-2.6321935354438608e-01,-2.6226067935134267e-01,-2.6130308695199744e-01,
+-2.6034657829448804e-01,-2.5939115532149515e-01,-2.5843681997024248e-01,
+-2.5748357417249679e-01,-2.5653141985456784e-01,-2.5558035893730846e-01,
+-2.5463039333611448e-01,-2.5368152496092478e-01,-2.5273375571622125e-01,
+-2.5178708750102885e-01,-2.5084152220891553e-01,-2.4989706172799231e-01,
+-2.4895370794091320e-01,-2.4801146272487529e-01,-2.4707032795161865e-01,
+-2.4613030548742643e-01,-2.4519139719312477e-01,-2.4425360492408288e-01,
+-2.4331693053021297e-01,-2.4238137585597030e-01,-2.4144694274035317e-01,
+-2.4051363301690287e-01,-2.3958144851370378e-01,-2.3865039105338326e-01,
+-2.3772046245311174e-01,-2.3679166452460265e-01,-2.3586399907411248e-01,
+-2.3493746790244074e-01,-2.3401207280492997e-01,-2.3308781557146574e-01,
+-2.3216469798647665e-01,-2.3124272182893435e-01,-2.3032188887235350e-01,
+-2.2940220088479180e-01,-2.2848365962884998e-01,-2.2756626686167181e-01,
+-2.2665002433494408e-01,-2.2573493379489662e-01,-2.2482099698230229e-01,
+-2.2390821563247698e-01,-2.2299659147527962e-01,-2.2208612623511215e-01,
+-2.2117682163091956e-01,-2.2026867937618988e-01,-2.1936170117895415e-01,
+-2.1845588874178645e-01,-2.1755124376180390e-01,-2.1664776793066665e-01,
+-2.1574546293457786e-01,-2.1484433045428375e-01,-2.1394437216507356e-01,
+-2.1304558973677956e-01,-2.1214798483377706e-01,-2.1125155911498439e-01,
+-2.1035631423386292e-01,-2.0946225183841705e-01,-2.0856937357119421e-01,
+-2.0767768106928486e-01,-2.0678717596432250e-01,-2.0589785988248366e-01,
+-2.0500973444448789e-01,-2.0412280126559779e-01,-2.0323706195561897e-01,
+-2.0235251811890009e-01,-2.0146917135433284e-01,-2.0058702325535194e-01,
+-1.9970607540993512e-01,-1.9882632940060319e-01,-1.9794778680441993e-01,
+-1.9707044919299221e-01,-1.9619431813246990e-01,-1.9531939518354591e-01,
+-1.9444568190145617e-01,-1.9357317983597966e-01,-1.9270189053143838e-01,
+-1.9183181552669737e-01,-1.9096295635516469e-01,-1.9009531454479145e-01,
+-1.8922889161807177e-01,-1.8836368909204282e-01,-1.8749970847828479e-01,
+-1.8663695128292090e-01,-1.8577541900661743e-01,-1.8491511314458364e-01,
+-1.8405603518657188e-01,-1.8319818661687748e-01,-1.8234156891433884e-01,
+-1.8148618355233737e-01,-1.8063203199879752e-01,-1.7977911571618677e-01,
+-1.7892743616151563e-01,-1.7807699478633765e-01,-1.7722779303674940e-01,
+-1.7637983235339050e-01,-1.7553311417144357e-01,-1.7468763992063430e-01,
+-1.7384341102523138e-01,-1.7300042890404654e-01,-1.7215869497043457e-01,
+-1.7131821063229324e-01,-1.7047897729206341e-01,-1.6964099634672891e-01,
+-1.6880426918781666e-01,-1.6796879720139657e-01,-1.6713458176808160e-01,
+-1.6630162426302775e-01,-1.6546992605593402e-01,-1.6463948851104249e-01,
+-1.6381031298713822e-01,-1.6298240083754933e-01,-1.6215575341014699e-01,
+-1.6133037204734535e-01,-1.6050625808610164e-01,-1.5968341285791610e-01,
+-1.5886183768883200e-01,-1.5804153389943565e-01,-1.5722250280485639e-01,
+-1.5640474571476659e-01,-1.5558826393338165e-01,-1.5477305875946001e-01,
+-1.5395913148630314e-01,-1.5314648340175552e-01,-1.5233511578820469e-01,
+-1.5152502992258121e-01,-1.5071622707635868e-01,-1.4990870851555371e-01,
+-1.4910247550072597e-01,-1.4829752928697815e-01,-1.4749387112395596e-01,
+-1.4669150225584815e-01,-1.4589042392138651e-01,-1.4509063735384586e-01,
+-1.4429214378104405e-01,-1.4349494442534194e-01,-1.4269904050364346e-01,
+-1.4190443322739554e-01,-1.4111112380258817e-01,-1.4031911342975434e-01,
+-1.3952840330397009e-01,-1.3873899461485451e-01,-1.3795088854656967e-01,
+-1.3716408627782073e-01,-1.3637858898185584e-01,-1.3559439782646621e-01,
+-1.3481151397398605e-01,-1.3402993858129264e-01,-1.3324967279980626e-01,
+-1.3247071777549024e-01,-1.3169307464885094e-01,-1.3091674455493774e-01,
+-1.3014172862334306e-01,-1.2936802797820235e-01,-1.2859564373819410e-01,
+-1.2782457701653982e-01,-1.2705482892100406e-01,-1.2628640055389440e-01,
+-1.2551929301206144e-01,-1.2475350738689883e-01,-1.2398904476434325e-01,
+-1.2322590622487439e-01,-1.2246409284351500e-01,-1.2170360568983085e-01,
+-1.2094444582793074e-01,-1.2018661431646649e-01,-1.1943011220863298e-01,
+-1.1867494055216810e-01,-1.1792110038935277e-01,-1.1716859275701097e-01,
+-1.1641741868650968e-01,-1.1566757920375892e-01,-1.1491907532921175e-01,
+-1.1417190807786426e-01,-1.1342607845925556e-01,-1.1268158747746782e-01,
+-1.1193843613112620e-01,-1.1119662541339892e-01,-1.1045615631199723e-01,
+-1.0971702980917541e-01,-1.0897924688173077e-01,-1.0824280850100365e-01,
+-1.0750771563287742e-01,-1.0677396923777849e-01,-1.0604157027067629e-01,
+-1.0531051968108329e-01,-1.0458081841305500e-01,-1.0385246740518994e-01,
+-1.0312546759062968e-01,-1.0239981989705882e-01,-1.0167552524670498e-01,
+-1.0095258455633882e-01,-1.0023099873727404e-01,-9.9510768695367346e-02,
+-9.8791895331018509e-02,-9.8074379539170309e-02,-9.7358222209308565e-02,
+-9.6643424225462127e-02,-9.5929986466202877e-02,-9.5217909804645728e-02,
+-9.4507195108448627e-02,-9.3797843239812551e-02,-9.3089855055481507e-02,
+-9.2383231406742539e-02,-9.1677973139425717e-02,-9.0974081093904147e-02,
+-9.0271556105093964e-02,-8.9570399002454337e-02,-8.8870610609987466e-02,
+-8.8172191746238582e-02,-8.7475143224295948e-02,-8.6779465851790860e-02,
+-8.6085160430897645e-02,-8.5392227758333661e-02,-8.4700668625359299e-02,
+-8.4010483817777981e-02,-8.3321674115936162e-02,-8.2634240294723327e-02,
+-8.1948183123571994e-02,-8.1263503366457712e-02,-8.0580201781899063e-02,
+-7.9898279122957661e-02,-7.9217736137238148e-02,-7.8538573566888203e-02,
+-7.7860792148598534e-02,-7.7184392613602881e-02,-7.6509375687678016e-02,
+-7.5835742091143743e-02,-7.5163492538862897e-02,-7.4492627740241346e-02,
+-7.3823148399227989e-02,-7.3155055214314757e-02,-7.2488348878536613e-02,
+-7.1823030079471550e-02,-7.1159099499240597e-02,-7.0496557814507810e-02,
+-6.9835405696480279e-02,-6.9175643810908127e-02,-6.8517272818084507e-02,
+-6.7860293372845604e-02,-6.7204706124570635e-02,-6.6550511717181848e-02,
+-6.5897710789144526e-02,-6.5246303973466979e-02,-6.4596291897700553e-02,
+-6.3947675183939623e-02,-6.3300454448821597e-02,-6.2654630303526915e-02,
+-6.2010203353779048e-02,-6.1367174199844499e-02,-6.0725543436532803e-02,
+-6.0085311653196527e-02,-5.9446479433731270e-02,-5.8809047356575661e-02,
+-5.8173015994711363e-02,-5.7538385915663071e-02,-5.6905157681498508e-02,
+-5.6273331848828434e-02,-5.5642908968806637e-02,-5.5013889587129938e-02,
+-5.4386274244038191e-02,-5.3760063474314279e-02,-5.3135257807284120e-02,
+-5.2511857766816661e-02,-5.1889863871323882e-02,-5.1269276633760796e-02,
+-5.0650096561625446e-02,-5.0032324156958907e-02,-4.9415959916345287e-02,
+-4.8801004330911724e-02,-4.8187457886328389e-02,-4.7575321062808484e-02,
+-4.6964594335108245e-02,-4.6355278172526937e-02,-4.5747373038906858e-02,
+-4.5140879392633337e-02,-4.4535797686634737e-02,-4.3932128368382450e-02,
+-4.3329871879890902e-02,-4.2729028657717549e-02,-4.2129599132962881e-02,
+-4.1531583731270416e-02,-4.0934982872826708e-02,-4.0339796972361341e-02,
+-3.9746026439146931e-02,-3.9153671676999124e-02,-3.8562733084276601e-02,
+-3.7973211053881073e-02,-3.7385105973257282e-02,-3.6798418224393004e-02,
+-3.6213148183819044e-02,-3.5629296222609241e-02,-3.5046862706380466e-02,
+-3.4465847995292620e-02,-3.3886252444048637e-02,-3.3308076401894482e-02,
+-3.2731320212619153e-02,-3.2155984214554678e-02,-3.1582068740576119e-02,
+-3.1009574118101568e-02,-3.0438500669092150e-02,-2.9868848710052021e-02,
+-2.9300618552028368e-02,-2.8733810500611412e-02,-2.8168424855934404e-02,
+-2.7604461912673628e-02,-2.7041921960048398e-02,-2.6480805281821063e-02,
+-2.5921112156296999e-02,-2.5362842856324619e-02,-2.4805997649295364e-02,
+-2.4250576797143708e-02,-2.3696580556347158e-02,-2.3144009177926250e-02,
+-2.2592862907444555e-02,-2.2043141985008674e-02,-2.1494846645268240e-02,
+-2.0947977117415917e-02,-2.0402533625187402e-02,-1.9858516386861425e-02,
+-1.9315925615259744e-02,-1.8774761517747152e-02,-1.8235024296231472e-02,
+-1.7696714147163561e-02,-1.7159831261537306e-02,-1.6624375824889626e-02,
+-1.6090348017300471e-02,-1.5557748013392825e-02,-1.5026575982332702e-02,
+-1.4496832087829148e-02,-1.3968516488134242e-02,-1.3441629336043093e-02,
+-1.2916170778893843e-02,-1.2392140958567666e-02,-1.1869540011488766e-02,
+-1.1348368068624382e-02,-1.0828625255484781e-02,-1.0310311692123264e-02,
+-9.7934274931361642e-03,-9.2779727676628454e-03,-8.7639476193857035e-03,
+-8.2513521465301665e-03,-7.7401864418646937e-03,-7.2304505927007767e-03,
+-6.7221446808929386e-03,-6.2152687828387343e-03,-5.7098229694787506e-03,
+-5.2058073062966059e-03,-4.7032218533189507e-03,-4.2020666651154670e-03,
+-3.7023417907988687e-03,-3.2040472740249015e-03,-2.7071831529923429e-03,
+-2.2117494604430021e-03,-1.7177462236617203e-03,-1.2251734644763701e-03,
+-7.3403119925785631e-04,-2.4431943892011532e-04,2.4396181107988468e-04,
+7.3081255074214369e-04,1.2162327855236299e-03,1.7002225263382797e-03,
+2.1827817895569979e-03,2.6639105970076571e-03,3.1436089759750985e-03,
+3.6218769592011313e-03,4.0987145848845330e-03,4.5741218966810493e-03,
+5.0480989437033941e-03,5.5206457805212494e-03,5.9917624671612657e-03,
+6.4614490691070614e-03,6.9297056572992233e-03,7.3965323081353063e-03,
+7.8619291034698335e-03,8.3258961306142965e-03,8.7884334823371546e-03,
+9.2495412568638358e-03,9.7092195578767360e-03,1.0167468494515219e-02,
+1.0624288181375618e-02,1.1079678738511234e-02,1.1533640291432334e-02,
+1.1986172971106157e-02,1.2437276913956907e-02,1.2886952261865758e-02,
+1.3335199162170852e-02,1.3782017767667298e-02,1.4227408236607175e-02,
+1.4671370732699529e-02,1.5113905425110374e-02,1.5555012488462694e-02,
+1.5994692102836439e-02,1.6432944453768528e-02,1.6869769732252848e-02,
+1.7305168134740256e-02,1.7739139863138575e-02,1.8171685124812598e-02,
+1.8602804132584083e-02,1.9032497104731760e-02,1.9460764264991326e-02,
+1.9887605842555445e-02,2.0313022072073750e-02,2.0737013193652842e-02,
+2.1159579452856292e-02,2.1580721100704636e-02,2.2000438393675381e-02,
+2.2418731593703001e-02,2.2835600968178937e-02,2.3251046789951602e-02,
+2.3665069337326372e-02,2.4077668894065596e-02,2.4488845749388588e-02,
+2.4898600197971632e-02,2.5306932539947979e-02,2.5713843080907850e-02,
+2.6119332131898432e-02,2.6523400009423881e-02,2.6926047035445322e-02,
+2.7327273537380847e-02,2.7727079848105518e-02,2.8125466305951363e-02,
+2.8522433254707380e-02,2.8917981043619534e-02,2.9312110027390759e-02,
+2.9704820566180956e-02,3.0096113025606996e-02,3.0485987776742718e-02,
+3.0874445196118927e-02,3.1261485665723399e-02,3.1647109573000876e-02,
+3.2031317310853069e-02,3.2414109277638659e-02,3.2795485877173292e-02,
+3.3175447518729584e-02,3.3553994617037119e-02,3.3931127592282451e-02,
+3.4306846870109098e-02,3.4681152881617550e-02,3.5054046063365263e-02,
+3.5425526857366663e-02,3.5795595711093142e-02,3.6164253077473063e-02,
+3.6531499414891755e-02,3.6897335187191516e-02,3.7261760863671611e-02,
+3.7624776919088276e-02,3.7986383833654713e-02,3.8346582093041093e-02,
+3.8705372188374554e-02,3.9062754616239204e-02,3.9418729878676118e-02,
+3.9773298483183339e-02,4.0126460942715880e-02,4.0478217775685721e-02,
+4.0828569505961809e-02,4.1177516662870062e-02,4.1525059781193363e-02,
+4.1871199401171566e-02,4.2215936068501492e-02,4.2559270334336929e-02,
+4.2901202755288637e-02,4.3241733893424339e-02,4.3580864316268730e-02,
+4.3918594596803473e-02,4.4254925313467197e-02,4.4589857050155501e-02,
+4.4923390396220952e-02,4.5255525946473085e-02,4.5586264301178403e-02,
+4.5915606066060377e-02,4.6243551852299447e-02,4.6570102276533021e-02,
+4.6895257960855474e-02,4.7219019532818152e-02,4.7541387625429365e-02,
+4.7862362877154396e-02,4.8181945931915493e-02,4.8500137439091873e-02,
+4.8816938053519721e-02,4.9132348435492190e-02,4.9446369250759403e-02,
+4.9759001170528450e-02,5.0070244871463387e-02,5.0380101035685243e-02,
+5.0688570350772011e-02,5.0995653509758654e-02,5.1301351211137103e-02,
+5.1605664158856257e-02,5.1908593062321984e-02,5.2210138636397119e-02,
+5.2510301601401466e-02,5.2809082683111797e-02,5.3106482612761852e-02,
+5.3402502127042339e-02,5.3697141968100937e-02,5.3990402883542288e-02,
+5.4282285626428006e-02,5.4572790955276673e-02,5.4861919634063838e-02,
+5.5149672432222019e-02,5.5436050124640701e-02,5.5721053491666339e-02,
+5.6004683319102355e-02,5.6286940398209140e-02,5.6567825525704052e-02,
+5.6847339503761418e-02,5.7125483140012534e-02,5.7402257247545663e-02,
+5.7677662644906036e-02,5.7951700156095853e-02,5.8224370610574283e-02,
+5.8495674843257461e-02,5.8765613694518493e-02,5.9034188010187449e-02,
+5.9301398641551373e-02,5.9567246445354272e-02,5.9831732283797123e-02,
+6.0094857024537873e-02,6.0356621540691435e-02,6.0617026710829691e-02,
+6.0876073418981491e-02,6.1133762554632654e-02,6.1390095012725965e-02,
+6.1645071693661180e-02,6.1898693503295021e-02,6.2150961352941181e-02,
+6.2401876159370318e-02,6.2651438844810059e-02,6.2899650336945001e-02,
+6.3146511568916708e-02,6.3392023479323711e-02,6.3636187012221512e-02,
+6.3879003117122579e-02,6.4120472748996349e-02,6.4360596868269226e-02,
+6.4599376440824585e-02,6.4836812438002767e-02,6.5072905836601080e-02,
+6.5307657618873804e-02,6.5541068772532185e-02,6.5773140290744436e-02,
+6.6003873172135741e-02,6.6233268420788249e-02,6.6461327046241081e-02,
+6.6688050063490323e-02,6.6913438492989030e-02,6.7137493360647227e-02,
+6.7360215697831904e-02,6.7581606541367023e-02,6.7801666933533511e-02,
+6.8020397922069264e-02,6.8237800560169148e-02,6.8453875906484996e-02,
+6.8668625025125607e-02,6.8882048985656752e-02,6.9094148863101168e-02,
+6.9304925737938561e-02,6.9514380696105604e-02,6.9722514828995941e-02,
+6.9929329233460180e-02,7.0134825011805901e-02,7.0339003271797651e-02,
+7.0541865126656944e-02,7.0743411695062264e-02,7.0943644101149061e-02,
+7.1142563474509757e-02,7.1340170950193738e-02,7.1536467668707360e-02,
+7.1731454776013948e-02,7.1925133423533794e-02,7.2117504768144158e-02,
+7.2308569972179271e-02,7.2498330203430328e-02,7.2686786635145495e-02,
+7.2873940446029906e-02,7.3059792820245661e-02,7.3244344947411832e-02,
+7.3427598022604457e-02,7.3609553246356541e-02,7.3790211824658059e-02,
+7.3969574968955953e-02,7.4147643896154136e-02,7.4324419828613486e-02,
+7.4499903994151850e-02,7.4674097626044045e-02,7.4847001963021853e-02,
+7.5018618249274027e-02,7.5188947734446288e-02,7.5357991673641322e-02,
+7.5525751327418789e-02,7.5692227961795311e-02,7.5857422848244482e-02,
+7.6021337263696864e-02,7.6183972490539986e-02,7.6345329816618346e-02,
+7.6505410535233409e-02,7.6664215945143610e-02,7.6821747350564351e-02,
+7.6978006061168003e-02,7.7132993392083904e-02,7.7286710663898361e-02,
+7.7439159202654650e-02,7.7590340339853014e-02,7.7740255412450665e-02,
+7.7888905762861782e-02,7.8036292738957513e-02,7.8182417694065975e-02,
+7.8327281986972253e-02,7.8470886981918397e-02,7.8613234048603431e-02,
+7.8754324562183342e-02,7.8894159903271088e-02,7.9032741457936595e-02,
+7.9170070617706756e-02,7.9306148779565433e-02,7.9440977345953456e-02,
+7.9574557724768624e-02,7.9706891329365703e-02,7.9837979578556428e-02,
+7.9967823896609502e-02,8.0096425713250596e-02,8.0223786463662350e-02,
+8.0349907588484371e-02,8.0474790533813234e-02,8.0598436751202485e-02,
+8.0720847697662634e-02,8.0842024835661164e-02,8.0961969633122521e-02,
+8.1080683563428124e-02,8.1198168105416357e-02,8.1314424743382574e-02,
+8.1429454967079096e-02,8.1543260271715212e-02,8.1655842157957181e-02,
+8.1767202131928229e-02,8.1877341705208551e-02,8.1986262394835308e-02,
+8.2093965723302631e-02,8.2200453218561620e-02,8.2305726414020342e-02,
+8.2409786848543831e-02,8.2512636066454093e-02,8.2614275617530097e-02,
+8.2714707057007786e-02,8.2813931945580066e-02,8.2911951849396814e-02,
+8.3008768340064876e-02,8.3104382994648063e-02,8.3198797395667157e-02,
+8.3292013131099907e-02,8.3384031794381031e-02,8.3474854984402214e-02,
+8.3564484305512110e-02,8.3652921367516342e-02,8.3740167785677500e-02,
+8.3826225180715142e-02,8.3911095178805795e-02,8.3994779411582954e-02,
+8.4077279516137082e-02,8.4158597135015611e-02,8.4238733916222941e-02,
+8.4317691513220439e-02,8.4395471584926440e-02,8.4472075795716250e-02,
+8.4547505815422141e-02,8.4621763319333354e-02,8.4694849988196097e-02,
+8.4766767508213547e-02,8.4837517571045851e-02,8.4907101873810120e-02,
+8.4975522119080438e-02,8.5042780014887853e-02,8.5108877274720385e-02,
+8.5173815617523019e-02,8.5237596767697710e-02,8.5300222455103381e-02,
+8.5361694415055922e-02,8.5422014388328193e-02,8.5481184121150022e-02,
+8.5539205365208204e-02,8.5596079877646503e-02,8.5651809421065650e-02,
+8.5706395763523346e-02,8.5759840678534260e-02,8.5812145945070029e-02,
+8.5863313347559256e-02,8.5913344675887515e-02,8.5962241725397348e-02,
+8.6010006296888264e-02,8.6056640196616740e-02,8.6102145236296224e-02,
+8.6146523233097128e-02,8.6189776009646835e-02,8.6231905394029695e-02,
+8.6272913219787029e-02,8.6312801325917121e-02,8.6351571556875228e-02,
+8.6389225762573574e-02,8.6425765798381349e-02,8.6461193525124713e-02,
+8.6495510809086795e-02,8.6528719522007691e-02,8.6560821541084465e-02,
+8.6591818748971150e-02,8.6621713033778747e-02,8.6650506289075224e-02,
+8.6678200413885520e-02,8.6704797312691539e-02,8.6730298895432156e-02,
+8.6754707077503213e-02,8.6778023779757518e-02,8.6800250928504852e-02,
+8.6821390455511960e-02,8.6841444298002557e-02,8.6860414398657326e-02,
+8.6878302705613919e-02,8.6895111172466954e-02,8.6910841758268020e-02,
+8.6925496427525673e-02,8.6939077150205435e-02,8.6951585901729800e-02,
+8.6963024662978228e-02,8.6973395420287147e-02,8.6982700165449955e-02,
+8.6990940895717017e-02,8.6998119613795666e-02,8.7004238327850203e-02,
+8.7009299051501898e-02,8.7013303803828990e-02,8.7016254609366683e-02,
+8.7018153498107154e-02,8.7019002505499543e-02,8.7018803672449963e-02,
+8.7017559045321491e-02,8.7015270675934175e-02,8.7011940621565032e-02,
+8.7007570944948043e-02,8.7002163714274161e-02,8.6995721003191306e-02,
+8.6988244890804367e-02,8.6979737461675199e-02,8.6970200805822628e-02,
+8.6959637018722447e-02,8.6948048201307415e-02,8.6935436459967264e-02,
+8.6921803906548689e-02,8.6907152658355358e-02,8.6891484838147903e-02,
+8.6874802574143928e-02,8.6857108000018002e-02,8.6838403254901664e-02,
+8.6818690483383421e-02,8.6797971835508747e-02,8.6776249466780087e-02,
+8.6753525538156850e-02,8.6729802216055418e-02,8.6705081672349138e-02,
+8.6679366084368326e-02,8.6652657634900265e-02,8.6624958512189210e-02,
+8.6596270909936379e-02,8.6566597027299963e-02,8.6535939068895118e-02,
+8.6504299244793970e-02,8.6471679770525611e-02,8.6438082867076105e-02,
+8.6403510760888480e-02,8.6367965683862735e-02,8.6331449873355837e-02,
+8.6293965572181719e-02,8.6255515028611285e-02,8.6216100496372405e-02,
+8.6175724234649920e-02,8.6134388508085635e-02,8.6092095586778328e-02,
+8.6048847746283741e-02,8.6004647267614587e-02,8.5959496437240546e-02,
+8.5913397547088266e-02,8.5866352894541365e-02,8.5818364782440426e-02,
+8.5769435519083004e-02,8.5719567418223619e-02,8.5668762799073761e-02,
+8.5617023986301888e-02,8.5564353310033425e-02,8.5510753105850767e-02,
+8.5456225714793277e-02,8.5400773483357284e-02,8.5344398763496088e-02,
+8.5287103912619955e-02,8.5228891293596121e-02,8.5169763274748789e-02,
+8.5109722229859130e-02,8.5048770538165286e-02,8.4986910584362363e-02,
+8.4924144758602438e-02,8.4860475456494555e-02,8.4795905079104728e-02,
+8.4730436032955936e-02,8.4664070730028129e-02,8.4596811587758225e-02,
+8.4528661029040109e-02,8.4459621482224634e-02,8.4389695381119623e-02,
+8.4318885164989865e-02,8.4247193278557120e-02,8.4174622172000113e-02,
+8.4101174300954540e-02,8.4026852126513063e-02,8.3951658115225314e-02,
+8.3875594739097892e-02,8.3798664475594364e-02,8.3720869807635268e-02,
+8.3642213223598105e-02,8.3562697217317350e-02,8.3482324288084442e-02,
+8.3401096940647790e-02,8.3319017685212771e-02,8.3236089037441729e-02,
+8.3152313518453980e-02,8.3067693654825803e-02,8.2982231978590448e-02,
+8.2895931027238134e-02,8.2808793343716047e-02,8.2720821476428341e-02,
+8.2632017979236139e-02,8.2542385411457531e-02,8.2451926337867576e-02,
+8.2360643328698302e-02,8.2268538959638704e-02,8.2175615811834746e-02,
+8.2081876471889359e-02,8.1987323531862444e-02,8.1891959589270868e-02,
+8.1795787247088469e-02,8.1698809113746051e-02,8.1601027803131387e-02,
+8.1502445934589218e-02,8.1403066132921253e-02,8.1302891028386171e-02,
+8.1201923256699615e-02,8.1100165459034201e-02,8.0997620282019511e-02,
+8.0894290377742095e-02,8.0790178403745472e-02,8.0685287023030128e-02,
+8.0579618904053518e-02,8.0473176720730066e-02,8.0365963152431164e-02,
+8.0257980883985169e-02,8.0149232605677412e-02,8.0039721013250187e-02,
+7.9929448807902759e-02,7.9818418696291360e-02,7.9706633390529191e-02,
+7.9594095608186421e-02,7.9480808072290188e-02,7.9366773511324595e-02,
+7.9251994659230718e-02,7.9136474255406597e-02,7.9020215044707243e-02,
+7.8903219777444633e-02,7.8785491209387715e-02,7.8667032101762402e-02,
+7.8547845221251578e-02,7.8427933339995093e-02,7.8307299235589767e-02,
+7.8185945691089387e-02,7.8063875495004709e-02,7.7941091441303456e-02,
+7.7817596329410321e-02,7.7693392964206964e-02,7.7568484156032014e-02,
+7.7442872720681066e-02,7.7316561479406687e-02,7.7189553258918409e-02,
+7.7061850891382733e-02,7.6933457214423129e-02,7.6804375071120035e-02,
+7.6674607310010856e-02,7.6544156785089967e-02,7.6413026355808711e-02,
+7.6281218887075397e-02,7.6148737249255305e-02,7.6015584318170681e-02,
+7.5881762975100742e-02,7.5747276106781669e-02,7.5612126605406615e-02,
+7.5476317368625701e-02,7.5339851299546012e-02,7.5202731306731607e-02,
+7.5064960304203510e-02,7.4926541211439712e-02,7.4787476953375176e-02,
+7.4647770460401830e-02,7.4507424668368571e-02,7.4366442518581266e-02,
+7.4224826957802748e-02,7.4082580938252818e-02,7.3939707417608247e-02,
+7.3796209359002773e-02,7.3652089731027104e-02,7.3507351507728913e-02,
+7.3361997668612844e-02,7.3216031198640508e-02,7.3069455088230484e-02,
+7.2922272333258320e-02,7.2774485935056532e-02,7.2626098900414604e-02,
+7.2477114241578988e-02,7.2327534976253105e-02,7.2177364127597343e-02,
+7.2026604724229060e-02,7.1875259800222580e-02,7.1723332395109196e-02,
+7.1570825553877171e-02,7.1417742326971734e-02,7.1264085770295083e-02,
+7.1109858945206383e-02,7.0955064918521771e-02,7.0799706762514347e-02,
+7.0643787554914184e-02,7.0487310378908319e-02,7.0330278323140760e-02,
+7.0172694481712483e-02,7.0014561954181431e-02,6.9855883845562516e-02,
+6.9696663266327619e-02,6.9536903332405586e-02,6.9376607165182236e-02,
+6.9215777891500352e-02,6.9054418643659687e-02,6.8892532559416964e-02,
+6.8730122781985870e-02,6.8567192460037063e-02,6.8403744747698170e-02,
+6.8239782804553784e-02,6.8075309795645467e-02,6.7910328891471750e-02,
+6.7744843267988131e-02,6.7578856106607077e-02,6.7412370594198023e-02,
+6.7245389923087373e-02,6.7077917291058498e-02,6.6909955901351736e-02,
+6.6741508962664398e-02,6.6572579689150757e-02,6.6403171300422059e-02,
+6.6233287021546516e-02,6.6062930083049309e-02,6.5892103720912587e-02,
+6.5720811176575467e-02,6.5549055696934033e-02,6.5376840534341341e-02,
+6.5204168946607410e-02,6.5031044196999233e-02,6.4857469554240765e-02,
+6.4683448292512935e-02,6.4508983691453636e-02,6.4334079036157732e-02,
+6.4158737617177053e-02,6.3982962730520399e-02,6.3806757677653536e-02,
+6.3630125765499201e-02,6.3453070306437098e-02,6.3275594618303899e-02,
+6.3097702024393243e-02,6.2919395853455740e-02,6.2740679439698965e-02,
+6.2561556122787465e-02,6.2382029247842752e-02,6.2202102165443307e-02,
+6.2021778231624580e-02,6.1841060807878989e-02,6.1659953261155920e-02,
+6.1478458963861726e-02,6.1296581293859731e-02,6.1114323634470225e-02,
+6.0931689374470466e-02,6.0748681908094682e-02,6.0565304635034067e-02,
+6.0381560960436786e-02,6.0197454294907971e-02,6.0012988054509719e-02,
+5.9828165660761101e-02,5.9642990540638152e-02,5.9457466126573877e-02,
+5.9271595856458248e-02,5.9085383173638206e-02,5.8898831526917661e-02,
+5.8711944370557489e-02,5.8524725164275537e-02,5.8337177373246618e-02,
+5.8149304468102514e-02,5.7961109924931975e-02,5.7772597225280720e-02,
+5.7583769856151434e-02,5.7394631310003774e-02,5.7205185084754362e-02,
+5.7015434683776789e-02,5.6825383615901615e-02,5.6635035395416367e-02,
+5.6444393542065541e-02,5.6253461581050601e-02,5.6062243043029980e-02,
+5.5870741464119078e-02,5.5678960385890264e-02,5.5486903355372874e-02,
+5.5294573925053214e-02,5.5101975652874557e-02,5.4909112102237145e-02,
+5.4715986841998188e-02,5.4522603446471862e-02,5.4328965495429316e-02,
+5.4135076574098662e-02,5.3940940273164983e-02,5.3746560188770331e-02,
+5.3551939922513725e-02,5.3357083081451151e-02,5.3161993278095565e-02,
+5.2966674130416891e-02,5.2771129261842020e-02,5.2575362301254813e-02,
+5.2379376882996098e-02,5.2183176646863672e-02,5.1986765238112298e-02,
+5.1790146307453711e-02,5.1593323511056610e-02,5.1396300510546666e-02,
+5.1199080973006517e-02,5.1001668570975767e-02,5.0804066982450991e-02,
+5.0606279890885730e-02,5.0408310985190496e-02,5.0210163959732768e-02,
+5.0011842514336990e-02,4.9813350354284580e-02,4.9614691190313920e-02,
+4.9415868738620361e-02,4.9216886720856223e-02,4.9017748864130795e-02,
+4.8818458901010331e-02,4.8619020569518057e-02,4.8419437613134164e-02,
+4.8219713780795814e-02,4.8019852826897136e-02,4.7819858511289226e-02,
+4.7619734599280150e-02,4.7419484861634942e-02,4.7219113074575603e-02,
+4.7018623019781103e-02,4.6818018484387380e-02,4.6617303260987342e-02,
+4.6416481147630861e-02,4.6215555947824782e-02,4.6014531470532916e-02,
+4.5813411530176040e-02,4.5612199946631904e-02,4.5410900545235222e-02,
+4.5209517156777679e-02,4.5008053617507926e-02,4.4806513769131584e-02,
+4.4604901458811241e-02,4.4403220539166455e-02,4.4201474868273749e-02,
+4.3999668309666617e-02,4.3797804732335521e-02,4.3595888010727890e-02,
+4.3393922024748122e-02,4.3191910659757582e-02,4.2989857806574605e-02,
+4.2787767361474494e-02,4.2585643226189518e-02,4.2383489307908917e-02,
+4.2181309519278898e-02,4.1979107778402636e-02,4.1776888008840274e-02,
+4.1574654139608924e-02,4.1372410105182666e-02,4.1170159845492549e-02,
+4.0967907305926587e-02,4.0765656437329767e-02,4.0563411196004040e-02,
+4.0361175543708327e-02,4.0158953447658519e-02,3.9956748880527471e-02,
+3.9754565820445009e-02,3.9552408250997928e-02,3.9350280161229989e-02,
+3.9148185545641923e-02,3.8946128404191427e-02,3.8744112742293169e-02,
+3.8542142570818783e-02,3.8340221906096872e-02,3.8138354769913008e-02,
+3.7936545189509729e-02,3.7734797197586545e-02,3.7533114832299930e-02,
+3.7331502137263328e-02,3.7129963161547153e-02,3.6928501959678783e-02,
+3.6727122591642569e-02,3.6525829122879827e-02,3.6324625624288842e-02,
+3.6123516172224868e-02,3.5922504848500125e-02,3.5721595740383805e-02,
+3.5520792940602064e-02,3.5320100547338029e-02,3.5119522664231795e-02,
+3.4919063400380423e-02,3.4718726870337946e-02,3.4518517194115361e-02,
+3.4318438497180637e-02,3.4118494910458708e-02,3.3918690570331478e-02,
+3.3719029618637819e-02,3.3519516202673572e-02,3.3320154475191543e-02,
+3.3120948594401511e-02,3.2921902723970220e-02,3.2723021033021382e-02,
+3.2524307696135679e-02,3.2325766893350760e-02,3.2127402810161243e-02,
+3.1929219637518713e-02,3.1731221571831725e-02,3.1533412814965800e-02,
+3.1335797574243429e-02,3.1138380062444071e-02,3.0941164497804152e-02,
+3.0744155104017068e-02,3.0547356110233181e-02,3.0350771751059824e-02,
+3.0154406266561296e-02,2.9958263902258864e-02,2.9762348909130765e-02,
+2.9566665543612203e-02,2.9371218067595350e-02,2.9176010748429348e-02,
+2.8981047858920306e-02,2.8786333677331299e-02,2.8591872487382375e-02,
+2.8397668578250546e-02,2.8203726244569793e-02,2.8010049786431068e-02,
+2.7816643509382288e-02,2.7623511724428340e-02,2.7430658748031078e-02,
+2.7238088902109325e-02,2.7045806514038873e-02,2.6853815916652479e-02,
+2.6662121448239873e-02,2.6470727452547749e-02,2.6279638278779771e-02,
+2.6088858281596572e-02,2.5898391821115752e-02,2.5708243262911878e-02,
+2.5518416978016489e-02,2.5328917342918089e-02,2.5139748739562151e-02,
+2.4950915555351116e-02,2.4762422183144395e-02,2.4574273021258364e-02,
+2.4386472473466370e-02,2.4199024948998726e-02,2.4011934862542716e-02,
+2.3825206634242591e-02,2.3638844689699567e-02,2.3452853459971834e-02,
+2.3267237381574546e-02,2.3082000896479826e-02,2.2897148452116767e-02,
+2.2712684501371427e-02,2.2528613502586836e-02,2.2344939919562989e-02,
+2.2161668221556852e-02,2.1978802883282356e-02,2.1796348384910402e-02,
+2.1614309212068861e-02,2.1432689855842568e-02,2.1251494812773331e-02,
+2.1070728584859921e-02,2.0890395679558083e-02,2.0710500609780524e-02,
+2.0531047893896925e-02,2.0352042055733932e-02,2.0173487624575159e-02,
+1.9995389135161190e-02,1.9817751127689576e-02,1.9640578147814836e-02,
+1.9463874746648457e-02,1.9287645480758897e-02,1.9111894912171579e-02,
+1.8936627608368894e-02,1.8761848142290205e-02,1.8587561092331839e-02,
+1.8413771042347093e-02,1.8240482581646233e-02,1.8067700304996492e-02,
+1.7895428812622072e-02,1.7723672710204141e-02,1.7552436608880839e-02,
+1.7381725125247272e-02,1.7211542881355513e-02,1.7041894504714605e-02,
+1.6872784628290560e-02,1.6704217890506357e-02,1.6536198935241941e-02,
+1.6368732411834230e-02,1.6201822975077107e-02,1.6035475285221423e-02,
+1.5869694007974999e-02,1.5704483814502623e-02,1.5539849381426052e-02,
+1.5375795390824010e-02,1.5212326530232190e-02,1.5049447492643253e-02,
+1.4887162976506829e-02,1.4725477685729516e-02,1.4564396329674878e-02,
+1.4403923623163450e-02,1.4244064286472735e-02,1.4084823045337203e-02,
+1.3926204630948291e-02,1.3768213779954408e-02,1.3610855234460928e-02,
+1.3454133742030194e-02,1.3298054055681519e-02,1.3142620933891180e-02,
+1.2987839140592428e-02,1.2833713445175476e-02,1.2680248622487511e-02,
+1.2527449452832684e-02,1.2375320721972116e-02,1.2223867221123896e-02,
+1.2073093746963082e-02,1.1923005101621698e-02,1.1773606092688738e-02,
+1.1624901533210164e-02,1.1476896241688905e-02,1.1329595042084861e-02,
+1.1183002763814898e-02,1.1037124241752849e-02,1.0891964316229519e-02,
+1.0747527833032677e-02,1.0603819643407064e-02,1.0460844604054387e-02,
+1.0318607577133321e-02,1.0177113430259510e-02,1.0036367036505567e-02,
+9.8963732744010713e-03,9.7571370279325720e-03,9.6186631865435857e-03,
+9.4809566451345972e-03,9.3440223040630599e-03,9.2078650691433950e-03,
+9.0724898516469921e-03,8.9379015683022089e-03,8.8041051412943716e-03,
+8.6711054982657743e-03,8.5389075723156793e-03,8.4075163020003174e-03,
+8.2769366313328874e-03,8.1471735097835563e-03,8.0182318922794593e-03,
+7.8901167392047000e-03,7.7628330164003501e-03,7.6363856951644493e-03,
+7.5107797522520059e-03,7.3860201698749961e-03,7.2621119357023645e-03,
+7.1390600428600237e-03,7.0168694899308548e-03,6.8955452809547069e-03,
+6.7750924254283973e-03,6.6555159383057116e-03,6.5368208399974037e-03,
+6.4190121563711955e-03,6.3020949187517772e-03,6.1860741639208072e-03,
+6.0709549341169122e-03,5.9567422770356870e-03,5.8434412458296947e-03,
+5.7310568991084665e-03,5.6195943009385019e-03,5.5090585208432685e-03,
+5.3994546338032023e-03,5.2907877202557074e-03,5.1830628660951561e-03,
+5.0762851626728889e-03,4.9704597067972145e-03,4.8655916007334099e-03,
+4.7616859522037203e-03,4.6587478743873589e-03,4.5567824859205075e-03,
+4.4557949108963157e-03,4.3557902788649017e-03,4.2567737248333515e-03,
+4.1587503892657196e-03,4.0617254180830287e-03,3.9657039626632695e-03,
+3.8706911798414012e-03,3.7766922319093510e-03,3.6837122866160144e-03,
+3.5917565171672550e-03,3.5008301022259047e-03,3.4109382259117638e-03,
+3.3220860778016004e-03,3.2342788529291511e-03,3.1475217517851206e-03,
+3.0618199803171819e-03,2.9771787499299762e-03,2.8936032774851128e-03,
+2.8110987853011693e-03,2.7296705011536915e-03,2.6493236582751933e-03,
+2.5700634953551571e-03,2.4918952565400332e-03,2.4148241914332402e-03,
+2.3388555550951651e-03,2.2639946080431628e-03,2.1902466162515566e-03,
+2.1176168511516380e-03,2.0461105896316667e-03,1.9757331140368706e-03,
+1.9064897121694457e-03,1.8383856772885565e-03,1.7714263081103354e-03,
+1.7056169088078832e-03,1.6409627890112688e-03,1.5774692638075294e-03,
+1.5151416537406703e-03,1.4539852848116652e-03,1.3940054884784558e-03,
+1.3352076016559522e-03,1.2775969667160325e-03,1.2211789314875432e-03,
+1.1659588492562989e-03,1.1119420787650824e-03,1.0591339842136449e-03,
+1.0075399352587056e-03,9.5716530701395186e-04,9.0801548005003951e-04,
+8.6009584039459241e-04,8.1341177953220267e-04,7.6796869440443061e-04,
+7.2377198740980475e-04,6.8082706640382185e-04,6.3913934469894684e-04,
+5.9871424106461291e-04,5.5955717972722141e-04,5.2167359037014194e-04,
+4.8506890813371228e-04,4.4974857361523846e-04,4.1571803286899467e-04,
+3.8298273740622335e-04,3.5154814419513514e-04,3.2141971566090888e-04,
+2.9260291968569163e-04,2.6510322960859867e-04,2.3892612422571347e-04,
+2.1407708779008772e-04,1.9056161001174132e-04,1.6838518605766239e-04,
+1.4755331655180726e-04,1.2807150757510044e-04,1.0994527066543469e-04,
+9.3180122817670963e-05,7.7781586483638421e-05,6.3755189572134441e-05,
+5.1106465448924610e-05,3.9840952936742724e-05,2.9964196315290792e-05,
+2.1481745321239032e-05,1.4399155148225873e-05,8.7219864468579544e-06,
+4.4558053247101270e-06,1.6061833463254516e-06,1.7869753321519966e-07,
+1.7893036385885353e-07,1.6124697737041060e-06,4.4849091551668607e-06,
+8.8018473576312317e-06,1.4568888687449544e-05,2.1791642907942332e-05,
+3.0475725239398344e-05,4.0626756359074534e-05,5.2250362401196071e-05,
+6.5352174956956333e-05,7.9937831074516907e-05,9.6012973259007595e-05,
+1.1358324947252640e-04,1.3265431313413956e-04,1.5323182311988148e-04,
+1.7532144376275483e-04,1.9892884485273044e-04,2.2405970163674738e-04,
+2.5071969481871292e-04,2.7891451055950256e-04,3.0864984047695998e-04,
+3.3993138164589709e-04,3.7276483659809401e-04,4.0715591332229906e-04,
+4.4311032526422878e-04,4.8063379132656792e-04,5.1973203586896943e-04,
+5.6041078870805450e-04,6.0267578511741249e-04,6.4653276582760100e-04,
+6.9198747702614583e-04,7.3904567035754098e-04,7.8771310292324870e-04,
+8.3799553728169940e-04,8.8989874144829173e-04,9.4342848889539255e-04,
+9.9859055855233692e-04,1.0553907348054281e-03,1.1138348074979376e-03,
+1.1739285719301051e-03,1.2356778288591386e-03,1.2990883844992140e-03,
+1.3641660505214759e-03,1.4309166440540366e-03,1.4993459876819770e-03,
+1.5694599094473460e-03,1.6412642428491608e-03,1.7147648268434068e-03,
+1.7899675058430375e-03,1.8668781297179748e-03,1.9455025537951087e-03,
+2.0258466388582974e-03,2.1079162511483673e-03,2.1917172623631132e-03,
+2.2772555496572977e-03,2.3645369956426521e-03,2.4535674883878755e-03,
+2.5443529214186356e-03,2.6368991937175679e-03,2.7312122097242764e-03,
+2.8272978793353332e-03,2.9251621179042786e-03,3.0248108462416212e-03,
+3.1262499906148378e-03,3.2294854827483732e-03,3.3345232598236407e-03,
+3.4413692644790217e-03,3.5500294448098657e-03,3.6605097543684906e-03,
+3.7728161521641823e-03,3.8869546026631951e-03,4.0029310757887515e-03,
+4.1207515469210421e-03,4.2404219968972257e-03,4.3619484120114294e-03,
+4.4853367840147484e-03,4.6105931101152464e-03,4.7377233929779550e-03,
+4.8667336407248740e-03,4.9976298669349717e-03,5.1304180906441843e-03,
+5.2651043363454164e-03,5.4016946339885408e-03,5.5401950189803983e-03,
+5.6806115321847983e-03,5.8229502199225180e-03,5.9672171339713032e-03,
+6.1134183315658674e-03,6.2615598753978929e-03,6.4116478336160299e-03,
+6.5636882798258966e-03,6.7176872930900799e-03,6.8736509579281346e-03,
+7.0315853643165838e-03,7.1914966076889186e-03,7.3533907889355987e-03,
+7.5172740144040517e-03,7.6831523958986736e-03,7.8510320506808284e-03,
+8.0209191014688486e-03,8.1928196764380345e-03,8.3667399092206551e-03,
+8.5426859389059473e-03,8.7206639100401162e-03,8.9006799726263353e-03,
+9.0827402821247460e-03,9.2668509994524584e-03,9.4530182909835503e-03,
+9.6412483285490680e-03,9.8315472894370259e-03,1.0023921356392407e-02,
+1.0218376717617161e-02,1.0414919566770209e-02,1.0613556102967436e-02,
+1.0814292530781699e-02,1.1017135060242822e-02,1.1222089906837596e-02,
+1.1429163291509781e-02,1.1638361440660105e-02,1.1849690586146266e-02,
+1.2063156965282928e-02,1.2278766820841724e-02,1.2496526401051256e-02,
+1.2716441959597091e-02,1.2938519755621769e-02,1.3162766053724795e-02,
+1.3389187123962643e-02,1.3617789241848755e-02,1.3848578688353541e-02,
+1.4081561749904381e-02,1.4316744718385621e-02,1.4554133891138576e-02,
+1.4793735570961530e-02,1.5035556066109734e-02,1.5279601690295408e-02,
+1.5525878762687739e-02,1.5774393607912884e-02,1.6025152556053968e-02,
+1.6278161942651082e-02,1.6533428108701287e-02,1.6790957400658613e-02,
+1.7050756170434056e-02,1.7312830775395582e-02,1.7577187578368125e-02,
+1.7843832947633587e-02,1.8112773256930836e-02,1.8384014885455713e-02,
+1.8657564217861022e-02,1.8933427644256540e-02,1.9211611560209008e-02,
+1.9492122366742137e-02,1.9774966470336608e-02,2.0060150282930067e-02,
+2.0347680221917130e-02,2.0637562710149382e-02,2.0929804175935374e-02,
+2.1224411053040626e-02,2.1521389780687628e-02,2.1820746803555835e-02,
+2.2122488571781673e-02,2.2426621540958536e-02,2.2733152172136784e-02,
+2.3042086931823746e-02,2.3353432291983722e-02,2.3667194730037977e-02,
+2.3983380728864745e-02,2.4301996776799228e-02,2.4623049367633598e-02,
+2.4946545000616993e-02,2.5272490180455520e-02,2.5600891417312255e-02,
+2.5931755226807240e-02,2.6265088130017489e-02,2.6600896653476980e-02,
+2.6939187329176661e-02,2.7279966694564450e-02,2.7623241292545231e-02,
+2.7969017671480856e-02,2.8317302385190146e-02,2.8668101992948891e-02,
+2.9021423059489848e-02,2.9377272155002743e-02,2.9735655855134269e-02,
+3.0096580740988088e-02,3.0460053399124831e-02,3.0826080421562096e-02,
+3.1194668405774451e-02,3.1565823954693428e-02,3.1939553676707533e-02,
+3.2315864185662235e-02,3.2694762100859975e-02,3.3076254047060161e-02,
+3.3460346654479167e-02,3.3847046558790339e-02,3.4236360401123989e-02,
+3.4628294828067396e-02,3.5022856491664811e-02,3.5420052049417450e-02,
+3.5819888164283498e-02,3.6222371504678108e-02,3.6627508744473403e-02,
+3.7035306562998471e-02,3.7445771645039372e-02,3.7858910680839131e-02,
+3.8274730366097742e-02,3.8693237401972169e-02,3.9114438495076342e-02,
+3.9538340357481161e-02,3.9964949706714492e-02,4.0394273265761171e-02,
+4.0826317763063003e-02,4.1261089932518757e-02,4.1698596513484176e-02,
+4.2138844250771967e-02,4.2581839894651807e-02,4.3027590200850341e-02,
+4.3476101930551181e-02,4.3927381850394909e-02,4.4381436732479074e-02,
+4.4838273354358194e-02,4.5297898499043754e-02,4.5760318955004209e-02,
+4.6225541516164981e-02,4.6693572981908460e-02,4.7164420157074005e-02,
+4.7638089851957943e-02,4.8114588882313569e-02,4.8593924069351146e-02,
+4.9076102239737907e-02,4.9561130225598049e-02,5.0049014864512742e-02,
+5.0539762999520121e-02,5.1033381479115292e-02,5.1529877157250326e-02,
+5.2029256893334264e-02,5.2531527552233115e-02,5.3036696004269857e-02,
+5.3544769125224434e-02,5.4055753796333761e-02,5.4569656904291719e-02,
+5.5086485341249158e-02,5.5606246004813897e-02,5.6128945798050722e-02,
+5.6654591629481388e-02,5.7183190413084617e-02,5.7714749068296101e-02,
+5.8249274520008498e-02,5.8786773698571437e-02,5.9327253539791514e-02,
+5.9870720984932291e-02,6.0417182980714301e-02,6.0966646479315045e-02,
+6.1519118438368992e-02,6.2074605820967577e-02,6.2633115595659206e-02,
+6.3194654736449252e-02,6.3759230222800056e-02,6.4326849039630929e-02,
+6.4897518177318148e-02,6.5471244631694958e-02,6.6048035404051575e-02,
+6.6627897501135180e-02,6.7210837935149925e-02,6.7796863723756928e-02,
+6.8385981890074277e-02,6.8978199462677026e-02,6.9573523475597199e-02,
+7.0171960968323788e-02,7.0773518985802752e-02,7.1378204578437021e-02,
+7.1986024802086490e-02,7.2596986718068024e-02,7.3211097393155455e-02,
+7.3828363899579585e-02,7.4448793315028183e-02,7.5072392722645986e-02,
+7.5699169211034700e-02,7.6329129874252999e-02,7.6962281811816524e-02,
+7.7598632128697886e-02,7.8238187935326664e-02,7.8880956347589404e-02,
+7.9526944486829620e-02,8.0176159479847797e-02,8.0828608458901385e-02,
+8.1484298561704804e-02,8.2143236931429442e-02,8.2805430716703654e-02,
+8.3470887071612765e-02,8.4139613155699067e-02,8.4811616133961820e-02,
+8.5486903176857254e-02,8.6165481460298565e-02,8.6847358165655919e-02,
+8.7532540479756449e-02,8.8221035594884256e-02,8.8912850708780411e-02,
+8.9607993024642951e-02,9.0306469751126883e-02,9.1008288102344181e-02,
+9.1713455297863788e-02,9.2421978562711615e-02,9.3133865127370541e-02,
+9.3849122227780413e-02,9.4567757105338046e-02,9.5289777006897225e-02,
+9.6015189184768701e-02,9.6744000896720195e-02,9.7476219405976394e-02,
+9.8211851981218956e-02,9.8950905896586505e-02,9.9693388431674634e-02,
+1.0043930687153590e-01,1.0118866850667985e-01,1.0194148063307296e-01,
+1.0269775055213870e-01,1.0345748557075751e-01,1.0422069300126680e-01,
+1.0498738016146092e-01,1.0575755437459122e-01,1.0653122296936601e-01,
+1.0730839327995056e-01,1.0808907264596712e-01,1.0887326841249489e-01,
+1.0966098793007006e-01,1.1045223855468578e-01,1.1124702764779215e-01,
+1.1204536257629627e-01,1.1284725071256219e-01,1.1365269943441092e-01,
+1.1446171612512046e-01,1.1527430817342577e-01,1.1609048297351876e-01,
+1.1691024792504834e-01,1.1773361043312036e-01,1.1856057790829766e-01,
+1.1939115776660003e-01,1.2022535742950424e-01,1.2106318432394403e-01,
+1.2190464588231009e-01,1.2274974954245010e-01,1.2359850274766870e-01,
+1.2445091294672750e-01,1.2530698759384507e-01,1.2616673414869695e-01,
+1.2703016007641565e-01,1.2789727284759067e-01,1.2876807993826844e-01,
+1.2964258882995239e-01,1.3052080700960289e-01,1.3140274196963730e-01,
+1.3228840120792995e-01,1.3317779222781212e-01,1.3407092253807207e-01,
+1.3496779965295502e-01,1.3586843109216318e-01,1.3677282438085570e-01,
+1.3768098704964871e-01,1.3859292663461531e-01,1.3950865067728557e-01,
+1.4042816672464653e-01,1.4135148232914219e-01,1.4227860504867351e-01,
+1.4320954244659845e-01,1.4414430209173190e-01,1.4508289155834575e-01,
+1.4602531842616884e-01,1.4697159028038698e-01,1.4792171471164295e-01,
+1.4887569931603650e-01,1.4983355169512436e-01,1.5079527945592019e-01,
+1.5176089021089467e-01,1.5273039157797541e-01,1.5370379118054700e-01,
+1.5468109664745100e-01,1.5566231561298594e-01,1.5664745571690730e-01,
+1.5763652460442756e-01,1.5862952992621615e-01,1.5962647933839946e-01,
+1.6062738050256087e-01,1.6163224108574070e-01,1.6264106876043627e-01,
+1.6365387120460184e-01,1.6467065610164866e-01,1.6569143114044493e-01,
+1.6671620401531584e-01,1.6774498242604352e-01,1.6877777407786709e-01,
+1.6981458668148264e-01,1.7085542795304320e-01,1.7190030561415881e-01,
+1.7294922739189644e-01,1.7400220101878006e-01,1.7505923423279057e-01,
+1.7612033477736588e-01,1.7718551040140085e-01,1.7825476885924729e-01,
+1.7932811791071401e-01,1.8040556532106677e-01,1.8148711886102831e-01,
+1.8257278630677831e-01,1.8366257543995346e-01,1.8475649404764738e-01,
+1.8585454992241068e-01,1.8695675086225094e-01,1.8806310467063270e-01,
+1.8917361915647746e-01,1.9028830213416370e-01,1.9140716142352687e-01,
+1.9253020484985939e-01,1.9365744024391063e-01,1.9478887544188694e-01,
+1.9592451828545165e-01,1.9706437662172505e-01,1.9820845830328437e-01,
+1.9935677118816386e-01,2.0050932313985470e-01,2.0166612202730505e-01,
+2.0282717572492004e-01,2.0399249211256176e-01,2.0516207907554929e-01,
+2.0633594450465864e-01,2.0751409629612283e-01,2.0869654235163182e-01,
+2.0988329057833255e-01,2.1107434888882892e-01,2.1226972520118181e-01,
+2.1346942743890907e-01,2.1467346353098549e-01,2.1588184141184286e-01,
+2.1709456902136992e-01,2.1831165430491239e-01,2.1953310521327296e-01,
+2.2075892970271127e-01,2.2198913573494394e-01,2.2322373127714457e-01,
+2.2446272430194369e-01,2.2570612278742885e-01,2.2695393471714453e-01,
+2.2820616808009220e-01,2.2946283087073027e-01,2.3072393108897415e-01,
+2.3198947674019621e-01,2.3325947583522577e-01,2.3453393639034914e-01,
+2.3581286642730959e-01,2.3709627397330735e-01,2.3838416706099963e-01,
+2.3967655372850061e-01,2.4097344201938142e-01,2.4227483998267019e-01,
+2.4358075567285198e-01,2.4489119714986884e-01,2.4620617247911980e-01,
+2.4752568973146083e-01,2.4884975698320488e-01,2.5017838231612188e-01,
+2.5151157381743872e-01,2.5284933957983924e-01,2.5419168770146428e-01,
+2.5553862628591162e-01,2.5689016344223603e-01,2.5824630728494924e-01,
+2.5960706593401994e-01,2.6097244751487381e-01,2.6234246015839346e-01,
+2.6371711200091852e-01,2.6509641118424554e-01,2.6648036585562807e-01,
+2.6786898416777660e-01,2.6926227427885863e-01,2.7066024435249858e-01,
+2.7206290255777787e-01,2.7347025706923489e-01,2.7488231606686497e-01,
+2.7629908773612044e-01,2.7772058026791058e-01,2.7914680185860163e-01,
+2.8057776071001683e-01,2.8201346502943636e-01,2.8345392302959738e-01,
+2.8489914292869400e-01,2.8634913295037734e-01,2.8780390132375544e-01,
+2.8926345628339334e-01,2.9072780606931303e-01,2.9219695892699349e-01,
+2.9367092310737064e-01,2.9514970686683739e-01,2.9663331846724361e-01,
+2.9812176617589614e-01,2.9961505826555879e-01,3.0111320301445232e-01,
+3.0261620870625450e-01,3.0412408363010002e-01,3.0563683608058057e-01,
+3.0715447435774479e-01,3.0867700676709831e-01,3.1020444161960370e-01,
+3.1173678723168052e-01,3.1327405192520530e-01,3.1481624402751152e-01,
+3.1636337187138963e-01,3.1791544379508707e-01,3.1947246814230823e-01,
+3.2103445326221447e-01,3.2260140750942412e-01,3.2417333924401248e-01,
+3.2575025683151182e-01,3.2733216864291137e-01,3.2891908305465734e-01,
+3.3051100844865289e-01,3.3210795321225817e-01,3.3370992573829028e-01,
+3.3531693442502331e-01,3.3692898767618829e-01,3.3854609390097323e-01,
+3.4016826151402313e-01,3.4179549893543992e-01,3.4342781459078253e-01,
+3.4506521691106684e-01,3.4670771433276570e-01,3.4835531529780894e-01,
+3.5000802825358335e-01,3.5166586165293268e-01,3.5332882395415766e-01,
+3.5499692362101598e-01,3.5667016912272231e-01,3.5834856893394829e-01,
+3.6003213153482250e-01,3.6172086541093051e-01,3.6341477905331487e-01,
+3.6511388095847508e-01,3.6681817962836760e-01,3.6852768357040588e-01,
+3.7024240129746033e-01,3.7196234132785833e-01,3.7368751218538421e-01,
+3.7541792239927929e-01,3.7715358050424186e-01,3.7889449504042716e-01,
+3.8064067455344741e-01,3.8239212759437180e-01,3.8414886271972648e-01,
+3.8591088849149457e-01,3.8767821347711617e-01,3.8945084624948834e-01,
+3.9122879538696509e-01,3.9301206947335743e-01,3.9480067709793332e-01,
+3.9659462685541769e-01,3.9839392734599244e-01,4.0019858717529644e-01,
+4.0200861495442552e-01,4.0382401929993250e-01,4.0564480883382714e-01,
+4.0747099218357619e-01,4.0930257798210334e-01,4.1113957486778929e-01,
+4.1298199148447168e-01,4.1482983648144511e-01,4.1668311851346118e-01,
+4.1854184624072843e-01,4.2040602832891238e-01,4.2227567344913552e-01,
+4.2415079027797731e-01,4.2603138749747416e-01,4.2791747379511946e-01,
+4.2980905786386359e-01,4.3170614840211385e-01,4.3360875411373456e-01,
+4.3551688370804698e-01,4.3743054589982933e-01,4.3934974940931681e-01,
+4.4127450296220161e-01,4.4320481528963285e-01,4.4514069512821663e-01,
+4.4708215122001604e-01,4.4902919231255112e-01,4.5098182715879886e-01,
+4.5294006451719326e-01,4.5490391315162526e-01,4.5687338183144277e-01,
+4.5884847933145068e-01,4.6082921443191083e-01,4.6281559591854204e-01,
+4.6480763258252011e-01,4.6680533322047779e-01,4.6880870663450480e-01,
+4.7081776163214784e-01,4.7283250702641055e-01,4.7485295163575358e-01,
+4.7687910428409452e-01,4.7891097380080794e-01,4.8094856902072536e-01,
+4.8299189878413529e-01,4.8504097193678319e-01,4.8709579732987152e-01,
+4.8915638382005966e-01,4.9122274026946400e-01,4.9329487554565787e-01,
+4.9537279852167160e-01,4.9745651807599245e-01,4.9954604309256467e-01,
+5.0164138246078949e-01,5.0374254507552507e-01,5.0584953983708658e-01,
+5.0796237565124613e-01,5.1008106142923282e-01,5.1220560608773269e-01,
+5.1433601854888877e-01,5.1647230774030106e-01,5.1861448259502652e-01,
+5.2076255205157906e-01,5.2291652505392960e-01,5.2507641055150600e-01,
+5.2724221749919309e-01,5.2941395485733267e-01,5.3159163159172351e-01,
+5.3377525667362136e-01,5.3596483907973891e-01,5.3816038779224584e-01,
+5.4036191179876880e-01,5.4256942009239140e-01,5.4478292167165421e-01,
+5.4700242554055478e-01,5.4922794070854764e-01,5.5145947619054425e-01,
+5.5369704100691308e-01,5.5594064418347955e-01,5.5819029475152604e-01,
+5.6044600174779191e-01,5.6270777421447349e-01,5.6497562119922407e-01,
+5.6724955175515390e-01,5.6952957494083023e-01,5.7181569982027725e-01,
+5.7410793546297612e-01,5.7640629094386497e-01,5.7871077534333892e-01,
+5.8102139774725003e-01,5.8333816724690735e-01,5.8566109293907687e-01,
+5.8799018392598157e-01,5.9032544931530140e-01,5.9266689822017327e-01,
+5.9501453975919105e-01,5.9736838305640561e-01,5.9972843724132474e-01,
+6.0209471144891324e-01,6.0446721481959287e-01,6.0684595649924233e-01,
+6.0923094563919733e-01,6.1162219139625051e-01,6.1401970293265151e-01,
+6.1642348941610692e-01,6.1883356001978029e-01,6.2124992392229217e-01,
+6.2367259030772004e-01,6.2610156836559838e-01,6.2853686729091862e-01,
+6.3097849628412916e-01,6.3342646455113538e-01,6.3588078130329961e-01,
+6.3834145575744117e-01,6.4080849713583632e-01,6.4328191466621831e-01,
+6.4576171758177736e-01,6.4824791512116064e-01,6.5074051652847231e-01,
+6.5323953105327348e-01,6.5574496795058224e-01,6.5825683648087363e-01,
+6.6077514591007969e-01,6.6329990550958939e-01,6.6583112455624871e-01,
+6.6836881233236056e-01,6.7091297812568484e-01,6.7346363122943842e-01,
+6.7602078094229512e-01,6.7858443656838574e-01,6.8115460741729805e-01,
+6.8373130280407679e-01,6.8631453204922366e-01,6.8890430447869733e-01,
+6.9150062942391344e-01,6.9410351622174460e-01,6.9671297421452039e-01,
+6.9932901275002735e-01,7.0195164118150899e-01,7.0458086886766580e-01,
+7.0721670517265522e-01,7.0985915946609168e-01,7.1250824112304656e-01,
+7.1516395952404821e-01,7.1782632405508195e-01,7.2049534410759009e-01,
+7.2317102907847186e-01,7.2585338837008351e-01,7.2854243139023822e-01,
+7.3123816755220616e-01,7.3394060627471447e-01,7.3664975698194723e-01,
+7.3936562910354553e-01,7.4208823207460739e-01,7.4481757533568782e-01,
+7.4755366833279879e-01,7.5029652051740925e-01,7.5304614134644510e-01,
+7.5580254028228921e-01,7.5856572679278145e-01,7.6133571035121861e-01,
+7.6411250043635448e-01,7.6689610653239981e-01,7.6968653812902232e-01,
+7.7248380472134670e-01,7.7528791580995460e-01,7.7809888090088464e-01,
+7.8091670950563241e-01,7.8374141114115048e-01,7.8657299532984837e-01,
+7.8941147159959257e-01,7.9225684948370656e-01,7.9510913852097076e-01,
+7.9796834825562257e-01,8.0083448823735637e-01,8.0370756802132348e-01,
+8.0658759716813222e-01,8.0947458524384786e-01,8.1236854181999263e-01,
+8.1526947647354575e-01,8.1817739878694340e-01,8.2109231834807872e-01,
+8.2401424475030183e-01,8.2694318759241980e-01,8.2987915647869670e-01,
+8.3282216101885354e-01,8.3577221082806830e-01,8.3872931552697594e-01,
+8.4169348474166839e-01,8.4466472810369453e-01,8.4764305525006023e-01,
+8.5062847582322831e-01,8.5362099947111858e-01,8.5662063584710779e-01,
+8.5962739461002968e-01,8.6264128542417495e-01,8.6566231795929127e-01,
+8.6869050189058328e-01,8.7172584689871258e-01,8.7476836266979774e-01,
+8.7781805889541431e-01,8.8087494527259480e-01,8.8393903150382869e-01,
+8.8701032729706242e-01,8.9008884236569941e-01,8.9317458642860004e-01,
+8.9626756921008166e-01,8.9936780043991860e-01,9.0247528985334213e-01,
+9.0559004719104053e-01,9.0871208219915900e-01,9.1184140462929975e-01,
+9.1497802423852193e-01,9.1812195078934167e-01,9.2127319404973207e-01,
+9.2443176379312320e-01,9.2759766979840208e-01,9.3077092184991272e-01,
+9.3395152973745610e-01,9.3713950325629014e-01,9.4033485220712976e-01,
+9.4353758639614682e-01,9.4674771563497018e-01,9.4996524974068564e-01,
+9.5319019853583598e-01,9.5642257184842094e-01,9.5966237951189726e-01,
+9.6290963136517860e-01,9.6616433725263562e-01,9.6942650702409594e-01,
+9.7269615053484415e-01,9.7597327764562181e-01,9.7925789822262743e-01,
+9.8255002213751652e-01,9.8584965926740153e-01,9.8915681949485190e-01,
+9.9247151270789402e-01,9.9579374880001126e-01,9.9912353767014395e-01,
+1.0024608892226894e+00,1.0058058133675019e+00,1.0091583200198926e+00,
+1.0125184191006298e+00,1.0158861205359386e+00,1.0192614342575013e+00,
+1.0226443702024568e+00,1.0260349383134013e+00,1.0294331485383879e+00,
+1.0328390108309264e+00,1.0362525351499841e+00,1.0396737314599847e+00,
+1.0431026097308091e+00,1.0465391799377954e+00,1.0499834520617384e+00,
+1.0534354360888898e+00,1.0568951420109585e+00,1.0603625798251102e+00,
+1.0638377595339676e+00,1.0673206911456106e+00,1.0708113846735756e+00,
+1.0743098501368564e+00,1.0778160975599036e+00,1.0813301369726247e+00,
+1.0848519784103843e+00,1.0883816319140038e+00,1.0919191075297618e+00,
+1.0954644153093938e+00,1.0990175653100920e+00,1.1025785675945059e+00,
+1.1061474322307419e+00,1.1097241692923632e+00,1.1133087888583901e+00,
+1.1169013010133000e+00,1.1205017158470270e+00,1.1241100434549622e+00,
+1.1277262939379540e+00,1.1313504774023073e+00,1.1349826039597843e+00,
+1.1386226837276041e+00,1.1422707268284427e+00,1.1459267433904330e+00,
+1.1495907435471651e+00,1.1532627374376858e+00,1.1569427352064992e+00,
+1.1606307470035659e+00,1.1643267829843040e+00,1.1680308533095882e+00,
+1.1717429681457503e+00,1.1754631376645790e+00,1.1791913720433200e+00,
+1.1829276814646761e+00,1.1866720761168068e+00,1.1904245661933288e+00,
+1.1941851618933157e+00,1.1979538734212980e+00,1.2017307109872633e+00,
+1.2055156848066559e+00,1.2093088051003775e+00,1.2131100820947864e+00,
+1.2169195260216981e+00,1.2207371471183848e+00,1.2245629556275759e+00,
+1.2283969617974577e+00,1.2322391758816735e+00,1.2360896081393236e+00,
+1.2399482688349650e+00,1.2438151682386120e+00,1.2476903166257358e+00,
+1.2515737242772644e+00,1.2554654014795830e+00,1.2593653585245335e+00,
+1.2632736057094149e+00,1.2671901533369834e+00,1.2711150117154517e+00,
+1.2750481911584899e+00,1.2789897019852248e+00,1.2829395545202402e+00,
+1.2868977590935771e+00,1.2908643260407331e+00,1.2948392657026631e+00,
+1.2988225884257787e+00,1.3028143045619487e+00,1.3068144244684987e+00,
+1.3108229585082114e+00,1.3148399170493263e+00,1.3188653104655401e+00,
+1.3228991491360063e+00,1.3269414434453353e+00,1.3309922037835946e+00,
+1.3350514405463088e+00,1.3391191641344591e+00,1.3431953849544840e+00,
+1.3472801134182788e+00,1.3513733599431959e+00,1.3554751349520444e+00,
+1.3595854488730907e+00,1.3637043121400581e+00,1.3678317351921265e+00,
+1.3719677284739333e+00,1.3761123024355726e+00,1.3802654675325954e+00,
+1.3844272342260098e+00,1.3885976129822808e+00,1.3927766142733304e+00,
+1.3969642485765377e+00,1.4011605263747384e+00,1.4053654581562256e+00,
+1.4095790544147491e+00,1.4138013256495157e+00,1.4180322823651892e+00,
+1.4222719350718904e+00,1.4265202942851971e+00,1.4307773705261440e+00,
+1.4350431743212226e+00,1.4393177162023818e+00,1.4436010067070271e+00,
+1.4478930563780210e+00,1.4521938757636832e+00,1.4565034754177901e+00,
+1.4608218658995753e+00,1.4651490577737292e+00,1.4694850616103992e+00,
+1.4738298879851897e+00,1.4781835474791620e+00,1.4825460506788346e+00,
+1.4869174081761827e+00,1.4912976305686385e+00,1.4956867284590913e+00,
+1.5000847124558874e+00,1.5044915931728298e+00,1.5089073812291787e+00,
+1.5133320872496512e+00,1.5177657218644214e+00,1.5222082957091203e+00,
+1.5266598194248360e+00,1.5311203036581134e+00,1.5355897590609544e+00,
+1.5400681962908180e+00,1.5445556260106201e+00,1.5490520588887335e+00,
+1.5535575055989881e+00,1.5580719768206706e+00,1.5625954832385247e+00,
+1.5671280355427513e+00,1.5716696444290079e+00,1.5762203205984093e+00,
+1.5807800747575271e+00,1.5853489176183899e+00,1.5899268598984833e+00,
+1.5945139123207497e+00,1.5991100856135887e+00,1.6037153905108568e+00,
+1.6083298377518673e+00,1.6129534380813908e+00,1.6175862022496545e+00,
+1.6222281410123429e+00,1.6268792651305972e+00,1.6315395853710157e+00,
+1.6362091125056537e+00,1.6408878573120234e+00,1.6455758305730939e+00,
+1.6502730430772914e+00,1.6549795056184990e+00,1.6596952289960569e+00,
+1.6644202240147621e+00,1.6691545014848685e+00,1.6738980722220873e+00,
+1.6786509470475863e+00,1.6834131367879905e+00,1.6881846522753818e+00,
+1.6929655043472991e+00,1.6977557038467381e+00,1.7025552616221518e+00,
+1.7073641885274498e+00,1.7121824954219989e+00,1.7170101931706228e+00,
+1.7218472926436021e+00,1.7266938047166747e+00,1.7315497402710349e+00,
+1.7364151101933345e+00,1.7412899253756819e+00,1.7461741967156428e+00,
+1.7510679351162395e+00,1.7559711514859515e+00,1.7608838567387153e+00,
+1.7658060617939242e+00,1.7707377775764286e+00,1.7756790150165358e+00,
+1.7806297850500101e+00,1.7855900986180728e+00,1.7905599666674021e+00,
+1.7955394001501332e+00,1.8005284100238583e+00,1.8055270072516265e+00,
+1.8105352028019439e+00,1.8155530076487736e+00,1.8205804327715356e+00,
+1.8256174891551069e+00,1.8306641877898215e+00,1.8357205396714704e+00,
+1.8407865558013015e+00,1.8458622471860195e+00,1.8509476248377865e+00,
+1.8560426997742212e+00,1.8611474830183994e+00,1.8662619855988538e+00,
+1.8713862185495742e+00,1.8765201929100073e+00,1.8816639197250566e+00,
+1.8868174100450830e+00,1.8919806749259038e+00,1.8971537254287938e+00,
+1.9023365726204844e+00,1.9075292275731641e+00,1.9127317013644785e+00,
+1.9179440050775298e+00,1.9231661498008776e+00,1.9283981466285383e+00,
+1.9336400066599850e+00,1.9388917410001483e+00,1.9441533607594152e+00,
+1.9494248770536302e+00,1.9547063010040944e+00,1.9599976437375659e+00,
+1.9652989163862600e+00,1.9706101300878487e+00,1.9759312959854611e+00,
+1.9812624252276834e+00,1.9866035289685584e+00,1.9919546183675862e+00,
+1.9973157045897239e+00,
+},{
+1.8376200081604566e-02,5.1154628808092184e-02,7.8953748051446837e-02,
+1.0214588129571212e-01,1.2109094124213016e-01,1.3613642980914165e-01,
+1.4761743813238581e-01,1.5585664656470044e-01,1.6116432467612185e-01,
+1.6383833125388492e-01,1.6416411430242306e-01,1.6241471104336824e-01,
+1.5885074791555098e-01,1.5372044057500034e-01,1.4725959389494392e-01,
+1.3969160196580788e-01,1.3122744809521691e-01,1.2206570480799428e-01,
+1.1239253384616177e-01,1.0238168616893972e-01,9.2194501952747032e-02,
+8.1979910591201133e-02,7.1874430695118008e-02,6.2002170092512188e-02,
+5.2474825828596749e-02,4.3391684165783317e-02,3.4839620583682063e-02,
+2.6893099779101703e-02,1.9614175666049505e-02,1.3052491375731279e-02,
+7.2452792565513846e-03,2.2173608741127282e-03,-2.0188529887832374e-03,
+-5.4633623321365121e-03,-8.1285779387485491e-03,-1.0039321374222254e-02,
+-1.1232824986961987e-02,-1.1758731908173559e-02,-1.1679096051864235e-02,
+-1.1068382114842734e-02,-1.0013465576719227e-02,-8.6136326999053381e-03,
+-6.9805805296141443e-03,-5.2384168938601761e-03,-3.5236604034594166e-03,
+-1.9852404520293021e-03,-7.8449721598872202e-04,-9.5181654558018636e-05,
+-1.0345550975898732e-04,-1.0078913064148765e-03,-3.0194723521503875e-03,
+-6.3615927373916747e-03,-1.1270057335366346e-02,-1.7993081802103461e-02,
+-2.6791292576433534e-02,-3.7937726879988531e-02,-5.1717832717201873e-02,
+-6.8429468875308430e-02,-8.8382904924344530e-02,-1.1190082121714795e-01,
+-1.3931830888935792e-01,-1.7098286985941513e-01,-2.0725441682856172e-01,
+-2.4850527328084127e-01,5.1154628808092184e-02,1.4240136899212530e-01,
+2.1978698842218591e-01,2.8434794020273557e-01,3.3708612900142043e-01,
+3.7896891104907127e-01,4.1092909413970347e-01,4.3386493763051703e-01,
+4.4864015244189659e-01,4.5608390105741137e-01,4.5699079752381522e-01,
+4.5212090745104661e-01,4.4219974801222861e-01,4.2791828794366893e-01,
+4.0993294754485987e-01,3.8886559867847836e-01,3.6530356477038595e-01,
+3.3979962080962878e-01,3.1287199334843763e-01,2.8500436050222788e-01,
+2.5664585194959955e-01,2.2821104893233723e-01,2.0007998425541018e-01,
+1.7259814228697223e-01,1.4607645895836185e-01,1.2079132176410212e-01,
+9.6984569761900730e-02,7.4863493572649986e-02,5.4600835380426815e-02,
+3.6334788932492756e-02,2.0168999539293964e-02,6.1725640744612065e-03,
+-5.6199690251901302e-03,-1.5208599759660046e-02,-2.2627876565763927e-02,
+-2.7946896317132541e-02,-3.1269304324212044e-02,-3.2733294334263974e-02,
+-3.2511608531365255e-02,-3.0811537536408196e-02,-2.7874920407100490e-02,
+-2.3978144637965215e-02,-1.9432146160340835e-02,-1.4582409342381197e-02,
+-9.8089669890555342e-03,-5.5264003421484631e-03,-2.1838390802599861e-03,
+-2.6496131880549001e-04,-2.8799361001574653e-04,-2.8057109429369120e-03,
+-8.4054367434305277e-03,-1.7709042874173520e-02,-3.1372949634658198e-02,
+-5.0088125761192259e-02,-7.4580088426898783e-02,-1.0560890324171623e-01,
+-1.4396918425239846e-01,-1.9049009394251470e-01,-2.4603534323244958e-01,
+-3.1150319147940309e-01,-3.8782644647739062e-01,-4.7597246445724295e-01,
+-5.7694315008660624e-01,-6.9177495646994203e-01,7.8953748051446837e-02,
+2.1978698842218591e-01,3.3922651602011911e-01,4.3887202688807747e-01,
+5.2026989386746436e-01,5.8491316659825543e-01,6.3424157151899863e-01,
+6.6964151186681420e-01,6.9244606767739469e-01,7.0393499578500496e-01,
+7.0533472982248213e-01,6.9781838022123566e-01,6.8250573421124727e-01,
+6.6046325582107102e-01,6.3270408587783322e-01,6.0018804200723253e-01,
+5.6382161863353986e-01,5.2445798697959845e-01,4.8289699506682382e-01,
+4.3988516771520381e-01,3.9611570654329853e-01,3.5222848996824041e-01,
+3.0881007320573417e-01,2.6639368827005683e-01,2.2545924397405770e-01,
+1.8643332592915840e-01,1.4968919654535284e-01,1.1554679503120724e-01,
+8.4272737393860098e-02,5.6080316439022226e-02,3.1129501770976731e-02,
+9.5269397925790145e-03,-8.6740462947432206e-03,-2.3473456490989975e-02,
+-3.4924613997588949e-02,-4.3134165217395548e-02,-4.8262079754692877e-02,
+-5.0521650415191743e-02,-5.0179493206030656e-02,-4.7555547335775827e-02,
+-4.3023075214421169e-02,-3.7008662453388297e-02,-2.9992217865526527e-02,
+-2.2506973465112878e-02,-1.5139484467852071e-02,-8.5296292908765281e-03,
+-3.3706095527463731e-03,-4.0895007344943224e-04,-4.4449887440123348e-04,
+-4.3304271784450066e-03,-1.2973229409851683e-02,-2.7332723194319897e-02,
+-4.8422049358975983e-02,-7.7307671932373978e-02,-1.1510937814449562e-01,
+-1.6300027842675036e-01,-2.2220680641197532e-01,-2.9400871893443536e-01,
+-3.7973909602982303e-01,-4.8078434093525857e-01,-5.9858418008928993e-01,
+-7.3463166313189276e-01,-8.9047316290447043e-01,-1.0677083754498540e+00,
+1.0214588129571212e-01,2.8434794020273557e-01,4.3887202688807747e-01,
+5.6778773736374433e-01,6.7309568110800910e-01,7.5672748106541121e-01,
+8.2054577364675652e-01,8.6634420872911733e-01,8.9584744965583241e-01,
+9.1071117323650697e-01,9.1252206974701267e-01,9.0279784292948762e-01,
+8.8298720999233637e-01,8.5446990161022995e-01,8.1855666192410581e-01,
+7.7648924854116785e-01,7.2944043253488644e-01,6.7851399844499838e-01,
+6.2474474427750692e-01,5.6909848150468179e-01,5.1247203506505912e-01,
+4.5569324336344152e-01,3.9952095827089806e-01,3.4464504512476424e-01,
+2.9168638272864200e-01,2.4119686335239976e-01,1.9365939273217236e-01,
+1.4948789007036112e-01,1.0902728803563377e-01,7.2553532762924533e-02,
+4.0273583853434047e-02,1.2325414374629418e-02,-1.1221989139755806e-02,
+-3.0368626689721623e-02,-4.5183484809001584e-02,-5.5804536565062790e-02,
+-6.2438741559105893e-02,-6.5362045926065093e-02,-6.4919382334608144e-02,
+-6.1524669987136349e-02,-5.5660814619784560e-02,-4.7879708502421181e-02,
+-3.8802230438648166e-02,-2.9118245765801021e-02,-1.9586606354948799e-02,
+-1.1035150610894107e-02,-4.3607034721730997e-03,-5.2907641105548464e-04,
+-5.7506743354451828e-04,-5.6024610793770080e-03,-1.6784028422023312e-02,
+-3.5361527068687337e-02,-6.2645701160306544e-02,-1.0001628137155194e-01,
+-1.4892198491082809e-01,-2.1088051552027309e-01,-2.8747856347575862e-01,
+-3.8037180558688988e-01,-4.9128490519700563e-01,-6.2201151218317818e-01,
+-7.7441426295621341e-01,-9.5042478046065071e-01,-1.1520436741747631e+00,
+-1.3813405401105570e+00,1.2109094124213016e-01,3.3708612900142043e-01,
+5.2026989386746436e-01,6.7309568110800910e-01,7.9793515448187691e-01,
+8.9707819623896512e-01,9.7273290712024618e-01,1.0270256063577676e+00,
+1.0620008316746521e+00,1.0796213392850973e+00,1.0817681038943761e+00,
+1.0702403186988363e+00,1.0467553953859010e+00,1.0129489641340683e+00,
+9.7037487361291141e-01,9.2050519098307859e-01,8.6473020189629324e-01,
+8.0435841049535384e-01,7.4061653941413397e-01,6.7464952977758230e-01,
+6.0752054120172261e-01,5.4021095179365375e-01,4.7362035815154968e-01,
+4.0856657536465946e-01,3.4578563701330722e-01,2.8593179516889222e-01,
+2.2957752039388879e-01,1.7721350174184636e-01,1.2924864675738945e-01,
+8.6010081476217692e-02,4.7743150425105796e-02,1.4611416621903572e-02,
+-1.3303338424464073e-02,-3.6001114713997140e-02,-5.3563693755620534e-02,
+-6.6154638567184065e-02,-7.4019293675462450e-02,-7.7484785116155308e-02,
+-7.6960020433887166e-02,-7.2935688682207456e-02,-6.5984260423590513e-02,
+-5.6759987729435579e-02,-4.5998904180066802e-02,-3.4518824864733233e-02,
+-2.3219346381608830e-02,-1.3081846837792455e-02,-5.1694858493078755e-03,
+-6.2720454110376522e-04,-6.8172554705370203e-04,-6.6415530099561693e-03,
+-1.9896972581534556e-02,-4.1920051422437155e-02,-7.4264638202237165e-02,
+-1.1856636309943269e-01,-1.7654263780144674e-01,-2.4999265550462724e-01,
+-3.4079739091424699e-01,-4.5091960024450373e-01,-5.8240382121852008e-01,
+-7.3737637306834358e-01,-9.1804535653494668e-01,-1.1267006538682267e+00,
+-1.3657139288270059e+00,-1.6375386266790315e+00,1.3613642980914165e-01,
+3.7896891104907127e-01,5.8491316659825543e-01,7.5672748106541121e-01,
+8.9707819623896512e-01,1.0085397110870531e+00,1.0935944817575205e+00,
+1.1546330215779221e+00,1.1939539010555222e+00,1.2137637478772945e+00,
+1.2161772469099219e+00,1.2032171401997971e+00,1.1768142269730220e+00,
+1.1388073636354079e+00,1.0909434637724758e+00,1.0348774981494557e+00,
+9.7217249471128753e-01,9.0429953858262024e-01,8.3263777206781242e-01,
+7.5847439465093203e-01,6.8300466299575646e-01,6.0733189094577256e-01,
+5.3246744952417657e-01,4.5933076693387420e-01,3.8874932855748057e-01,
+3.2145867695732022e-01,2.5810241187542715e-01,1.9923219023354477e-01,
+1.4530772613312593e-01,9.6696790855332893e-02,5.3675212861037380e-02,
+1.6426877790820527e-02,-1.4956271535027099e-02,-4.0474235116505497e-02,
+-6.0218955773905236e-02,-7.4374319147807455e-02,-8.3216153699083861e-02,
+-8.7112230708896732e-02,-8.6522264278698913e-02,-8.1997911330233819e-02,
+-7.4182771605535436e-02,-6.3812387666928316e-02,-5.1714244897027584e-02,
+-3.8807771498738930e-02,-2.6104338495258617e-02,-1.4707259730073474e-02,
+-5.8117918669609026e-03,-7.0513438998887068e-04,-7.6642960351591682e-04,
+-7.4667626321911484e-03,-2.2369161420954242e-02,-4.7128596735035444e-02,
+-8.3491982159955569e-02,-1.3329817410152600e-01,-1.9847797178584869e-01,
+-2.8105411725931617e-01,-3.8314129538861152e-01,-5.0694613386070841e-01,
+-6.5476720318287107e-01,-8.2899501668265430e-01,-1.0321120305079035e+00,
+-1.2666926436267545e+00,-1.5354031978276339e+00,-1.8410019777192588e+00,
+1.4761743813238581e-01,4.1092909413970347e-01,6.3424157151899863e-01,
+8.2054577364675652e-01,9.7273290712024618e-01,1.0935944817575205e+00,
+1.1858223105974162e+00,1.2520085098995537e+00,1.2946454991443375e+00,
+1.3161260010329556e+00,1.3187430414873802e+00,1.3046899496503670e+00,
+1.2760603578854557e+00,1.2348482017769697e+00,1.1829477201300165e+00,
+1.1221534549704870e+00,1.0541602515450563e+00,9.8056325832118318e-01,
+9.0285792698711020e-01,8.2244001245186382e-01,7.4060557284525430e-01,
+6.5855096951787573e-01,5.7737286704110602e-01,4.9806823320710691e-01,
+4.2153433902882398e-01,3.4856875873998661e-01,2.7986936979510801e-01,
+2.1603435286948525e-01,1.5756219185919917e-01,1.0485167388111449e-01,
+5.8201889272879725e-02,1.7812231592927219e-02,-1.6217602379526852e-02,
+-4.3887612644482488e-02,-6.5297495981155862e-02,-8.0646645947979323e-02,
+-9.0234152882601393e-02,-9.4458803901886768e-02,-9.3819082901916317e-02,
+-8.8913170557987087e-02,-8.0438944324612294e-02,-6.9193978435521331e-02,
+-5.6075543903659764e-02,-4.2080608521189333e-02,-2.8305836859487954e-02,
+-1.5947590269149714e-02,-6.3019268799848760e-03,-7.6460160101987640e-04,
+-8.3106612049732576e-04,-8.0964689058760086e-03,-2.4255655203830884e-02,
+-5.1103167040253084e-02,-9.0533243220249915e-02,-1.4453981932814486e-01,
+-2.1521652772747757e-01,-3.0475669756100388e-01,-4.1545335475069578e-01,
+-5.4969922199774146e-01,-7.0998671878254527e-01,-8.9890796136472773e-01,
+-1.1191547627831255e+00,-1.3735186328557916e+00,-1.6648907781799949e+00,
+-1.9962621021322207e+00,1.5585664656470044e-01,4.3386493763051703e-01,
+6.6964151186681420e-01,8.6634420872911733e-01,1.0270256063577676e+00,
+1.1546330215779221e+00,1.2520085098995537e+00,1.3218888655174510e+00,
+1.3669056213112185e+00,1.3895850488452766e+00,1.3923481583688613e+00,
+1.3775106988160246e+00,1.3472831578056343e+00,1.3037707616413741e+00,
+1.2489734753117432e+00,1.1847860024900569e+00,1.1129977855344464e+00,
+1.0352930054878584e+00,9.5325058207805569e-01,8.6834417371761674e-01,
+7.8194217750393591e-01,6.9530772921922335e-01,6.0959870333050503e-01,
+5.2586771298962276e-01,4.4506211003323415e-01,3.6802398498281264e-01,
+2.9549016704464748e-01,2.2809222410984376e-01,1.6635646275432237e-01,
+1.1070392823882003e-01,6.1450404508889278e-02,1.8806414194898480e-02,
+-1.7122781387968189e-02,-4.6337182239710728e-02,-6.8942049675513317e-02,
+-8.5147906325744316e-02,-9.5270536135956263e-02,-9.9730984366885878e-02,
+-9.9055557594454058e-02,-9.3875823709765882e-02,-8.4928611919110608e-02,
+-7.3056012743961674e-02,-5.9205378020976696e-02,-4.4429320901997471e-02,
+-2.9885715854049977e-02,-1.6837698659344369e-02,-6.6536664152749836e-03,
+-8.0727753442033645e-04,-8.7745174454312291e-04,-8.5483700885902181e-03,
+-2.5609474924692677e-02,-5.3955469926165733e-02,-9.5586320081508802e-02,
+-1.5260725169440548e-01,-2.2722875238372353e-01,-3.2176657108351492e-01,
+-4.3864171804301577e-01,-5.8038046482664640e-01,-7.4961434431401130e-01,
+-9.4908015069989915e-01,-1.1816199394942828e+00,-1.4501810275223193e+00,
+-1.7578159929243498e+00,-2.1076826751558997e+00,1.6116432467612185e-01,
+4.4864015244189659e-01,6.9244606767739469e-01,8.9584744965583241e-01,
+1.0620008316746521e+00,1.1939539010555222e+00,1.2946454991443375e+00,
+1.3669056213112185e+00,1.4134554169505122e+00,1.4369071894807917e+00,
+1.4397643963448559e+00,1.4244216490097301e+00,1.3931647129666658e+00,
+1.3481705077311403e+00,1.2915071068428574e+00,1.2251337378657468e+00,
+1.1509007823879642e+00,1.0705497760218918e+00,9.8571340840413768e-01,
+8.9791552319553603e-01,8.0857111808114723e-01,7.1898634477025780e-01,
+6.3035850899638035e-01,5.4377607051725363e-01,4.6021864311484251e-01,
+3.8055699459533798e-01,3.0555304678915718e-01,2.3585987555094334e-01,
+1.7202171075956585e-01,1.1447393631812020e-01,6.3543090153928006e-02,
+1.9446864218537030e-02,-1.7705895512278857e-02,-4.7915189038519657e-02,
+-7.1289862335959242e-02,-8.8047607356145363e-02,-9.8514962026399644e-02,
+-1.0312731024981758e-01,-1.0242888190526855e-01,-9.7072752847395805e-02,
+-8.7820844906616458e-02,-7.5543925889121510e-02,-6.1221609576875835e-02,
+-4.5942355727618178e-02,-3.0903470074861161e-02,-1.7411104327891280e-02,
+-6.8802561717689059e-03,-8.3476926732828360e-04,-9.0733325117753338e-04,
+-8.8394837356986500e-03,-2.6481602309047503e-02,-5.5792916535153836e-02,
+-9.8841499953721268e-02,-1.5780427208022729e-01,-2.3496699840592328e-01,
+-3.3272429039783447e-01,-4.5357960549875997e-01,-6.0014524712727280e-01,
+-7.7514236467771980e-01,-9.8140095352022172e-01,-1.2218598550006732e+00,
+-1.4995667564407427e+00,-1.8176781911378725e+00,-2.1794595383652791e+00,
+1.6383833125388492e-01,4.5608390105741137e-01,7.0393499578500496e-01,
+9.1071117323650697e-01,1.0796213392850973e+00,1.2137637478772945e+00,
+1.3161260010329556e+00,1.3895850488452766e+00,1.4369071894807917e+00,
+1.4607480691793739e+00,1.4636526822542351e+00,1.4480553710919253e+00,
+1.4162798261523335e+00,1.3705390859686872e+00,1.3129355371475526e+00,
+1.2454609143688344e+00,1.1699963003857761e+00,1.0883121260249595e+00,
+1.0020681701863055e+00,9.1281355984307311e-01,8.2198677004186038e-01,
+7.3091562390260378e-01,6.4081729261857845e-01,5.5279829545639814e-01,
+4.6785449975601523e-01,3.8687112093072074e-01,3.1062272246714429e-01,
+2.3977321592525414e-01,1.7487586093835716e-01,1.1637326521309888e-01,
+6.4597384529463397e-02,1.9769522740773482e-02,-1.7999668226309495e-02,
+-4.8710188371785534e-02,-7.2472689622316011e-02,-8.9508475831223677e-02,
+-1.0014950277849266e-01,-1.0483837817076846e-01,-1.0412836164135797e-01,
+-9.8683364750229430e-02,-8.9277950984012477e-02,-7.6797335755998120e-02,
+-6.2237386406138739e-02,-4.6704622201048096e-02,-3.1416214334001324e-02,
+-1.7699985924934936e-02,-6.9944120204468163e-03,-8.4861959379622931e-04,
+-9.2238754490381325e-04,-8.9861467003515827e-03,-2.6920979813382928e-02,
+-5.6718621563902616e-02,-1.0048145855847679e-01,-1.6042252933033296e-01,
+-2.3886552433936004e-01,-3.3824478597210828e-01,-4.6110530854178933e-01,
+-6.1010273828827621e-01,-7.8800337337810333e-01,-9.9768416390446646e-01,
+-1.2421327118872227e+00,-1.5244472712728907e+00,-1.8478367479346502e+00,
+-2.2156206996723427e+00,1.6416411430242306e-01,4.5699079752381522e-01,
+7.0533472982248213e-01,9.1252206974701267e-01,1.0817681038943761e+00,
+1.2161772469099219e+00,1.3187430414873802e+00,1.3923481583688613e+00,
+1.4397643963448559e+00,1.4636526822542351e+00,1.4665630709842503e+00,
+1.4509347454705335e+00,1.4190960166970967e+00,1.3732643236963327e+00,
+1.3155462335490142e+00,1.2479374413842947e+00,1.1723227703797079e+00,
+1.0904761717611677e+00,1.0040607248029687e+00,9.1462863682778561e-01,
+8.2362124320667363e-01,7.3236900735906829e-01,6.4209152075278553e-01,
+5.5389750290402162e-01,4.6878480137735323e-01,3.8764039178573739e-01,
+3.1124037779051150e-01,2.4024999110139333e-01,1.7522359147648103e-01,
+1.1660466672225311e-01,6.4725832693568464e-02,1.9808833293666339e-02,
+-1.8035459525833630e-02,-4.8807045764931445e-02,-7.2616797375246733e-02,
+-8.9686458260018753e-02,-1.0034864427410639e-01,-1.0504684322398816e-01,
+-1.0433541486776221e-01,-9.8879590915146309e-02,-8.9455475027477860e-02,
+-7.6950042817713893e-02,-6.2361141850431068e-02,-4.6797491641825673e-02,
+-3.1478683659713624e-02,-1.7735181323530469e-02,-7.0083200043313809e-03,
+-8.5030702479116371e-04,-9.2422165920424959e-04,-9.0040151334846996e-03,
+-2.6974510625166204e-02,-5.6831403263402080e-02,-1.0068126012896528e-01,
+-1.6074152025424837e-01,-2.3934049462326357e-01,-3.3891736617164270e-01,
+-4.6202218978663723e-01,-6.1131589230711825e-01,-7.8957027252357648e-01,
+-9.9966800117812227e-01,-1.2446026209644856e+00,-1.5274785465280161e+00,
+-1.8515110644656829e+00,-2.2200263333260750e+00,1.6241471104336824e-01,
+4.5212090745104661e-01,6.9781838022123566e-01,9.0279784292948762e-01,
+1.0702403186988363e+00,1.2032171401997971e+00,1.3046899496503670e+00,
+1.3775106988160246e+00,1.4244216490097301e+00,1.4480553710919253e+00,
+1.4509347454705335e+00,1.4354729621009596e+00,1.4039735204860904e+00,
+1.3586302296762938e+00,1.3015272082694196e+00,1.2346388844107992e+00,
+1.1598299957932454e+00,1.0788555896570529e+00,9.9336102278999761e-01,
+9.0488196152733735e-01,8.1484438175181140e-01,7.2456456889364063e-01,
+6.3524911793052752e-01,5.4799493338765615e-01,4.6378922933769218e-01,
+3.8350952940078287e-01,3.0792366674455707e-01,2.3768978408412522e-01,
+1.7335633368207937e-01,1.1536207734849313e-01,6.4036086440921736e-02,
+1.9597741864401996e-02,-1.7843265928547680e-02,-4.8286936937927294e-02,
+-7.1842961616255252e-02,-8.8730720868568369e-02,-9.9279286052421867e-02,
+-1.0392741897788937e-01,-1.0322357190756293e-01,-9.7825887556552971e-02,
+-8.8502199092488354e-02,-7.6130030135516336e-02,-6.1696594758302581e-02,
+-4.6298797486031162e-02,-3.1143233296404560e-02,-1.7546187619643661e-02,
+-6.9336363384877586e-03,-8.4124578819455564e-04,-9.1437275654016048e-04,
+-8.9080644838190892e-03,-2.6687058662844265e-02,-5.6225783438947019e-02,
+-9.9608357409977089e-02,-1.5902858962630262e-01,-2.3678997959081016e-01,
+-3.3530571725890468e-01,-4.5709868303850953e-01,-6.0480144779006650e-01,
+-7.8115627282653577e-01,-9.8901510991339592e-01,-1.2313396012686439e+00,
+-1.5112010795627953e+00,-1.8317805679188837e+00,-2.1963687799124614e+00,
+1.5885074791555098e-01,4.4219974801222861e-01,6.8250573421124727e-01,
+8.8298720999233637e-01,1.0467553953859010e+00,1.1768142269730220e+00,
+1.2760603578854557e+00,1.3472831578056343e+00,1.3931647129666658e+00,
+1.4162798261523335e+00,1.4190960166970967e+00,1.4039735204860904e+00,
+1.3731652899551250e+00,1.3288169940906869e+00,1.2729670184299380e+00,
+1.2075464650607159e+00,1.1343791526215341e+00,1.0551816163015815e+00,
+9.7156310784072275e-01,8.8502559552949833e-01,7.9696376420912429e-01,
+7.0866501527149239e-01,6.2130946665917008e-01,5.3596995286540050e-01,
+4.5361202493410246e-01,3.7509395045987048e-01,3.0116671358797475e-01,
+2.3247401501436116e-01,1.6955227198565126e-01,1.1283061829914232e-01,
+6.2630904302807267e-02,1.9167696895294739e-02,-1.7451720474070953e-02,
+-4.7227347805289810e-02,-7.0266468547686145e-02,-8.6783649599908586e-02,
+-9.7100741309930072e-02,-1.0164687747504786e-01,-1.0095847534188351e-01,
+-9.5679235606382917e-02,-8.6560142413816266e-02,-7.4459463358778066e-02,
+-6.0342749485187142e-02,-4.5282835286286627e-02,-3.0459838704643971e-02,
+-1.7161161132150937e-02,-6.7814874100236011e-03,-8.2278582880235263e-04,
+-8.9430812835189499e-04,-8.7125894978612450e-03,-2.6101448575843733e-02,
+-5.4991987450137003e-02,-9.7422591657903013e-02,-1.5553893018562803e-01,
+-2.3159395546912265e-01,-3.2794790339352176e-01,-4.4706829329328457e-01,
+-5.9152992795219461e-01,-7.6401489360335972e-01,-9.6731255992921206e-01,
+-1.2043195800615081e+00,-1.4780398905813286e+00,-1.7915847115190786e+00,
+-2.1481725463544876e+00,1.5372044057500034e-01,4.2791828794366893e-01,
+6.6046325582107102e-01,8.5446990161022995e-01,1.0129489641340683e+00,
+1.1388073636354079e+00,1.2348482017769697e+00,1.3037707616413741e+00,
+1.3481705077311403e+00,1.3705390859686872e+00,1.3732643236963327e+00,
+1.3586302296762938e+00,1.3288169940906869e+00,1.2859009885415276e+00,
+1.2318547660507306e+00,1.1685470610601101e+00,1.0977427894313792e+00,
+1.0211030484461503e+00,9.4018511680593519e-01,8.5644245463214475e-01,
+7.7122470346608907e-01,6.8577768626897750e-01,6.0124340742191862e-01,
+5.1866005272592020e-01,4.3896198940188924e-01,3.6297976609063198e-01,
+2.9144011285285387e-01,2.2496594116915958e-01,1.6407634394005299e-01,
+1.0918659548593723e-01,6.0608151547114630e-02,1.8548649283786744e-02,
+-1.6888092723945647e-02,-4.5702074476082544e-02,-6.7997114552724724e-02,
+-8.3980850114073746e-02,-9.3964736900431944e-02,-9.8364049232202433e-02,
+-9.7697880009889104e-02,-9.2589140714096629e-02,-8.3764561405530458e-02,
+-7.2054690724996817e-02,-5.8393895893402714e-02,-4.3820362711755934e-02,
+-2.9476095561165039e-02,-1.6606917402839372e-02,-6.5624697780890529e-03,
+-7.9621280832498087e-04,-8.6542519505883320e-04,-8.4312042199030657e-03,
+-2.5258465744570913e-02,-5.3215944210876387e-02,-9.4276192640734280e-02,
+-1.5051558263616016e-01,-2.2411430437927038e-01,-3.1735636663228206e-01,
+-4.3262959673751311e-01,-5.7242564061738221e-01,-7.3933996277440883e-01,
+-9.3607184629121321e-01,-1.1654243928305164e+00,-1.4303045226351401e+00,
+-1.7337229745280069e+00,-2.0787943059121403e+00,1.4725959389494392e-01,
+4.0993294754485987e-01,6.3270408587783322e-01,8.1855666192410581e-01,
+9.7037487361291141e-01,1.0909434637724758e+00,1.1829477201300165e+00,
+1.2489734753117432e+00,1.2915071068428574e+00,1.3129355371475526e+00,
+1.3155462335490142e+00,1.3015272082694196e+00,1.2729670184299380e+00,
+1.2318547660507306e+00,1.1800800980509507e+00,1.1194332062487433e+00,
+1.0516048273612455e+00,9.7818624300458623e-01,9.0066927969388644e-01,
+8.2044630884325898e-01,7.3881024676580864e-01,6.5695455467363217e-01,
+5.7597323867781824e-01,4.9686084978844747e-01,4.2051248391459239e-01,
+3.4772378186431752e-01,2.7919092934467926e-01,2.1551065696172600e-01,
+1.5718024022049804e-01,1.0459749952502762e-01,5.8060800178338923e-02,
+1.7769052382448081e-02,-1.6178288761636850e-02,-4.3781223253915869e-02,
+-6.5139206195397037e-02,-8.0451147788096478e-02,-9.0015413335038374e-02,
+-9.4229823240254973e-02,-9.3591653008786579e-02,-8.8697633246681562e-02,
+-8.0243949660996350e-02,-6.9026243059795434e-02,-5.5939609352151365e-02,
+-4.1978599548144757e-02,-2.8237219758864285e-02,-1.5908931196406684e-02,
+-6.2866501738767511e-03,-7.6274810538734528e-04,-8.2905150605938616e-04,
+-8.0768419920218548e-03,-2.4196856280411794e-02,-5.0979286189374307e-02,
+-9.0313778638062558e-02,-1.4418943564663778e-01,-2.1469481433626925e-01,
+-3.0401792692913432e-01,-4.1444624074841840e-01,-5.4836667821831497e-01,
+-7.0826561686402556e-01,-8.9672888931175976e-01,-1.1164417832887352e+00,
+-1.3701890416231777e+00,-1.6608548622443209e+00,-1.9914228981824067e+00,
+1.3969160196580788e-01,3.8886559867847836e-01,6.0018804200723253e-01,
+7.7648924854116785e-01,9.2050519098307859e-01,1.0348774981494557e+00,
+1.1221534549704870e+00,1.1847860024900569e+00,1.2251337378657468e+00,
+1.2454609143688344e+00,1.2479374413842947e+00,1.2346388844107992e+00,
+1.2075464650607159e+00,1.1685470610601101e+00,1.1194332062487433e+00,
+1.0619030905800741e+00,9.9756056012125782e-01,9.2791511705314633e-01,
+8.5438191967028843e-01,7.7828178238092960e-01,7.0084117570701210e-01,
+6.2319222628417492e-01,5.4637271686175382e-01,4.7132608630278128e-01,
+3.9890142958398656e-01,3.2985349779579565e-01,2.6484269814233130e-01,
+2.0443509394141302e-01,1.4910240462455704e-01,9.9222005736976371e-02,
+5.5076928937580760e-02,1.6855861998976707e-02,-1.5346851192532540e-02,
+-4.1531210636946980e-02,-6.1791560220569863e-02,-7.6316587716007689e-02,
+-8.5389324782170206e-02,-8.9387146964270414e-02,-8.8781773693824562e-02,
+-8.4139268288652147e-02,-7.6120037952875919e-02,-6.5478833776921874e-02,
+-5.3064750737519262e-02,-3.9821227697700579e-02,-2.6786047406801572e-02,
+-1.5091336500461239e-02,-5.9635655006218258e-03,-7.2354881552882944e-04,
+-7.8644473973099593e-04,-7.6617554540803212e-03,-2.2953327025732051e-02,
+-4.8359349408144681e-02,-8.5672356441079955e-02,-1.3677922585060287e-01,
+-2.0366117924908167e-01,-2.8839378213518785e-01,-3.9314694389389615e-01,
+-5.2018491779648457e-01,-6.7186630100053435e-01,-8.5064403454992998e-01,
+-1.0590654033748592e+00,-1.2997720362918130e+00,-1.5754999060035857e+00,
+-1.8890793290992747e+00,1.3122744809521691e-01,3.6530356477038595e-01,
+5.6382161863353986e-01,7.2944043253488644e-01,8.6473020189629324e-01,
+9.7217249471128753e-01,1.0541602515450563e+00,1.1129977855344464e+00,
+1.1509007823879642e+00,1.1699963003857761e+00,1.1723227703797079e+00,
+1.1598299957932454e+00,1.1343791526215341e+00,1.0977427894313792e+00,
+1.0516048273612455e+00,9.9756056012125782e-01,9.3711665399320054e-01,
+8.7169114783051782e-01,8.0261345305831355e-01,7.3112435367335138e-01,
+6.5837600624405468e-01,5.8543193991050657e-01,5.1326705638444992e-01,
+4.4276762994928731e-01,3.7473130746008110e-01,3.0986710834355335e-01,
+2.4879542459808590e-01,1.9204802079372030e-01,1.4006803407215784e-01,
+9.3209974146759578e-02,5.1739723302546281e-02,1.5834536396198473e-02,
+-1.4416959143943586e-02,-3.9014763317879897e-02,-5.8047503553950719e-02,
+-7.1692434708836572e-02,-8.0215439067558236e-02,-8.3971026343476751e-02,
+-8.3402333678293417e-02,-7.9041125642049792e-02,-7.1507794233127697e-02,
+-6.1511358878249212e-02,-4.9849466432476675e-02,-3.7408391179212686e-02,
+-2.5163034830200104e-02,-1.4176926525522049e-02,-5.6022228336018998e-03,
+-6.7970775120329563e-04,-7.3879270343013559e-04,-7.1975165437265787e-03,
+-2.1562545553877044e-02,-4.5429173444006210e-02,-8.0481321352579016e-02,
+-1.2849153784640066e-01,-1.9132099892061660e-01,-2.7091950799871256e-01,
+-3.6932549593251451e-01,-4.8866602100218870e-01,-6.3115676891624162e-01,
+-7.9910205281152002e-01,-9.9489481325321094e-01,-1.2210166182348416e+00,
+-1.4800376631782797e+00,-1.7746167709337328e+00,1.2206570480799428e-01,
+3.3979962080962878e-01,5.2445798697959845e-01,6.7851399844499838e-01,
+8.0435841049535384e-01,9.0429953858262024e-01,9.8056325832118318e-01,
+1.0352930054878584e+00,1.0705497760218918e+00,1.0883121260249595e+00,
+1.0904761717611677e+00,1.0788555896570529e+00,1.0551816163015815e+00,
+1.0211030484461503e+00,9.7818624300458623e-01,9.2791511705314633e-01,
+8.7169114783051782e-01,8.1083337273781808e-01,7.4657838933859466e-01,
+6.8008035535882527e-01,6.1241098868691779e-01,5.4455956737371025e-01,
+4.7743292963247086e-01,4.1185547383889798e-01,3.4856915853112014e-01,
+2.8823350240969603e-01,2.3142558433761451e-01,1.7864004334029460e-01,
+1.3028907860558547e-01,8.6702449483766486e-02,4.8127475487547144e-02,
+1.4729036292067121e-02,-1.3410428265103747e-02,-3.6290918183965459e-02,
+-5.3994873302087854e-02,-6.6687173294610602e-02,-7.4615137674243215e-02,
+-7.8108525791265038e-02,-7.7579536833525253e-02,-7.3522809826442881e-02,
+-6.6515423633006776e-02,-5.7216896953775631e-02,-4.6369188326877975e-02,
+-3.4796696128012172e-02,-2.3406258570446425e-02,-1.3187153705018773e-02,
+-5.2110994201370886e-03,-6.3225344177908482e-04,-6.8721333349230918e-04,
+-6.6950164963941461e-03,-2.0057140169171817e-02,-4.2257501428082378e-02,
+-7.4862457186952724e-02,-1.1952080419717959e-01,-1.7796377904772953e-01,
+-2.5200505816513896e-01,-3.4354075781351412e-01,-4.5454943409453108e-01,
+-5.8709208294743576e-01,-7.4331214014904390e-01,-9.2543548131374109e-01,
+-1.1357704218934828e+00,-1.3767077171777942e+00,-1.6507205622937704e+00,
+1.1239253384616177e-01,3.1287199334843763e-01,4.8289699506682382e-01,
+6.2474474427750692e-01,7.4061653941413397e-01,8.3263777206781242e-01,
+9.0285792698711020e-01,9.5325058207805569e-01,9.8571340840413768e-01,
+1.0020681701863055e+00,1.0040607248029687e+00,9.9336102278999761e-01,
+9.7156310784072275e-01,9.4018511680593519e-01,9.0066927969388644e-01,
+8.5438191967028843e-01,8.0261345305831355e-01,7.4657838933859466e-01,
+6.8741533114922504e-01,6.2618697428575842e-01,5.6388010770120900e-01,
+5.0140561350605140e-01,4.3959846696822069e-01,3.7921773651311241e-01,
+3.2094658372358253e-01,2.6539226333994748e-01,2.1308612325998411e-01,
+1.6448360453892974e-01,1.1996424138948214e-01,7.9831661181799518e-02,
+4.4313584443500531e-02,1.3561824859664284e-02,-1.2347710727169670e-02,
+-3.3415022317001331e-02,-4.9716016752370251e-02,-6.1402507718355537e-02,
+-6.8702215742575845e-02,-7.1918768195189386e-02,-7.1431699288893924e-02,
+-6.7696450078926773e-02,-6.1244368463064802e-02,-5.2682709181624432e-02,
+-4.2694633817461636e-02,-3.2039210795971940e-02,-2.1551415385090422e-02,
+-1.2142129695291715e-02,-4.7981426795900006e-03,-5.8215013353901668e-04,
+-6.3275469523205174e-04,-6.1644658453019474e-03,-1.8467699906921098e-02,
+-3.8908780045801450e-02,-6.8929936270194503e-02,-1.1004930543089131e-01,
+-1.6386093122122247e-01,-2.3203476417705815e-01,-3.1631666167680805e-01,
+-4.1852838794142144e-01,-5.4056761403438713e-01,-6.8440791786173349e-01,
+-8.5209878417202845e-01,-1.0457656045563795e+00,-1.2676096774484336e+00,
+-1.5199082081243773e+00,1.0238168616893972e-01,2.8500436050222788e-01,
+4.3988516771520381e-01,5.6909848150468179e-01,6.7464952977758230e-01,
+7.5847439465093203e-01,8.2244001245186382e-01,8.6834417371761674e-01,
+8.9791552319553603e-01,9.1281355984307311e-01,9.1462863682778561e-01,
+9.0488196152733735e-01,8.8502559552949833e-01,8.5644245463214475e-01,
+8.2044630884325898e-01,7.7828178238092960e-01,7.3112435367335138e-01,
+6.8008035535882527e-01,6.2618697428575842e-01,5.7041225151266417e-01,
+5.1365508230816204e-01,4.5674521615097774e-01,4.0044325672994319e-01,
+3.4544066194399647e-01,2.9235974390218189e-01,2.4175366892364991e-01,
+1.9410645753765721e-01,1.4983298448356663e-01,1.0927897871084724e-01,
+7.2721023379074268e-02,4.0366555857929143e-02,1.2353867727199486e-02,
+-1.1247895223220894e-02,-3.0438732993331996e-02,-4.5287791373027630e-02,
+-5.5933361942095416e-02,-6.2582882070216783e-02,-6.5512934916966969e-02,
+-6.5069249431815024e-02,-6.1666700354123805e-02,-5.5789308213149980e-02,
+-4.7990239328044026e-02,-3.8891805807850233e-02,-2.9185465551506695e-02,
+-1.9631822247845321e-02,-1.1060625375591826e-02,-4.3707702033657370e-03,
+-5.3029778968038954e-04,-5.7639498294292935e-04,-5.6153944214543117e-03,
+-1.6822774533409302e-02,-3.5443159536896474e-02,-6.2790319439898212e-02,
+-1.0024717004029071e-01,-1.4926577292584398e-01,-2.1136733547422182e-01,
+-2.8814221085298186e-01,-3.8124989801957554e-01,-4.9241904172134809e-01,
+-6.2344743249553858e-01,-7.7620200666927985e-01,-9.5261884635959859e-01,
+-1.1547031794734153e+00,-1.3845293797075442e+00,9.2194501952747032e-02,
+2.5664585194959955e-01,3.9611570654329853e-01,5.1247203506505912e-01,
+6.0752054120172261e-01,6.8300466299575646e-01,7.4060557284525430e-01,
+7.8194217750393591e-01,8.0857111808114723e-01,8.2198677004186038e-01,
+8.2362124320667363e-01,8.1484438175181140e-01,7.9696376420912429e-01,
+7.7122470346608907e-01,7.3881024676580864e-01,7.0084117570701210e-01,
+6.5837600624405468e-01,6.1241098868691779e-01,5.6388010770120900e-01,
+5.1365508230816204e-01,4.6254536588463679e-01,4.1129814616311933e-01,
+3.6059834523172185e-01,3.1106861953418274e-01,2.6326935986986655e-01,
+2.1769869139376397e-01,1.7479247361649186e-01,1.3492430040429326e-01,
+9.8405499979037359e-02,6.5485134918219501e-02,3.6350002154961203e-02,
+1.1124632978010141e-02,-1.0128706968259849e-02,-2.7410017683848764e-02,
+-4.0781564813130444e-02,-5.0367879644852565e-02,-5.6355759112136639e-02,
+-5.8994265792478018e-02,-5.8594727907745892e-02,-5.5530739324183287e-02,
+-5.0238159552407069e-02,-4.3215113747407941e-02,-3.5021992708550442e-02,
+-2.6281452879572953e-02,-1.7678416348587689e-02,-9.9600708480807043e-03,
+-3.9358697549118915e-03,-4.7753209031498045e-04,-5.1904251989753902e-04,
+-5.0566513536409730e-03,-1.5148874545900526e-02,-3.1916493695405279e-02,
+-5.6542556045258152e-02,-9.0272374482935902e-02,-1.3441352754028912e-01,
+-1.9033585939354225e-01,-2.5947147986329355e-01,-3.4331476441451514e-01,
+-4.4342235415655296e-01,-5.6141315584312679e-01,-6.9896834187233026e-01,
+-8.5783135028663082e-01,-1.0398078847728698e+00,-1.2467659146622623e+00,
+8.1979910591201133e-02,2.2821104893233723e-01,3.5222848996824041e-01,
+4.5569324336344152e-01,5.4021095179365375e-01,6.0733189094577256e-01,
+6.5855096951787573e-01,6.9530772921922335e-01,7.1898634477025780e-01,
+7.3091562390260378e-01,7.3236900735906829e-01,7.2456456889364063e-01,
+7.0866501527149239e-01,6.8577768626897750e-01,6.5695455467363217e-01,
+6.2319222628417492e-01,5.8543193991050657e-01,5.4455956737371025e-01,
+5.0140561350605140e-01,4.5674521615097774e-01,4.1129814616311933e-01,
+3.6572880740828850e-01,3.2064623676347992e-01,2.7660410411687053e-01,
+2.3410071236781960e-01,1.9357899742686868e-01,1.5542652821574166e-01,
+1.1997550666734469e-01,8.7502767725766262e-02,5.8229779346277155e-02,
+3.2322642495330456e-02,9.8920911505615550e-03,-9.0065076992118520e-03,
+-2.4373154053989765e-02,-3.6263214902589880e-02,-4.4787424222647587e-02,
+-5.0111882980615974e-02,-5.2458059131765822e-02,-5.2102787620185609e-02,
+-4.9378270378781508e-02,-4.4672076329277388e-02,-3.8427141382214813e-02,
+-3.1141768436953043e-02,-2.3369627381669034e-02,-1.5719755093357435e-02,
+-8.8565554378305933e-03,-3.4997992697185509e-03,-4.2462443246904513e-04,
+-4.6153575834750882e-04,-4.4964050684370704e-03,-1.3470471172638554e-02,
+-2.8380339869670479e-02,-5.0277983947069060e-02,-8.0270743181188209e-02,
+-1.1952132433719953e-01,-1.6924780116909233e-01,-2.3072361441967359e-01,
+-3.0527757182056803e-01,-3.9429384809221801e-01,-4.9921198494388364e-01,
+-6.2152689107364267e-01,-7.6278884216839060e-01,-9.2460348090384059e-01,
+-1.1086318169445235e+00,7.1874430695118008e-02,2.0007998425541018e-01,
+3.0881007320573417e-01,3.9952095827089806e-01,4.7362035815154968e-01,
+5.3246744952417657e-01,5.7737286704110602e-01,6.0959870333050503e-01,
+6.3035850899638035e-01,6.4081729261857845e-01,6.4209152075278553e-01,
+6.3524911793052752e-01,6.2130946665917008e-01,6.0124340742191862e-01,
+5.7597323867781824e-01,5.4637271686175382e-01,5.1326705638444992e-01,
+4.7743292963247086e-01,4.3959846696822069e-01,4.0044325672994319e-01,
+3.6059834523172185e-01,3.2064623676347992e-01,2.8112089359098036e-01,
+2.4250773595582586e-01,2.0524364207545887e-01,1.6971694814316152e-01,
+1.3626744832805571e-01,1.0518639477510305e-01,7.6716497605104905e-02,
+5.1051924914702340e-02,2.8338302776376167e-02,8.6727152384469264e-03,
+-7.8962956749251134e-03,-2.1368729963739952e-02,-3.1793129652157859e-02,
+-3.9266578788499373e-02,-4.3934703445245304e-02,-4.5991671719036731e-02,
+-4.5680193730675001e-02,-4.3291521625121732e-02,-3.9165449571498812e-02,
+-3.3690313763088398e-02,-2.7302992417332916e-02,-2.0488905775835065e-02,
+-1.3782016104357808e-02,-7.7648276928243831e-03,-3.0683868553182947e-03,
+-3.7228193008331800e-04,-4.0464327952349777e-04,-3.9421432902031484e-03,
+-1.1809996372846854e-02,-2.4881958962339468e-02,-4.4080329517726113e-02,
+-7.0375948522212184e-02,-1.0478819848316334e-01,-1.4838500393210552e-01,
+-2.0228283142472492e-01,-2.6764668954086801e-01,-3.4569012888454154e-01,
+-4.3767524208391251e-01,-5.4491266379130820e-01,-6.6876157068321618e-01,
+-8.1062968146028425e-01,-9.7197325684732050e-01,6.2002170092512188e-02,
+1.7259814228697223e-01,2.6639368827005683e-01,3.4464504512476424e-01,
+4.0856657536465946e-01,4.5933076693387420e-01,4.9806823320710691e-01,
+5.2586771298962276e-01,5.4377607051725363e-01,5.5279829545639814e-01,
+5.5389750290402162e-01,5.4799493338765615e-01,5.3596995286540050e-01,
+5.1866005272592020e-01,4.9686084978844747e-01,4.7132608630278128e-01,
+4.4276762994928731e-01,4.1185547383889798e-01,3.7921773651311241e-01,
+3.4544066194399647e-01,3.1106861953418274e-01,2.7660410411687053e-01,
+2.4250773595582586e-01,2.0919826074538150e-01,1.7705254961043693e-01,
+1.4640559910645834e-01,1.1755053121947867e-01,9.0738593366097575e-02,
+6.6179158393481430e-02,4.4039724579363337e-02,2.4445915632043125e-02,
+7.4814806903873432e-03,-6.8117056761707317e-03,-1.8433643467631100e-02,
+-2.7426207253427037e-02,-3.3873146172425095e-02,-3.7900083932925099e-02,
+-3.9674518812660153e-02,-3.9405823658796635e-02,-3.7345245887934198e-02,
+-3.3785907486105771e-02,-2.9062805008777559e-02,-2.3552809580849043e-02,
+-1.7674666896652980e-02,-1.1888997219955399e-02,-6.6982953839556103e-03,
+-2.6469307912861950e-03,-3.2114741401301217e-04,-3.4906379363519591e-04,
+-3.4006730410851560e-03,-1.0187842836728578e-02,-2.1464315430364422e-02,
+-3.8025707641224926e-02,-6.0709510857975602e-02,-9.0395091038715236e-02,
+-1.2800368871097589e-01,-1.7449841897172291e-01,-2.3088427148735491e-01,
+-2.9820811049370377e-01,-3.7755867479603467e-01,-4.7006657776904603e-01,
+-5.7690430735686959e-01,-6.9928622607307034e-01,-8.3846857100064653e-01,
+5.2474825828596749e-02,1.4607645895836185e-01,2.2545924397405770e-01,
+2.9168638272864200e-01,3.4578563701330722e-01,3.8874932855748057e-01,
+4.2153433902882398e-01,4.4506211003323415e-01,4.6021864311484251e-01,
+4.6785449975601523e-01,4.6878480137735323e-01,4.6378922933769218e-01,
+4.5361202493410246e-01,4.3896198940188924e-01,4.2051248391459239e-01,
+3.9890142958398656e-01,3.7473130746008110e-01,3.4856915853112014e-01,
+3.2094658372358253e-01,2.9235974390218189e-01,2.6326935986986655e-01,
+2.3410071236781960e-01,2.0524364207545887e-01,1.7705254961043693e-01,
+1.4984639552864110e-01,1.2390870032419343e-01,9.9487544429450736e-02,
+7.6795568215004550e-02,5.6009971989681162e-02,3.7272516000541600e-02,
+2.0689520432881636e-02,6.3318654102317851e-03,-5.7650090056426961e-03,
+-1.5601102814741807e-02,-2.3211856078830806e-02,-2.8668148921440206e-02,
+-3.2076301527865780e-02,-3.3578074145168557e-02,-3.3350667082174823e-02,
+-3.1606720709476122e-02,-2.8594315459429254e-02,-2.4596971826156278e-02,
+-1.9933650365544509e-02,-1.4958751695246519e-02,-1.0062116494680140e-02,
+-5.6690255050284577e-03,-2.2401995292398169e-03,-2.7179943202781942e-04,
+-2.9542613987132427e-04,-2.8781206410144478e-03,-8.6223639854665635e-03,
+-1.8166077285002302e-02,-3.2182621713161552e-02,-5.1380798505249459e-02,
+-7.6504848958336424e-02,-1.0833445443125811e-01,-1.4768473634461543e-01,
+-1.9540625618077456e-01,-2.5238501548386694e-01,-3.1954245585978924e-01,
+-3.9783545897620343e-01,-4.8825634656253669e-01,-5.9183288040998150e-01,
+-7.0962826237149557e-01,4.3391684165783317e-02,1.2079132176410212e-01,
+1.8643332592915840e-01,2.4119686335239976e-01,2.8593179516889222e-01,
+3.2145867695732022e-01,3.4856875873998661e-01,3.6802398498281264e-01,
+3.8055699459533798e-01,3.8687112093072074e-01,3.8764039178573739e-01,
+3.8350952940078287e-01,3.7509395045987048e-01,3.6297976609063198e-01,
+3.4772378186431752e-01,3.2985349779579565e-01,3.0986710834355335e-01,
+2.8823350240969603e-01,2.6539226333994748e-01,2.4175366892364991e-01,
+2.1769869139376397e-01,1.9357899742686868e-01,1.6971694814316152e-01,
+1.4640559910645834e-01,1.2390870032419343e-01,1.0246069624741949e-01,
+8.2266725770807625e-02,6.3502622232647354e-02,4.6314913414846615e-02,
+3.0820821542931753e-02,1.7108263286047531e-02,5.2358497569571227e-03,
+-4.7671134879578858e-03,-1.2900626448697494e-02,-1.9193994681643289e-02,
+-2.3705829299558445e-02,-2.6524046971587723e-02,-2.7765869923257469e-02,
+-2.7577825936475620e-02,-2.6135748349531696e-02,-2.3644776057096806e-02,
+-2.0339353510223646e-02,-1.6483230716346498e-02,-1.2369463239281231e-02,
+-8.3204121992253022e-03,-4.6877442727577545e-03,-1.8524316928392182e-03,
+-2.2475224881191025e-04,-2.4428928639963488e-04,-2.3799317077077831e-03,
+-7.1298739712233328e-03,-1.5021616091814849e-02,-2.6611963640732483e-02,
+-4.2487027745607975e-02,-6.3262225090454649e-02,-8.9582277915667419e-02,
+-1.2212121401802278e-01,-1.6158236675067883e-01,-2.0869837502317523e-01,
+-2.6423118330143325e-01,-3.2897204160775573e-01,-4.0374150552082710e-01,
+-4.8938943617571340e-01,-5.8679500026386222e-01,3.4839620583682063e-02,
+9.6984569761900730e-02,1.4968919654535284e-01,1.9365939273217236e-01,
+2.2957752039388879e-01,2.5810241187542715e-01,2.7986936979510801e-01,
+2.9549016704464748e-01,3.0555304678915718e-01,3.1062272246714429e-01,
+3.1124037779051150e-01,3.0792366674455707e-01,3.0116671358797475e-01,
+2.9144011285285387e-01,2.7919092934467926e-01,2.6484269814233130e-01,
+2.4879542459808590e-01,2.3142558433761451e-01,2.1308612325998411e-01,
+1.9410645753765721e-01,1.7479247361649186e-01,1.5542652821574166e-01,
+1.3626744832805571e-01,1.1755053121947867e-01,9.9487544429450736e-02,
+8.2266725770807625e-02,6.6052783329780596e-02,5.0986895465996440e-02,
+3.7186710812477486e-02,2.4746348275641594e-02,1.3736397035302161e-02,
+4.2039165446681181e-03,-3.8275634696560701e-03,-1.0358043007670403e-02,
+-1.5411051795979347e-02,-1.9033649287791832e-02,-2.1296424662921254e-02,
+-2.2293496827785475e-02,-2.2142514415406822e-02,-2.0984655785412087e-02,
+-1.8984629024032529e-02,-1.6330671944103869e-02,-1.3234552085066298e-02,
+-9.9315667129644680e-03,-6.6805428204474993e-03,-3.7638371267689763e-03,
+-1.4873360777869493e-03,-1.8045584596393383e-04,-1.9614233036691076e-04,
+-1.9108711566673264e-03,-5.7246476771410926e-03,-1.2061006970668586e-02,
+-2.1367013842734650e-02,-3.4113262825428592e-02,-5.0793878177444185e-02,
+-7.1926513884079668e-02,-9.8052353657237745e-02,-1.2973611093542559e-01,
+-1.6756602888375483e-01,-2.1215388039394156e-01,-2.6413496808430637e-01,
+-3.2416812429977426e-01,-3.9293571111187475e-01,-4.7114362031874180e-01,
+2.6893099779101703e-02,7.4863493572649986e-02,1.1554679503120724e-01,
+1.4948789007036112e-01,1.7721350174184636e-01,1.9923219023354477e-01,
+2.1603435286948525e-01,2.2809222410984376e-01,2.3585987555094334e-01,
+2.3977321592525414e-01,2.4024999110139333e-01,2.3768978408412522e-01,
+2.3247401501436116e-01,2.2496594116915958e-01,2.1551065696172600e-01,
+2.0443509394141302e-01,1.9204802079372030e-01,1.7864004334029460e-01,
+1.6448360453892974e-01,1.4983298448356663e-01,1.3492430040429326e-01,
+1.1997550666734469e-01,1.0518639477510305e-01,9.0738593366097575e-02,
+7.6795568215004550e-02,6.3502622232647354e-02,5.0986895465996440e-02,
+3.9357365098169339e-02,2.8704845448430660e-02,1.9101987972192092e-02,
+1.0603281261012398e-02,3.2450510425974244e-03,-2.9545398191999084e-03,
+-7.9954913243796000e-03,-1.1895966336794572e-02,-1.4692290584150669e-02,
+-1.6438952658006656e-02,-1.7208604013774220e-02,-1.7092058970717972e-02,
+-1.6198294711955441e-02,-1.4654451284457082e-02,-1.2605831599046269e-02,
+-1.0215901430399299e-02,-7.6662894170453910e-03,-5.1567870613666855e-03,
+-2.9053487295982450e-03,-1.1480916518280537e-03,-1.3929592199701801e-04,
+-1.5140449789896593e-04,-1.4750232011806474e-03,-4.4189207173417344e-03,
+-9.3100285957348206e-03,-1.6493441249565421e-02,-2.6332415955891975e-02,
+-3.9208372855625839e-02,-5.5520894953531297e-02,-7.5687728118225550e-02,
+-1.0014478108217872e-01,-1.2934612544171387e-01,-1.6376399565700694e-01,
+-2.0388878905208685e-01,-2.5022906581483539e-01,-3.0331154899698731e-01,
+-3.6368112451413026e-01,1.9614175666049505e-02,5.4600835380426815e-02,
+8.4272737393860098e-02,1.0902728803563377e-01,1.2924864675738945e-01,
+1.4530772613312593e-01,1.5756219185919917e-01,1.6635646275432237e-01,
+1.7202171075956585e-01,1.7487586093835716e-01,1.7522359147648103e-01,
+1.7335633368207937e-01,1.6955227198565126e-01,1.6407634394005299e-01,
+1.5718024022049804e-01,1.4910240462455704e-01,1.4006803407215784e-01,
+1.3028907860558547e-01,1.1996424138948214e-01,1.0927897871084724e-01,
+9.8405499979037359e-02,8.7502767725766262e-02,7.6716497605104905e-02,
+6.6179158393481430e-02,5.6009971989681162e-02,4.6314913414846615e-02,
+3.7186710812477486e-02,2.8704845448430660e-02,2.0935551710920208e-02,
+1.3931817110517386e-02,7.7333822801506358e-03,2.3667409751055857e-03,
+-2.1548599269749502e-03,-5.8314204260909719e-03,-8.6761873998852934e-03,
+-1.0715654603643543e-02,-1.1989562670294163e-02,-1.2550899110408409e-02,
+-1.2465898312200352e-02,-1.1814041541526876e-02,-1.0688056941887680e-02,
+-9.1939195344252767e-03,-7.4508512179249919e-03,-5.5913207688149669e-03,
+-3.7610438411661562e-03,-2.1189829666923288e-03,-8.3734755475006750e-04,
+-1.0159389233876936e-04,-1.1042514410064541e-04,-1.0757913523207208e-03,
+-3.2228894369268346e-03,-6.7901631954896402e-03,-1.2029303303222605e-02,
+-1.9205247312982010e-02,-2.8596179655266951e-02,-4.0493531638219338e-02,
+-5.5201981447623893e-02,-7.3039454146908156e-02,-9.4337121677142477e-02,
+-1.1943940285704002e-01,-1.4870396338295677e-01,-1.8250171582889152e-01,
+-2.2121681964648587e-01,-2.6524668116502426e-01,1.3052491375731279e-02,
+3.6334788932492756e-02,5.6080316439022226e-02,7.2553532762924533e-02,
+8.6010081476217692e-02,9.6696790855332893e-02,1.0485167388111449e-01,
+1.1070392823882003e-01,1.1447393631812020e-01,1.1637326521309888e-01,
+1.1660466672225311e-01,1.1536207734849313e-01,1.1283061829914232e-01,
+1.0918659548593723e-01,1.0459749952502762e-01,9.9222005736976371e-02,
+9.3209974146759578e-02,8.6702449483766486e-02,7.9831661181799518e-02,
+7.2721023379074268e-02,6.5485134918219501e-02,5.8229779346277155e-02,
+5.1051924914702340e-02,4.4039724579363337e-02,3.7272516000541600e-02,
+3.0820821542931753e-02,2.4746348275641594e-02,1.9101987972192092e-02,
+1.3931817110517386e-02,9.2710968729647902e-03,5.1462731462947886e-03,
+1.5749765216810374e-03,-1.4339777052896352e-03,-3.8805895346172292e-03,
+-5.7736742618885728e-03,-7.1308624782773222e-03,-7.9786000705439619e-03,
+-8.3521482210358045e-03,-8.2955834076869905e-03,-7.8617974040184890e-03,
+-7.1124972791380969e-03,-6.1182053977404394e-03,-4.9582594201069696e-03,
+-3.7208123021059691e-03,-2.5028322951925475e-03,-1.4101029464086423e-03,
+-5.5722309838301953e-04,-6.7606889331273123e-05,-7.3483753055825218e-05,
+-7.1589841894592610e-04,-2.1447109119776542e-03,-4.5185965527139160e-03,
+-8.0050459573044463e-03,-1.2780365037485808e-02,-1.9029675000581392e-02,
+-2.6946912349501417e-02,-3.6734828882742931e-02,-4.8604991694389810e-02,
+-6.2777783174112756e-02,-7.9482401007169301e-02,-9.8956858174403806e-02,
+-1.2144798295224746e-01,-1.4721141891271827e-01,-1.7651162492342110e-01,
+7.2452792565513846e-03,2.0168999539293964e-02,3.1129501770976731e-02,
+4.0273583853434047e-02,4.7743150425105796e-02,5.3675212861037380e-02,
+5.8201889272879725e-02,6.1450404508889278e-02,6.3543090153928006e-02,
+6.4597384529463397e-02,6.4725832693568464e-02,6.4036086440921736e-02,
+6.2630904302807267e-02,6.0608151547114630e-02,5.8060800178338923e-02,
+5.5076928937580760e-02,5.1739723302546281e-02,4.8127475487547144e-02,
+4.4313584443500531e-02,4.0366555857929143e-02,3.6350002154961203e-02,
+3.2322642495330456e-02,2.8338302776376167e-02,2.4445915632043125e-02,
+2.0689520432881636e-02,1.7108263286047531e-02,1.3736397035302161e-02,
+1.0603281261012398e-02,7.7333822801506358e-03,5.1462731462947886e-03,
+2.8566336496282929e-03,8.7425031694010613e-04,-7.9598358837529304e-04,
+-2.1540680663179046e-03,-3.2048963802822072e-03,-3.9582550570571584e-03,
+-4.4288238868261942e-03,-4.6361759231672295e-03,-4.6047774830526578e-03,
+-4.3639881468493513e-03,-3.9480607583186611e-03,-3.3961414246164168e-03,
+-2.7522695162929267e-03,-2.0653776672929780e-03,-1.3892917749558364e-03,
+-7.8273100001524654e-04,-3.0930776659943149e-04,-3.7527762231093220e-05,
+-4.0789937827412359e-05,-3.9738650770004824e-04,-1.1905029495551389e-03,
+-2.5082180044933011e-03,-4.4435036770096303e-03,-7.0942252349937007e-03,
+-1.0563141209729565e-02,-1.4957903395895755e-02,-2.0391056851565281e-02,
+-2.6980039898205632e-02,-3.4847184120678776e-02,-4.4119714367241158e-02,
+-5.4929748749543705e-02,-6.7414298642631820e-02,-8.1715268684945386e-02,
+-9.7979456778318763e-02,2.2173608741127282e-03,6.1725640744612065e-03,
+9.5269397925790145e-03,1.2325414374629418e-02,1.4611416621903572e-02,
+1.6426877790820527e-02,1.7812231592927219e-02,1.8806414194898480e-02,
+1.9446864218537030e-02,1.9769522740773482e-02,1.9808833293666339e-02,
+1.9597741864401996e-02,1.9167696895294739e-02,1.8548649283786744e-02,
+1.7769052382448081e-02,1.6855861998976707e-02,1.5834536396198473e-02,
+1.4729036292067121e-02,1.3561824859664284e-02,1.2353867727199486e-02,
+1.1124632978010141e-02,9.8920911505615550e-03,8.6727152384469264e-03,
+7.4814806903873432e-03,6.3318654102317851e-03,5.2358497569571227e-03,
+4.2039165446681181e-03,3.2450510425974244e-03,2.3667409751055857e-03,
+1.5749765216810374e-03,8.7425031694010613e-04,2.6755745062700953e-04,
+-2.4360453238614355e-04,-6.5923563209935310e-04,-9.8083339338472797e-04,
+-1.2113929059864859e-03,-1.3554068045209533e-03,-1.4188652684765657e-03,
+-1.4092560222138673e-03,-1.3355643349655111e-03,-1.2082730208362591e-03,
+-1.0393624388029821e-03,-8.4231049271465963e-04,-6.3209263129238025e-04,
+-4.2518184812934123e-04,-2.3954868169084875e-04,-9.4661215314317815e-05,
+-1.1485077209272276e-05,-1.2483440457344841e-05,-1.2161702301227706e-04,
+-3.6434408769991933e-04,-7.6762044221823089e-04,-1.3598994391372798e-03,
+-2.1711319758992431e-03,-3.2327664948184065e-03,-4.5777489830811646e-03,
+-6.2405229727460210e-03,-8.2570295407435879e-03,-1.0664707308876586e-02,
+-1.3502492443819847e-02,-1.6810818657120308e-02,-2.0631617205197017e-02,
+-2.5008316889341131e-02,-2.9985844055715916e-02,-2.0188529887832374e-03,
+-5.6199690251901302e-03,-8.6740462947432206e-03,-1.1221989139755806e-02,
+-1.3303338424464073e-02,-1.4956271535027099e-02,-1.6217602379526852e-02,
+-1.7122781387968189e-02,-1.7705895512278857e-02,-1.7999668226309495e-02,
+-1.8035459525833630e-02,-1.7843265928547680e-02,-1.7451720474070953e-02,
+-1.6888092723945647e-02,-1.6178288761636850e-02,-1.5346851192532540e-02,
+-1.4416959143943586e-02,-1.3410428265103747e-02,-1.2347710727169670e-02,
+-1.1247895223220894e-02,-1.0128706968259849e-02,-9.0065076992118520e-03,
+-7.8962956749251134e-03,-6.8117056761707317e-03,-5.7650090056426961e-03,
+-4.7671134879578858e-03,-3.8275634696560701e-03,-2.9545398191999084e-03,
+-2.1548599269749502e-03,-1.4339777052896352e-03,-7.9598358837529304e-04,
+-2.4360453238614355e-04,2.2179598460070338e-04,6.0021796258524773e-04,
+8.9302487964459942e-04,1.1029436919329783e-03,1.2340648336817139e-03,
+1.2918422171992461e-03,1.2830932328711242e-03,1.2159987491600077e-03,
+1.1001031126056660e-03,9.4631414782497814e-04,7.6690315751193339e-04,
+5.7550492243763074e-04,3.8711770145027913e-04,2.1810323147519739e-04,
+8.6186727514814265e-05,1.0456882648668397e-05,1.1365868033408333e-05,
+1.1072933290279252e-04,3.3172640456768931e-04,6.9889968841607697e-04,
+1.2381552679130436e-03,1.9767627046007874e-03,2.9433550380986162e-03,
+4.1679287861029479e-03,5.6818439443873103e-03,7.5178239868023411e-03,
+9.7099558652757878e-03,1.2293690009812508e-02,1.5305840328494469e-02,
+1.8784584207480748e-02,2.2769462511007532e-02,2.7301379581388119e-02,
+-5.4633623321365121e-03,-1.5208599759660046e-02,-2.3473456490989975e-02,
+-3.0368626689721623e-02,-3.6001114713997140e-02,-4.0474235116505497e-02,
+-4.3887612644482488e-02,-4.6337182239710728e-02,-4.7915189038519657e-02,
+-4.8710188371785534e-02,-4.8807045764931445e-02,-4.8286936937927294e-02,
+-4.7227347805289810e-02,-4.5702074476082544e-02,-4.3781223253915869e-02,
+-4.1531210636946980e-02,-3.9014763317879897e-02,-3.6290918183965459e-02,
+-3.3415022317001331e-02,-3.0438732993331996e-02,-2.7410017683848764e-02,
+-2.4373154053989765e-02,-2.1368729963739952e-02,-1.8433643467631100e-02,
+-1.5601102814741807e-02,-1.2900626448697494e-02,-1.0358043007670403e-02,
+-7.9954913243796000e-03,-5.8314204260909719e-03,-3.8805895346172292e-03,
+-2.1540680663179046e-03,-6.5923563209935310e-04,6.0021796258524773e-04,
+1.6242927177358979e-03,2.4166784388057749e-03,2.9847547367012339e-03,
+3.3395910277818075e-03,3.4959465338602058e-03,3.4722702822023166e-03,
+3.2907011055272051e-03,2.9770676420071140e-03,2.5608883352674638e-03,
+2.0753714343868523e-03,1.5574149938970550e-03,1.0476068737830246e-03,
+5.9022473948289189e-04,2.3323606188796475e-04,2.8298117342728801e-05,
+3.0757987644847162e-05,2.9965256004516050e-04,8.9770852724768702e-04,
+1.8913423874096225e-03,3.3506604441413401e-03,5.3494588065063908e-03,
+7.9652233890215030e-03,1.1279129911656582e-02,1.5376043899834713e-02,
+2.0344520684432155e-02,2.6276805401778347e-02,3.3268832993655906e-02,
+4.1420228207300624e-02,5.0834305595401474e-02,6.1618069516100604e-02,
+7.3882214132993340e-02,-8.1285779387485491e-03,-2.2627876565763927e-02,
+-3.4924613997588949e-02,-4.5183484809001584e-02,-5.3563693755620534e-02,
+-6.0218955773905236e-02,-6.5297495981155862e-02,-6.8942049675513317e-02,
+-7.1289862335959242e-02,-7.2472689622316011e-02,-7.2616797375246733e-02,
+-7.1842961616255252e-02,-7.0266468547686145e-02,-6.7997114552724724e-02,
+-6.5139206195397037e-02,-6.1791560220569863e-02,-5.8047503553950719e-02,
+-5.3994873302087854e-02,-4.9716016752370251e-02,-4.5287791373027630e-02,
+-4.0781564813130444e-02,-3.6263214902589880e-02,-3.1793129652157859e-02,
+-2.7426207253427037e-02,-2.3211856078830806e-02,-1.9193994681643289e-02,
+-1.5411051795979347e-02,-1.1895966336794572e-02,-8.6761873998852934e-03,
+-5.7736742618885728e-03,-3.2048963802822072e-03,-9.8083339338472797e-04,
+8.9302487964459942e-04,2.4166784388057749e-03,3.5956171032580642e-03,
+4.4408205113199983e-03,4.9687581204693743e-03,5.2013892073432544e-03,
+5.1661628677379667e-03,4.8960180166091050e-03,4.4293833880715283e-03,
+3.8101775353993617e-03,3.0878088310259955e-03,2.3171754665440858e-03,
+1.5586654527055543e-03,8.7815661942158840e-04,3.4701661576264087e-04,
+4.2102909958430246e-05,4.5762789397940651e-05,4.4583336062942180e-04,
+1.3356415493603890e-03,2.8140041004576233e-03,4.9852275779471711e-03,
+7.9591083650143446e-03,1.1850932664003722e-02,1.6781476496419145e-02,
+2.2877005702923725e-02,3.0269275943339835e-02,3.9095532696649116e-02,
+4.9498511260992473e-02,6.1626436753670077e-02,7.5633024111141367e-02,
+9.1677478089025044e-02,1.0992449326209908e-01,-1.0039321374222254e-02,
+-2.7946896317132541e-02,-4.3134165217395548e-02,-5.5804536565062790e-02,
+-6.6154638567184065e-02,-7.4374319147807455e-02,-8.0646645947979323e-02,
+-8.5147906325744316e-02,-8.8047607356145363e-02,-8.9508475831223677e-02,
+-8.9686458260018753e-02,-8.8730720868568369e-02,-8.6783649599908586e-02,
+-8.3980850114073746e-02,-8.0451147788096478e-02,-7.6316587716007689e-02,
+-7.1692434708836572e-02,-6.6687173294610602e-02,-6.1402507718355537e-02,
+-5.5933361942095416e-02,-5.0367879644852565e-02,-4.4787424222647587e-02,
+-3.9266578788499373e-02,-3.3873146172425095e-02,-2.8668148921440206e-02,
+-2.3705829299558445e-02,-1.9033649287791832e-02,-1.4692290584150669e-02,
+-1.0715654603643543e-02,-7.1308624782773222e-03,-3.9582550570571584e-03,
+-1.2113929059864859e-03,1.1029436919329783e-03,2.9847547367012339e-03,
+4.4408205113199983e-03,5.4847015817927058e-03,6.1367387971245080e-03,
+6.4240532893222735e-03,6.3805464733945882e-03,6.0469000473517553e-03,
+5.4705759922057950e-03,4.7058165719704448e-03,3.8136443336611592e-03,
+2.8618621072951100e-03,1.9250530058911863e-03,1.0845804254699942e-03,
+4.2858804505385706e-04,5.1999826666815352e-05,5.6520015334626805e-05,
+5.5063313908476630e-04,1.6496040089464259e-03,3.4754777189505148e-03,
+6.1570796461296595e-03,9.8300154505182036e-03,1.4636671075152208e-02,
+2.0726212746069450e-02,2.8254586972309426e-02,3.7384520545913347e-02,
+4.8285520541924143e-02,6.1133874318386461e-02,7.6112649516346664e-02,
+9.3411694059852834e-02,1.1322763615595477e-01,1.3576388429470398e-01,
+-1.1232824986961987e-02,-3.1269304324212044e-02,-4.8262079754692877e-02,
+-6.2438741559105893e-02,-7.4019293675462450e-02,-8.3216153699083861e-02,
+-9.0234152882601393e-02,-9.5270536135956263e-02,-9.8514962026399644e-02,
+-1.0014950277849266e-01,-1.0034864427410639e-01,-9.9279286052421867e-02,
+-9.7100741309930072e-02,-9.3964736900431944e-02,-9.0015413335038374e-02,
+-8.5389324782170206e-02,-8.0215439067558236e-02,-7.4615137674243215e-02,
+-6.8702215742575845e-02,-6.2582882070216783e-02,-5.6355759112136639e-02,
+-5.0111882980615974e-02,-4.3934703445245304e-02,-3.7900083932925099e-02,
+-3.2076301527865780e-02,-2.6524046971587723e-02,-2.1296424662921254e-02,
+-1.6438952658006656e-02,-1.1989562670294163e-02,-7.9786000705439619e-03,
+-4.4288238868261942e-03,-1.3554068045209533e-03,1.2340648336817139e-03,
+3.3395910277818075e-03,4.9687581204693743e-03,6.1367387971245080e-03,
+6.8662920858173493e-03,7.1877633573080857e-03,7.1390843250469516e-03,
+6.7657730451742282e-03,6.1209339165202437e-03,5.2652576806053730e-03,
+4.2670214216400382e-03,3.2020885665247079e-03,2.1539088848498977e-03,
+1.2135184888961703e-03,4.7953983363413499e-04,5.8181716724448052e-05,
+6.3239278517812636e-05,6.1609400205497877e-04,1.8457137130667434e-03,
+3.8886525799739502e-03,6.8890511138874899e-03,1.0998636168608300e-02,
+1.6376720940627365e-02,2.3190204969125716e-02,3.1613574135974432e-02,
+4.1828900665734636e-02,5.4025843125657502e-02,6.8401646425684248e-02,
+8.5161141818446140e-02,1.0451674689926449e-01,1.2668846560615066e-01,
+1.5190388821980605e-01,-1.1758731908173559e-02,-3.2733294334263974e-02,
+-5.0521650415191743e-02,-6.5362045926065093e-02,-7.7484785116155308e-02,
+-8.7112230708896732e-02,-9.4458803901886768e-02,-9.9730984366885878e-02,
+-1.0312731024981758e-01,-1.0483837817076846e-01,-1.0504684322398816e-01,
+-1.0392741897788937e-01,-1.0164687747504786e-01,-9.8364049232202433e-02,
+-9.4229823240254973e-02,-8.9387146964270414e-02,-8.3971026343476751e-02,
+-7.8108525791265038e-02,-7.1918768195189386e-02,-6.5512934916966969e-02,
+-5.8994265792478018e-02,-5.2458059131765822e-02,-4.5991671719036731e-02,
+-3.9674518812660153e-02,-3.3578074145168557e-02,-2.7765869923257469e-02,
+-2.2293496827785475e-02,-1.7208604013774220e-02,-1.2550899110408409e-02,
+-8.3521482210358045e-03,-4.6361759231672295e-03,-1.4188652684765657e-03,
+1.2918422171992461e-03,3.4959465338602058e-03,5.2013892073432544e-03,
+6.4240532893222735e-03,7.1877633573080857e-03,7.5242855146484544e-03,
+7.4733273905280839e-03,7.0825381399686194e-03,6.4075084438286467e-03,
+5.5117705088036928e-03,4.4667980674262253e-03,3.3520063780656528e-03,
+2.2547522249283247e-03,1.2703339180575313e-03,5.0199129333350356e-04,
+6.0905712473413587e-05,6.6200063031374157e-05,6.4493875839843895e-04,
+1.9321277378026025e-03,4.0707144663088002e-03,7.2115879348189083e-03,
+1.1513578660071744e-02,1.7143458684643065e-02,2.4275941576945570e-02,
+3.3093682431228899e-02,4.3787277867579633e-02,5.6555266031921292e-02,
+7.1604126596014339e-02,8.9148280757456178e-02,1.0941009123968115e-01,
+1.3261986229196054e-01,1.5901583968940258e-01,-1.1679096051864235e-02,
+-3.2511608531365255e-02,-5.0179493206030656e-02,-6.4919382334608144e-02,
+-7.6960020433887166e-02,-8.6522264278698913e-02,-9.3819082901916317e-02,
+-9.9055557594454058e-02,-1.0242888190526855e-01,-1.0412836164135797e-01,
+-1.0433541486776221e-01,-1.0322357190756293e-01,-1.0095847534188351e-01,
+-9.7697880009889104e-02,-9.3591653008786579e-02,-8.8781773693824562e-02,
+-8.3402333678293417e-02,-7.7579536833525253e-02,-7.1431699288893924e-02,
+-6.5069249431815024e-02,-5.8594727907745892e-02,-5.2102787620185609e-02,
+-4.5680193730675001e-02,-3.9405823658796635e-02,-3.3350667082174823e-02,
+-2.7577825936475620e-02,-2.2142514415406822e-02,-1.7092058970717972e-02,
+-1.2465898312200352e-02,-8.2955834076869905e-03,-4.6047774830526578e-03,
+-1.4092560222138673e-03,1.2830932328711242e-03,3.4722702822023166e-03,
+5.1661628677379667e-03,6.3805464733945882e-03,7.1390843250469516e-03,
+7.4733273905280839e-03,7.4227143796292694e-03,7.0345717441000488e-03,
+6.3641136776482199e-03,5.4744421159398371e-03,4.4365467365992117e-03,
+3.3293049592089119e-03,2.2394819453097625e-03,1.2617305984008453e-03,
+4.9859156393949888e-04,6.0493229341318511e-05,6.5751723980156385e-05,
+6.4057091918812148e-04,1.9190424282555796e-03,4.0431456064311533e-03,
+7.1627475509217220e-03,1.1435603100892422e-02,1.7027354837466646e-02,
+2.4111533083726044e-02,3.2869555904710523e-02,4.3490729107418247e-02,
+5.6172246240805634e-02,7.1119188595787364e-02,8.8544525205236368e-02,
+1.0866911284398384e-01,1.3172169602881922e-01,1.5793890701849023e-01,
+-1.1068382114842734e-02,-3.0811537536408196e-02,-4.7555547335775827e-02,
+-6.1524669987136349e-02,-7.2935688682207456e-02,-8.1997911330233819e-02,
+-8.8913170557987087e-02,-9.3875823709765882e-02,-9.7072752847395805e-02,
+-9.8683364750229430e-02,-9.8879590915146309e-02,-9.7825887556552971e-02,
+-9.5679235606382917e-02,-9.2589140714096629e-02,-8.8697633246681562e-02,
+-8.4139268288652147e-02,-7.9041125642049792e-02,-7.3522809826442881e-02,
+-6.7696450078926773e-02,-6.1666700354123805e-02,-5.5530739324183287e-02,
+-4.9378270378781508e-02,-4.3291521625121732e-02,-3.7345245887934198e-02,
+-3.1606720709476122e-02,-2.6135748349531696e-02,-2.0984655785412087e-02,
+-1.6198294711955441e-02,-1.1814041541526876e-02,-7.8617974040184890e-03,
+-4.3639881468493513e-03,-1.3355643349655111e-03,1.2159987491600077e-03,
+3.2907011055272051e-03,4.8960180166091050e-03,6.0469000473517553e-03,
+6.7657730451742282e-03,7.0825381399686194e-03,7.0345717441000488e-03,
+6.6667255524066604e-03,6.0313265421996221e-03,5.1881769732631255e-03,
+4.2045543878543867e-03,3.1552116107036454e-03,2.1223767490141654e-03,
+1.1957531924622344e-03,4.7251961319716429e-04,5.7329965841290687e-05,
+6.2313487489973340e-05,6.0707469771159595e-04,1.8186933985475662e-03,
+3.8317246745123157e-03,6.7881988925933001e-03,1.0837621702250999e-02,
+1.6136974035418916e-02,2.2850712106503579e-02,3.1150767412384539e-02,
+4.1216546732414372e-02,5.3234932128418677e-02,6.7400280944696078e-02,
+8.3914425808018223e-02,1.0298667462762978e-01,1.2483381059524845e-01,
+1.4968009218506495e-01,-1.0013465576719227e-02,-2.7874920407100490e-02,
+-4.3023075214421169e-02,-5.5660814619784560e-02,-6.5984260423590513e-02,
+-7.4182771605535436e-02,-8.0438944324612294e-02,-8.4928611919110608e-02,
+-8.7820844906616458e-02,-8.9277950984012477e-02,-8.9455475027477860e-02,
+-8.8502199092488354e-02,-8.6560142413816266e-02,-8.3764561405530458e-02,
+-8.0243949660996350e-02,-7.6120037952875919e-02,-7.1507794233127697e-02,
+-6.6515423633006776e-02,-6.1244368463064802e-02,-5.5789308213149980e-02,
+-5.0238159552407069e-02,-4.4672076329277388e-02,-3.9165449571498812e-02,
+-3.3785907486105771e-02,-2.8594315459429254e-02,-2.3644776057096806e-02,
+-1.8984629024032529e-02,-1.4654451284457082e-02,-1.0688056941887680e-02,
+-7.1124972791380969e-03,-3.9480607583186611e-03,-1.2082730208362591e-03,
+1.1001031126056660e-03,2.9770676420071140e-03,4.4293833880715283e-03,
+5.4705759922057950e-03,6.1209339165202437e-03,6.4075084438286467e-03,
+6.3641136776482199e-03,6.0313265421996221e-03,5.4564867824069552e-03,
+4.6936969638977644e-03,3.8038224730030379e-03,2.8544915167572071e-03,
+1.9200951228981467e-03,1.0817871398671741e-03,4.2748423680905034e-04,
+5.1865903571979288e-05,5.6374450707608048e-05,5.4921500947102686e-04,
+1.6453555318207691e-03,3.4665267904188113e-03,6.1412223786305731e-03,
+9.8046987105249173e-03,1.4598975020874150e-02,2.0672833365154020e-02,
+2.8181818619543719e-02,3.7288238480925884e-02,4.8161163466886592e-02,
+6.0976426915715365e-02,7.5916624986405168e-02,9.3171116658652409e-02,
+1.1293602373285694e-01,1.3541423083012205e-01,-8.6136326999053381e-03,
+-2.3978144637965215e-02,-3.7008662453388297e-02,-4.7879708502421181e-02,
+-5.6759987729435579e-02,-6.3812387666928316e-02,-6.9193978435521331e-02,
+-7.3056012743961674e-02,-7.5543925889121510e-02,-7.6797335755998120e-02,
+-7.6950042817713893e-02,-7.6130030135516336e-02,-7.4459463358778066e-02,
+-7.2054690724996817e-02,-6.9026243059795434e-02,-6.5478833776921874e-02,
+-6.1511358878249212e-02,-5.7216896953775631e-02,-5.2682709181624432e-02,
+-4.7990239328044026e-02,-4.3215113747407941e-02,-3.8427141382214813e-02,
+-3.3690313763088398e-02,-2.9062805008777559e-02,-2.4596971826156278e-02,
+-2.0339353510223646e-02,-1.6330671944103869e-02,-1.2605831599046269e-02,
+-9.1939195344252767e-03,-6.1182053977404394e-03,-3.3961414246164168e-03,
+-1.0393624388029821e-03,9.4631414782497814e-04,2.5608883352674638e-03,
+3.8101775353993617e-03,4.7058165719704448e-03,5.2652576806053730e-03,
+5.5117705088036928e-03,5.4744421159398371e-03,5.1881769732631255e-03,
+4.6936969638977644e-03,4.0375413828428464e-03,3.2720669369723510e-03,
+2.4554477450351442e-03,1.6516753376549786e-03,9.3055865733049359e-04,
+3.6772405843521483e-04,4.4615307217554800e-05,4.8493581800812535e-05,
+4.7243747218317367e-04,1.4153429802377104e-03,2.9819235197123817e-03,
+5.2827099162300328e-03,8.4340504072883959e-03,1.2558110642260090e-02,
+1.7782873682392619e-02,2.4242140000808376e-02,3.2075527482504640e-02,
+4.1428471424353575e-02,5.2452224535102232e-02,6.5303856935372551e-02,
+8.0146256157661355e-02,9.7148127146340357e-02,1.1648399225765615e-01,
+-6.9805805296141443e-03,-1.9432146160340835e-02,-2.9992217865526527e-02,
+-3.8802230438648166e-02,-4.5998904180066802e-02,-5.1714244897027584e-02,
+-5.6075543903659764e-02,-5.9205378020976696e-02,-6.1221609576875835e-02,
+-6.2237386406138739e-02,-6.2361141850431068e-02,-6.1696594758302581e-02,
+-6.0342749485187142e-02,-5.8393895893402714e-02,-5.5939609352151365e-02,
+-5.3064750737519262e-02,-4.9849466432476675e-02,-4.6369188326877975e-02,
+-4.2694633817461636e-02,-3.8891805807850233e-02,-3.5021992708550442e-02,
+-3.1141768436953043e-02,-2.7302992417332916e-02,-2.3552809580849043e-02,
+-1.9933650365544509e-02,-1.6483230716346498e-02,-1.3234552085066298e-02,
+-1.0215901430399299e-02,-7.4508512179249919e-03,-4.9582594201069696e-03,
+-2.7522695162929267e-03,-8.4231049271465963e-04,7.6690315751193339e-04,
+2.0753714343868523e-03,3.0878088310259955e-03,3.8136443336611592e-03,
+4.2670214216400382e-03,4.4667980674262253e-03,4.4365467365992117e-03,
+4.2045543878543867e-03,3.8038224730030379e-03,3.2720669369723510e-03,
+2.6517182178054099e-03,1.9899212466611971e-03,1.3385354478145928e-03,
+7.5413473865637570e-04,2.9800752969322275e-04,3.6156724547709018e-05,
+3.9299719958307833e-05,3.8286840577939074e-04,1.1470091649812275e-03,
+2.4165828736499861e-03,4.2811649009877328e-03,6.8350451093124320e-03,
+1.0177227854057946e-02,1.4411431983774037e-02,1.9646090840126362e-02,
+2.5994352257896480e-02,3.3574078564981846e-02,4.2507846582395814e-02,
+5.2922947624267636e-02,6.4951387497842461e-02,7.8729886503481339e-02,
+9.4399879434661216e-02,-5.2384168938601761e-03,-1.4582409342381197e-02,
+-2.2506973465112878e-02,-2.9118245765801021e-02,-3.4518824864733233e-02,
+-3.8807771498738930e-02,-4.2080608521189333e-02,-4.4429320901997471e-02,
+-4.5942355727618178e-02,-4.6704622201048096e-02,-4.6797491641825673e-02,
+-4.6298797486031162e-02,-4.5282835286286627e-02,-4.3820362711755934e-02,
+-4.1978599548144757e-02,-3.9821227697700579e-02,-3.7408391179212686e-02,
+-3.4796696128012172e-02,-3.2039210795971940e-02,-2.9185465551506695e-02,
+-2.6281452879572953e-02,-2.3369627381669034e-02,-2.0488905775835065e-02,
+-1.7674666896652980e-02,-1.4958751695246519e-02,-1.2369463239281231e-02,
+-9.9315667129644680e-03,-7.6662894170453910e-03,-5.5913207688149669e-03,
+-3.7208123021059691e-03,-2.0653776672929780e-03,-6.3209263129238025e-04,
+5.7550492243763074e-04,1.5574149938970550e-03,2.3171754665440858e-03,
+2.8618621072951100e-03,3.2020885665247079e-03,3.3520063780656528e-03,
+3.3293049592089119e-03,3.1552116107036454e-03,2.8544915167572071e-03,
+2.4554477450351442e-03,1.9899212466611971e-03,1.4932908562172997e-03,
+1.0044732917435795e-03,5.6592315473835697e-04,2.2363293015814634e-04,
+2.7132986417655047e-05,2.9491575389783975e-05,2.8731483240562739e-04,
+8.6074677625447293e-04,1.8134693091838017e-03,3.2127022168992880e-03,
+5.1292031685647999e-03,7.6372677168023984e-03,1.0814729297692338e-02,
+1.4742959230773067e-02,1.9506866719041227e-02,2.5194898848951652e-02,
+3.1899040590417371e-02,3.9714814796809605e-02,4.8741282204957770e-02,
+5.9081041435149473e-02,7.0840228991130516e-02,-3.5236604034594166e-03,
+-9.8089669890555342e-03,-1.5139484467852071e-02,-1.9586606354948799e-02,
+-2.3219346381608830e-02,-2.6104338495258617e-02,-2.8305836859487954e-02,
+-2.9885715854049977e-02,-3.0903470074861161e-02,-3.1416214334001324e-02,
+-3.1478683659713624e-02,-3.1143233296404560e-02,-3.0459838704643971e-02,
+-2.9476095561165039e-02,-2.8237219758864285e-02,-2.6786047406801572e-02,
+-2.5163034830200104e-02,-2.3406258570446425e-02,-2.1551415385090422e-02,
+-1.9631822247845321e-02,-1.7678416348587689e-02,-1.5719755093357435e-02,
+-1.3782016104357808e-02,-1.1888997219955399e-02,-1.0062116494680140e-02,
+-8.3204121992253022e-03,-6.6805428204474993e-03,-5.1567870613666855e-03,
+-3.7610438411661562e-03,-2.5028322951925475e-03,-1.3892917749558364e-03,
+-4.2518184812934123e-04,3.8711770145027913e-04,1.0476068737830246e-03,
+1.5586654527055543e-03,1.9250530058911863e-03,2.1539088848498977e-03,
+2.2547522249283247e-03,2.2394819453097625e-03,2.1223767490141654e-03,
+1.9200951228981467e-03,1.6516753376549786e-03,1.3385354478145928e-03,
+1.0044732917435795e-03,6.7566649164518822e-04,3.8067245355932755e-04,
+1.5042836736256504e-04,1.8251206768127304e-05,1.9837729325900000e-05,
+1.9326447642242783e-04,5.7898777328091455e-04,1.2198437289612230e-03,
+2.1610482363598749e-03,3.4501969722100512e-03,5.1372653970815918e-03,
+7.2746087553809957e-03,9.9169620753514209e-03,1.3121440169072685e-02,
+1.6947537632461263e-02,2.1457128845270290e-02,2.6714467971089562e-02,
+3.2786188957345530e-02,3.9741305535301308e-02,4.7651211220056666e-02,
+-1.9852404520293021e-03,-5.5264003421484631e-03,-8.5296292908765281e-03,
+-1.1035150610894107e-02,-1.3081846837792455e-02,-1.4707259730073474e-02,
+-1.5947590269149714e-02,-1.6837698659344369e-02,-1.7411104327891280e-02,
+-1.7699985924934936e-02,-1.7735181323530469e-02,-1.7546187619643661e-02,
+-1.7161161132150937e-02,-1.6606917402839372e-02,-1.5908931196406684e-02,
+-1.5091336500461239e-02,-1.4176926525522049e-02,-1.3187153705018773e-02,
+-1.2142129695291715e-02,-1.1060625375591826e-02,-9.9600708480807043e-03,
+-8.8565554378305933e-03,-7.7648276928243831e-03,-6.6982953839556103e-03,
+-5.6690255050284577e-03,-4.6877442727577545e-03,-3.7638371267689763e-03,
+-2.9053487295982450e-03,-2.1189829666923288e-03,-1.4101029464086423e-03,
+-7.8273100001524654e-04,-2.3954868169084875e-04,2.1810323147519739e-04,
+5.9022473948289189e-04,8.7815661942158840e-04,1.0845804254699942e-03,
+1.2135184888961703e-03,1.2703339180575313e-03,1.2617305984008453e-03,
+1.1957531924622344e-03,1.0817871398671741e-03,9.3055865733049359e-04,
+7.5413473865637570e-04,5.6592315473835697e-04,3.8067245355932755e-04,
+2.1447196019153125e-04,8.4751776796565537e-05,1.0282782625381515e-05,
+1.1176634018283949e-05,1.0888576440493125e-04,3.2620338430433549e-04,
+6.8726348132486237e-04,1.2175408201642313e-03,1.9438509426095152e-03,
+2.8943501675371408e-03,4.0985355909128884e-03,5.5872450857918921e-03,
+7.3926573023186393e-03,9.5482916677269714e-03,1.2089008386340083e-02,
+1.5051008439570523e-02,1.8471833585920194e-02,2.2390366360980352e-02,
+2.6846830077431605e-02,-7.8449721598872202e-04,-2.1838390802599861e-03,
+-3.3706095527463731e-03,-4.3607034721730997e-03,-5.1694858493078755e-03,
+-5.8117918669609026e-03,-6.3019268799848760e-03,-6.6536664152749836e-03,
+-6.8802561717689059e-03,-6.9944120204468163e-03,-7.0083200043313809e-03,
+-6.9336363384877586e-03,-6.7814874100236011e-03,-6.5624697780890529e-03,
+-6.2866501738767511e-03,-5.9635655006218258e-03,-5.6022228336018998e-03,
+-5.2110994201370886e-03,-4.7981426795900006e-03,-4.3707702033657370e-03,
+-3.9358697549118915e-03,-3.4997992697185509e-03,-3.0683868553182947e-03,
+-2.6469307912861950e-03,-2.2401995292398169e-03,-1.8524316928392182e-03,
+-1.4873360777869493e-03,-1.1480916518280537e-03,-8.3734755475006750e-04,
+-5.5722309838301953e-04,-3.0930776659943149e-04,-9.4661215314317815e-05,
+8.6186727514814265e-05,2.3323606188796475e-04,3.4701661576264087e-04,
+4.2858804505385706e-04,4.7953983363413499e-04,5.0199129333350356e-04,
+4.9859156393949888e-04,4.7251961319716429e-04,4.2748423680905034e-04,
+3.6772405843521483e-04,2.9800752969322275e-04,2.2363293015814634e-04,
+1.5042836736256504e-04,8.4751776796565537e-05,3.3490921907741722e-05,
+4.0633941011947172e-06,4.4166127395328658e-06,4.3027825142871734e-05,
+1.2890410658883411e-04,2.7158236031255001e-04,4.8112931750665666e-04,
+7.6814153732129853e-04,1.1437454068641273e-03,1.6195971412003018e-03,
+2.2078827833524883e-03,2.9213182043008601e-03,3.7731491029830977e-03,
+4.7771510062943889e-03,5.9476292690874288e-03,7.2994190741724196e-03,
+8.8478854323170708e-03,1.0608923182246599e-02,-9.5181654558018636e-05,
+-2.6496131880549001e-04,-4.0895007344943224e-04,-5.2907641105548464e-04,
+-6.2720454110376522e-04,-7.0513438998887068e-04,-7.6460160101987640e-04,
+-8.0727753442033645e-04,-8.3476926732828360e-04,-8.4861959379622931e-04,
+-8.5030702479116371e-04,-8.4124578819455564e-04,-8.2278582880235263e-04,
+-7.9621280832498087e-04,-7.6274810538734528e-04,-7.2354881552882944e-04,
+-6.7970775120329563e-04,-6.3225344177908482e-04,-5.8215013353901668e-04,
+-5.3029778968038954e-04,-4.7753209031498045e-04,-4.2462443246904513e-04,
+-3.7228193008331800e-04,-3.2114741401301217e-04,-2.7179943202781942e-04,
+-2.2475224881191025e-04,-1.8045584596393383e-04,-1.3929592199701801e-04,
+-1.0159389233876936e-04,-6.7606889331273123e-05,-3.7527762231093220e-05,
+-1.1485077209272276e-05,1.0456882648668397e-05,2.8298117342728801e-05,
+4.2102909958430246e-05,5.1999826666815352e-05,5.8181716724448052e-05,
+6.0905712473413587e-05,6.0493229341318511e-05,5.7329965841290687e-05,
+5.1865903571979288e-05,4.4615307217554800e-05,3.6156724547709018e-05,
+2.7132986417655047e-05,1.8251206768127304e-05,1.0282782625381515e-05,
+4.0633941011947172e-06,4.9300439286525943e-07,5.3585978321279981e-07,
+5.2204896405783074e-06,1.5639706418824062e-05,3.2950605657333654e-05,
+5.8374565981011983e-05,9.3197249100285262e-05,1.3876859981110101e-04,
+1.9650284599492807e-04,2.6787849861875657e-04,3.5443835173509797e-04,
+4.5778948248198503e-04,5.7960325108297184e-04,7.2161530084713377e-04,
+8.8562555816906752e-04,1.0734982325288911e-03,1.2871618164922438e-03,
+-1.0345550975898732e-04,-2.8799361001574653e-04,-4.4449887440123348e-04,
+-5.7506743354451828e-04,-6.8172554705370203e-04,-7.6642960351591682e-04,
+-8.3106612049732576e-04,-8.7745174454312291e-04,-9.0733325117753338e-04,
+-9.2238754490381325e-04,-9.2422165920424959e-04,-9.1437275654016048e-04,
+-8.9430812835189499e-04,-8.6542519505883320e-04,-8.2905150605938616e-04,
+-7.8644473973099593e-04,-7.3879270343013559e-04,-6.8721333349230918e-04,
+-6.3275469523205174e-04,-5.7639498294292935e-04,-5.1904251989753902e-04,
+-4.6153575834750882e-04,-4.0464327952349777e-04,-3.4906379363519591e-04,
+-2.9542613987132427e-04,-2.4428928639963488e-04,-1.9614233036691076e-04,
+-1.5140449789896593e-04,-1.1042514410064541e-04,-7.3483753055825218e-05,
+-4.0789937827412359e-05,-1.2483440457344841e-05,1.1365868033408333e-05,
+3.0757987644847162e-05,4.5762789397940651e-05,5.6520015334626805e-05,
+6.3239278517812636e-05,6.6200063031374157e-05,6.5751723980156385e-05,
+6.2313487489973340e-05,5.6374450707608048e-05,4.8493581800812535e-05,
+3.9299719958307833e-05,2.9491575389783975e-05,1.9837729325900000e-05,
+1.1176634018283949e-05,4.4166127395328658e-06,5.3585978321279981e-07,
+5.8244046385880210e-07,5.6742911169749277e-06,1.6999219099034235e-05,
+3.5814902787478786e-05,6.3448891580719646e-05,1.0129860589813688e-04,
+1.5083133718007957e-04,2.1358424788786579e-04,2.9116437150378260e-04,
+3.8524861253108611e-04,4.9758374649400139e-04,6.2998641993772253e-04,
+7.8434315042841263e-04,9.6261032655320378e-04,1.1668142079201971e-03,
+1.3990509251584626e-03,-1.0078913064148765e-03,-2.8057109429369120e-03,
+-4.3304271784450066e-03,-5.6024610793770080e-03,-6.6415530099561693e-03,
+-7.4667626321911484e-03,-8.0964689058760086e-03,-8.5483700885902181e-03,
+-8.8394837356986500e-03,-8.9861467003515827e-03,-9.0040151334846996e-03,
+-8.9080644838190892e-03,-8.7125894978612450e-03,-8.4312042199030657e-03,
+-8.0768419920218548e-03,-7.6617554540803212e-03,-7.1975165437265787e-03,
+-6.6950164963941461e-03,-6.1644658453019474e-03,-5.6153944214543117e-03,
+-5.0566513536409730e-03,-4.4964050684370704e-03,-3.9421432902031484e-03,
+-3.4006730410851560e-03,-2.8781206410144478e-03,-2.3799317077077831e-03,
+-1.9108711566673264e-03,-1.4750232011806474e-03,-1.0757913523207208e-03,
+-7.1589841894592610e-04,-3.9738650770004824e-04,-1.2161702301227706e-04,
+1.1072933290279252e-04,2.9965256004516050e-04,4.4583336062942180e-04,
+5.5063313908476630e-04,6.1609400205497877e-04,6.4493875839843895e-04,
+6.4057091918812148e-04,6.0707469771159595e-04,5.4921500947102686e-04,
+4.7243747218317367e-04,3.8286840577939074e-04,2.8731483240562739e-04,
+1.9326447642242783e-04,1.0888576440493125e-04,4.3027825142871734e-05,
+5.2204896405783074e-06,5.6742911169749277e-06,5.5280465005580481e-05,
+1.6561094895450879e-04,3.4891838282646859e-04,6.1813610869876356e-04,
+9.8687817086329233e-04,1.4694393158265484e-03,2.0807949923096203e-03,
+2.8366013512481913e-03,3.7531952457925399e-03,4.8475942313075393e-03,
+6.1374965653726576e-03,7.6412812077819581e-03,9.3780078205440986e-03,
+1.1367416767882332e-02,1.3629929116234507e-02,-3.0194723521503875e-03,
+-8.4054367434305277e-03,-1.2973229409851683e-02,-1.6784028422023312e-02,
+-1.9896972581534556e-02,-2.2369161420954242e-02,-2.4255655203830884e-02,
+-2.5609474924692677e-02,-2.6481602309047503e-02,-2.6920979813382928e-02,
+-2.6974510625166204e-02,-2.6687058662844265e-02,-2.6101448575843733e-02,
+-2.5258465744570913e-02,-2.4196856280411794e-02,-2.2953327025732051e-02,
+-2.1562545553877044e-02,-2.0057140169171817e-02,-1.8467699906921098e-02,
+-1.6822774533409302e-02,-1.5148874545900526e-02,-1.3470471172638554e-02,
+-1.1809996372846854e-02,-1.0187842836728578e-02,-8.6223639854665635e-03,
+-7.1298739712233328e-03,-5.7246476771410926e-03,-4.4189207173417344e-03,
+-3.2228894369268346e-03,-2.1447109119776542e-03,-1.1905029495551389e-03,
+-3.6434408769991933e-04,3.3172640456768931e-04,8.9770852724768702e-04,
+1.3356415493603890e-03,1.6496040089464259e-03,1.8457137130667434e-03,
+1.9321277378026025e-03,1.9190424282555796e-03,1.8186933985475662e-03,
+1.6453555318207691e-03,1.4153429802377104e-03,1.1470091649812275e-03,
+8.6074677625447293e-04,5.7898777328091455e-04,3.2620338430433549e-04,
+1.2890410658883411e-04,1.5639706418824062e-05,1.6999219099034235e-05,
+1.6561094895450879e-04,4.9614246933060713e-04,1.0453006225930039e-03,
+1.8518315201276891e-03,2.9565205423409679e-03,4.4021923386594608e-03,
+6.2337108275301034e-03,8.4979791964201468e-03,1.1243939901817157e-02,
+1.4522574669229016e-02,1.8386904493183920e-02,2.2891989637230381e-02,
+2.8094929633937227e-02,3.4054863284893599e-02,4.0832968660708957e-02,
+-6.3615927373916747e-03,-1.7709042874173520e-02,-2.7332723194319897e-02,
+-3.5361527068687337e-02,-4.1920051422437155e-02,-4.7128596735035444e-02,
+-5.1103167040253084e-02,-5.3955469926165733e-02,-5.5792916535153836e-02,
+-5.6718621563902616e-02,-5.6831403263402080e-02,-5.6225783438947019e-02,
+-5.4991987450137003e-02,-5.3215944210876387e-02,-5.0979286189374307e-02,
+-4.8359349408144681e-02,-4.5429173444006210e-02,-4.2257501428082378e-02,
+-3.8908780045801450e-02,-3.5443159536896474e-02,-3.1916493695405279e-02,
+-2.8380339869670479e-02,-2.4881958962339468e-02,-2.1464315430364422e-02,
+-1.8166077285002302e-02,-1.5021616091814849e-02,-1.2061006970668586e-02,
+-9.3100285957348206e-03,-6.7901631954896402e-03,-4.5185965527139160e-03,
+-2.5082180044933011e-03,-7.6762044221823089e-04,6.9889968841607697e-04,
+1.8913423874096225e-03,2.8140041004576233e-03,3.4754777189505148e-03,
+3.8886525799739502e-03,4.0707144663088002e-03,4.0431456064311533e-03,
+3.8317246745123157e-03,3.4665267904188113e-03,2.9819235197123817e-03,
+2.4165828736499861e-03,1.8134693091838017e-03,1.2198437289612230e-03,
+6.8726348132486237e-04,2.7158236031255001e-04,3.2950605657333654e-05,
+3.5814902787478786e-05,3.4891838282646859e-04,1.0453006225930039e-03,
+2.2022976446010034e-03,3.9015419170596033e-03,6.2289623538731576e-03,
+9.2747843146412379e-03,1.3133529604658634e-02,1.7904016474915352e-02,
+2.3689359622096617e-02,3.0596970188582873e-02,3.8738555762449778e-02,
+4.8230120377468211e-02,5.9191964513104267e-02,7.1748685094519260e-02,
+8.6029175492569721e-02,-1.1270057335366346e-02,-3.1372949634658198e-02,
+-4.8422049358975983e-02,-6.2645701160306544e-02,-7.4264638202237165e-02,
+-8.3491982159955569e-02,-9.0533243220249915e-02,-9.5586320081508802e-02,
+-9.8841499953721268e-02,-1.0048145855847679e-01,-1.0068126012896528e-01,
+-9.9608357409977089e-02,-9.7422591657903013e-02,-9.4276192640734280e-02,
+-9.0313778638062558e-02,-8.5672356441079955e-02,-8.0481321352579016e-02,
+-7.4862457186952724e-02,-6.8929936270194503e-02,-6.2790319439898212e-02,
+-5.6542556045258152e-02,-5.0277983947069060e-02,-4.4080329517726113e-02,
+-3.8025707641224926e-02,-3.2182621713161552e-02,-2.6611963640732483e-02,
+-2.1367013842734650e-02,-1.6493441249565421e-02,-1.2029303303222605e-02,
+-8.0050459573044463e-03,-4.4435036770096303e-03,-1.3598994391372798e-03,
+1.2381552679130436e-03,3.3506604441413401e-03,4.9852275779471711e-03,
+6.1570796461296595e-03,6.8890511138874899e-03,7.2115879348189083e-03,
+7.1627475509217220e-03,6.7881988925933001e-03,6.1412223786305731e-03,
+5.2827099162300328e-03,4.2811649009877328e-03,3.2127022168992880e-03,
+2.1610482363598749e-03,1.2175408201642313e-03,4.8112931750665666e-04,
+5.8374565981011983e-05,6.3448891580719646e-05,6.1813610869876356e-04,
+1.8518315201276891e-03,3.9015419170596033e-03,6.9118855790861744e-03,
+1.1035092274198632e-02,1.6431003258787769e-02,2.3267071277643936e-02,
+3.1718360563957049e-02,4.1967546839316583e-02,5.4204917313711576e-02,
+6.8628370685530626e-02,8.5443417141561895e-02,1.0486317835699310e-01,
+1.2710838749541153e-01,1.5240738920880403e-01,-1.7993081802103461e-02,
+-5.0088125761192259e-02,-7.7307671932373978e-02,-1.0001628137155194e-01,
+-1.1856636309943269e-01,-1.3329817410152600e-01,-1.4453981932814486e-01,
+-1.5260725169440548e-01,-1.5780427208022729e-01,-1.6042252933033296e-01,
+-1.6074152025424837e-01,-1.5902858962630262e-01,-1.5553893018562803e-01,
+-1.5051558263616016e-01,-1.4418943564663778e-01,-1.3677922585060287e-01,
+-1.2849153784640066e-01,-1.1952080419717959e-01,-1.1004930543089131e-01,
+-1.0024717004029071e-01,-9.0272374482935902e-02,-8.0270743181188209e-02,
+-7.0375948522212184e-02,-6.0709510857975602e-02,-5.1380798505249459e-02,
+-4.2487027745607975e-02,-3.4113262825428592e-02,-2.6332415955891975e-02,
+-1.9205247312982010e-02,-1.2780365037485808e-02,-7.0942252349937007e-03,
+-2.1711319758992431e-03,1.9767627046007874e-03,5.3494588065063908e-03,
+7.9591083650143446e-03,9.8300154505182036e-03,1.0998636168608300e-02,
+1.1513578660071744e-02,1.1435603100892422e-02,1.0837621702250999e-02,
+9.8046987105249173e-03,8.4340504072883959e-03,6.8350451093124320e-03,
+5.1292031685647999e-03,3.4501969722100512e-03,1.9438509426095152e-03,
+7.6814153732129853e-04,9.3197249100285262e-05,1.0129860589813688e-04,
+9.8687817086329233e-04,2.9565205423409679e-03,6.2289623538731576e-03,
+1.1035092274198632e-02,1.7617951007252941e-02,2.6232731292168410e-02,
+3.7146777903274142e-02,5.0639587650096018e-02,6.7002809377356698e-02,
+8.6540243964975616e-02,1.0956784432806899e-01,1.3641371541694980e-01,
+1.6741811421712782e-01,2.0293344974930960e-01,2.4332428306939846e-01,
+-2.6791292576433534e-02,-7.4580088426898783e-02,-1.1510937814449562e-01,
+-1.4892198491082809e-01,-1.7654263780144674e-01,-1.9847797178584869e-01,
+-2.1521652772747757e-01,-2.2722875238372353e-01,-2.3496699840592328e-01,
+-2.3886552433936004e-01,-2.3934049462326357e-01,-2.3678997959081016e-01,
+-2.3159395546912265e-01,-2.2411430437927038e-01,-2.1469481433626925e-01,
+-2.0366117924908167e-01,-1.9132099892061660e-01,-1.7796377904772953e-01,
+-1.6386093122122247e-01,-1.4926577292584398e-01,-1.3441352754028912e-01,
+-1.1952132433719953e-01,-1.0478819848316334e-01,-9.0395091038715236e-02,
+-7.6504848958336424e-02,-6.3262225090454649e-02,-5.0793878177444185e-02,
+-3.9208372855625839e-02,-2.8596179655266951e-02,-1.9029675000581392e-02,
+-1.0563141209729565e-02,-3.2327664948184065e-03,2.9433550380986162e-03,
+7.9652233890215030e-03,1.1850932664003722e-02,1.4636671075152208e-02,
+1.6376720940627365e-02,1.7143458684643065e-02,1.7027354837466646e-02,
+1.6136974035418916e-02,1.4598975020874150e-02,1.2558110642260090e-02,
+1.0177227854057946e-02,7.6372677168023984e-03,5.1372653970815918e-03,
+2.8943501675371408e-03,1.1437454068641273e-03,1.3876859981110101e-04,
+1.5083133718007957e-04,1.4694393158265484e-03,4.4021923386594608e-03,
+9.2747843146412379e-03,1.6431003258787769e-02,2.6232731292168410e-02,
+3.9059944641905986e-02,5.5310713641176790e-02,7.5401202729210581e-02,
+9.9765670451290589e-02,1.2885646945875351e-01,1.6314404650898950e-01,
+2.0311694246544221e-01,2.4928179229760872e-01,3.0216332508103960e-01,
+3.6230436399733890e-01,-3.7937726879988531e-02,-1.0560890324171623e-01,
+-1.6300027842675036e-01,-2.1088051552027309e-01,-2.4999265550462724e-01,
+-2.8105411725931617e-01,-3.0475669756100388e-01,-3.2176657108351492e-01,
+-3.3272429039783447e-01,-3.3824478597210828e-01,-3.3891736617164270e-01,
+-3.3530571725890468e-01,-3.2794790339352176e-01,-3.1735636663228206e-01,
+-3.0401792692913432e-01,-2.8839378213518785e-01,-2.7091950799871256e-01,
+-2.5200505816513896e-01,-2.3203476417705815e-01,-2.1136733547422182e-01,
+-1.9033585939354225e-01,-1.6924780116909233e-01,-1.4838500393210552e-01,
+-1.2800368871097589e-01,-1.0833445443125811e-01,-8.9582277915667419e-02,
+-7.1926513884079668e-02,-5.5520894953531297e-02,-4.0493531638219338e-02,
+-2.6946912349501417e-02,-1.4957903395895755e-02,-4.5777489830811646e-03,
+4.1679287861029479e-03,1.1279129911656582e-02,1.6781476496419145e-02,
+2.0726212746069450e-02,2.3190204969125716e-02,2.4275941576945570e-02,
+2.4111533083726044e-02,2.2850712106503579e-02,2.0672833365154020e-02,
+1.7782873682392619e-02,1.4411431983774037e-02,1.0814729297692338e-02,
+7.2746087553809957e-03,4.0985355909128884e-03,1.6195971412003018e-03,
+1.9650284599492807e-04,2.1358424788786579e-04,2.0807949923096203e-03,
+6.2337108275301034e-03,1.3133529604658634e-02,2.3267071277643936e-02,
+3.7146777903274142e-02,5.5310713641176790e-02,7.8322564753818824e-02,
+1.0677163960650660e-01,1.4127286866738586e-01,1.8246680450744179e-01,
+2.3101962180049895e-01,2.8762311732322132e-01,3.5299470995511228e-01,
+4.2787744067851463e-01,5.1303997257861056e-01,-5.1717832717201873e-02,
+-1.4396918425239846e-01,-2.2220680641197532e-01,-2.8747856347575862e-01,
+-3.4079739091424699e-01,-3.8314129538861152e-01,-4.1545335475069578e-01,
+-4.3864171804301577e-01,-4.5357960549875997e-01,-4.6110530854178933e-01,
+-4.6202218978663723e-01,-4.5709868303850953e-01,-4.4706829329328457e-01,
+-4.3262959673751311e-01,-4.1444624074841840e-01,-3.9314694389389615e-01,
+-3.6932549593251451e-01,-3.4354075781351412e-01,-3.1631666167680805e-01,
+-2.8814221085298186e-01,-2.5947147986329355e-01,-2.3072361441967359e-01,
+-2.0228283142472492e-01,-1.7449841897172291e-01,-1.4768473634461543e-01,
+-1.2212121401802278e-01,-9.8052353657237745e-02,-7.5687728118225550e-02,
+-5.5201981447623893e-02,-3.6734828882742931e-02,-2.0391056851565281e-02,
+-6.2405229727460210e-03,5.6818439443873103e-03,1.5376043899834713e-02,
+2.2877005702923725e-02,2.8254586972309426e-02,3.1613574135974432e-02,
+3.3093682431228899e-02,3.2869555904710523e-02,3.1150767412384539e-02,
+2.8181818619543719e-02,2.4242140000808376e-02,1.9646090840126362e-02,
+1.4742959230773067e-02,9.9169620753514209e-03,5.5872450857918921e-03,
+2.2078827833524883e-03,2.6787849861875657e-04,2.9116437150378260e-04,
+2.8366013512481913e-03,8.4979791964201468e-03,1.7904016474915352e-02,
+3.1718360563957049e-02,5.0639587650096018e-02,7.5401202729210581e-02,
+1.0677163960650660e-01,1.4555426089651746e-01,1.9258735802310412e-01,
+2.4874415121945503e-01,3.1493278952808623e-01,3.9209635080084126e-01,
+4.8121284169889122e-01,5.8329519769273475e-01,6.9939128306219800e-01,
+-6.8429468875308430e-02,-1.9049009394251470e-01,-2.9400871893443536e-01,
+-3.8037180558688988e-01,-4.5091960024450373e-01,-5.0694613386070841e-01,
+-5.4969922199774146e-01,-5.8038046482664640e-01,-6.0014524712727280e-01,
+-6.1010273828827621e-01,-6.1131589230711825e-01,-6.0480144779006650e-01,
+-5.9152992795219461e-01,-5.7242564061738221e-01,-5.4836667821831497e-01,
+-5.2018491779648457e-01,-4.8866602100218870e-01,-4.5454943409453108e-01,
+-4.1852838794142144e-01,-3.8124989801957554e-01,-3.4331476441451514e-01,
+-3.0527757182056803e-01,-2.6764668954086801e-01,-2.3088427148735491e-01,
+-1.9540625618077456e-01,-1.6158236675067883e-01,-1.2973611093542559e-01,
+-1.0014478108217872e-01,-7.3039454146908156e-02,-4.8604991694389810e-02,
+-2.6980039898205632e-02,-8.2570295407435879e-03,7.5178239868023411e-03,
+2.0344520684432155e-02,3.0269275943339835e-02,3.7384520545913347e-02,
+4.1828900665734636e-02,4.3787277867579633e-02,4.3490729107418247e-02,
+4.1216546732414372e-02,3.7288238480925884e-02,3.2075527482504640e-02,
+2.5994352257896480e-02,1.9506866719041227e-02,1.3121440169072685e-02,
+7.3926573023186393e-03,2.9213182043008601e-03,3.5443835173509797e-04,
+3.8524861253108611e-04,3.7531952457925399e-03,1.1243939901817157e-02,
+2.3689359622096617e-02,4.1967546839316583e-02,6.7002809377356698e-02,
+9.9765670451290589e-02,1.4127286866738586e-01,1.9258735802310412e-01,
+2.5481830790710092e-01,3.2912110309922582e-01,4.1669734377052237e-01,
+5.1879484548322807e-01,6.3670763919077444e-01,7.7177597123778696e-01,
+9.2538630336008509e-01,-8.8382904924344530e-02,-2.4603534323244958e-01,
+-3.7973909602982303e-01,-4.9128490519700563e-01,-5.8240382121852008e-01,
+-6.5476720318287107e-01,-7.0998671878254527e-01,-7.4961434431401130e-01,
+-7.7514236467771980e-01,-7.8800337337810333e-01,-7.8957027252357648e-01,
+-7.8115627282653577e-01,-7.6401489360335972e-01,-7.3933996277440883e-01,
+-7.0826561686402556e-01,-6.7186630100053435e-01,-6.3115676891624162e-01,
+-5.8709208294743576e-01,-5.4056761403438713e-01,-4.9241904172134809e-01,
+-4.4342235415655296e-01,-3.9429384809221801e-01,-3.4569012888454154e-01,
+-2.9820811049370377e-01,-2.5238501548386694e-01,-2.0869837502317523e-01,
+-1.6756602888375483e-01,-1.2934612544171387e-01,-9.4337121677142477e-02,
+-6.2777783174112756e-02,-3.4847184120678776e-02,-1.0664707308876586e-02,
+9.7099558652757878e-03,2.6276805401778347e-02,3.9095532696649116e-02,
+4.8285520541924143e-02,5.4025843125657502e-02,5.6555266031921292e-02,
+5.6172246240805634e-02,5.3234932128418677e-02,4.8161163466886592e-02,
+4.1428471424353575e-02,3.3574078564981846e-02,2.5194898848951652e-02,
+1.6947537632461263e-02,9.5482916677269714e-03,3.7731491029830977e-03,
+4.5778948248198503e-04,4.9758374649400139e-04,4.8475942313075393e-03,
+1.4522574669229016e-02,3.0596970188582873e-02,5.4204917313711576e-02,
+8.6540243964975616e-02,1.2885646945875351e-01,1.8246680450744179e-01,
+2.4874415121945503e-01,3.2912110309922582e-01,4.2508994504720476e-01,
+5.3820265335986051e-01,6.7007089572967971e-01,8.2236603124516705e-01,
+9.9681911039084525e-01,1.1952208750472550e+00,-1.1190082121714795e-01,
+-3.1150319147940309e-01,-4.8078434093525857e-01,-6.2201151218317818e-01,
+-7.3737637306834358e-01,-8.2899501668265430e-01,-8.9890796136472773e-01,
+-9.4908015069989915e-01,-9.8140095352022172e-01,-9.9768416390446646e-01,
+-9.9966800117812227e-01,-9.8901510991339592e-01,-9.6731255992921206e-01,
+-9.3607184629121321e-01,-8.9672888931175976e-01,-8.5064403454992998e-01,
+-7.9910205281152002e-01,-7.4331214014904390e-01,-6.8440791786173349e-01,
+-6.2344743249553858e-01,-5.6141315584312679e-01,-4.9921198494388364e-01,
+-4.3767524208391251e-01,-3.7755867479603467e-01,-3.1954245585978924e-01,
+-2.6423118330143325e-01,-2.1215388039394156e-01,-1.6376399565700694e-01,
+-1.1943940285704002e-01,-7.9482401007169301e-02,-4.4119714367241158e-02,
+-1.3502492443819847e-02,1.2293690009812508e-02,3.3268832993655906e-02,
+4.9498511260992473e-02,6.1133874318386461e-02,6.8401646425684248e-02,
+7.1604126596014339e-02,7.1119188595787364e-02,6.7400280944696078e-02,
+6.0976426915715365e-02,5.2452224535102232e-02,4.2507846582395814e-02,
+3.1899040590417371e-02,2.1457128845270290e-02,1.2089008386340083e-02,
+4.7771510062943889e-03,5.7960325108297184e-04,6.2998641993772253e-04,
+6.1374965653726576e-03,1.8386904493183920e-02,3.8738555762449778e-02,
+6.8628370685530626e-02,1.0956784432806899e-01,1.6314404650898950e-01,
+2.3101962180049895e-01,3.1493278952808623e-01,4.1669734377052237e-01,
+5.3820265335986051e-01,6.8141366188143593e-01,8.4837088767386604e-01,
+1.0411904238290504e+00,1.2620639381921706e+00,1.5132586733616904e+00,
+-1.3931830888935792e-01,-3.8782644647739062e-01,-5.9858418008928993e-01,
+-7.7441426295621341e-01,-9.1804535653494668e-01,-1.0321120305079035e+00,
+-1.1191547627831255e+00,-1.1816199394942828e+00,-1.2218598550006732e+00,
+-1.2421327118872227e+00,-1.2446026209644856e+00,-1.2313396012686439e+00,
+-1.2043195800615081e+00,-1.1654243928305164e+00,-1.1164417832887352e+00,
+-1.0590654033748592e+00,-9.9489481325321094e-01,-9.2543548131374109e-01,
+-8.5209878417202845e-01,-7.7620200666927985e-01,-6.9896834187233026e-01,
+-6.2152689107364267e-01,-5.4491266379130820e-01,-4.7006657776904603e-01,
+-3.9783545897620343e-01,-3.2897204160775573e-01,-2.6413496808430637e-01,
+-2.0388878905208685e-01,-1.4870396338295677e-01,-9.8956858174403806e-02,
+-5.4929748749543705e-02,-1.6810818657120308e-02,1.5305840328494469e-02,
+4.1420228207300624e-02,6.1626436753670077e-02,7.6112649516346664e-02,
+8.5161141818446140e-02,8.9148280757456178e-02,8.8544525205236368e-02,
+8.3914425808018223e-02,7.5916624986405168e-02,6.5303856935372551e-02,
+5.2922947624267636e-02,3.9714814796809605e-02,2.6714467971089562e-02,
+1.5051008439570523e-02,5.9476292690874288e-03,7.2161530084713377e-04,
+7.8434315042841263e-04,7.6412812077819581e-03,2.2891989637230381e-02,
+4.8230120377468211e-02,8.5443417141561895e-02,1.3641371541694980e-01,
+2.0311694246544221e-01,2.8762311732322132e-01,3.9209635080084126e-01,
+5.1879484548322807e-01,6.7007089572967971e-01,8.4837088767386604e-01,
+1.0562352992238289e+00,1.2962987000619819e+00,1.5712897516451108e+00,
+1.8840312072043730e+00,-1.7098286985941513e-01,-4.7597246445724295e-01,
+-7.3463166313189276e-01,-9.5042478046065071e-01,-1.1267006538682267e+00,
+-1.2666926436267545e+00,-1.3735186328557916e+00,-1.4501810275223193e+00,
+-1.4995667564407427e+00,-1.5244472712728907e+00,-1.5274785465280161e+00,
+-1.5112010795627953e+00,-1.4780398905813286e+00,-1.4303045226351401e+00,
+-1.3701890416231777e+00,-1.2997720362918130e+00,-1.2210166182348416e+00,
+-1.1357704218934828e+00,-1.0457656045563795e+00,-9.5261884635959859e-01,
+-8.5783135028663082e-01,-7.6278884216839060e-01,-6.6876157068321618e-01,
+-5.7690430735686959e-01,-4.8825634656253669e-01,-4.0374150552082710e-01,
+-3.2416812429977426e-01,-2.5022906581483539e-01,-1.8250171582889152e-01,
+-1.2144798295224746e-01,-6.7414298642631820e-02,-2.0631617205197017e-02,
+1.8784584207480748e-02,5.0834305595401474e-02,7.5633024111141367e-02,
+9.3411694059852834e-02,1.0451674689926449e-01,1.0941009123968115e-01,
+1.0866911284398384e-01,1.0298667462762978e-01,9.3171116658652409e-02,
+8.0146256157661355e-02,6.4951387497842461e-02,4.8741282204957770e-02,
+3.2786188957345530e-02,1.8471833585920194e-02,7.2994190741724196e-03,
+8.8562555816906752e-04,9.6261032655320378e-04,9.3780078205440986e-03,
+2.8094929633937227e-02,5.9191964513104267e-02,1.0486317835699310e-01,
+1.6741811421712782e-01,2.4928179229760872e-01,3.5299470995511228e-01,
+4.8121284169889122e-01,6.3670763919077444e-01,8.2236603124516705e-01,
+1.0411904238290504e+00,1.2962987000619819e+00,1.5909242202160954e+00,
+1.9284158217161007e+00,2.3122378191392841e+00,-2.0725441682856172e-01,
+-5.7694315008660624e-01,-8.9047316290447043e-01,-1.1520436741747631e+00,
+-1.3657139288270059e+00,-1.5354031978276339e+00,-1.6648907781799949e+00,
+-1.7578159929243498e+00,-1.8176781911378725e+00,-1.8478367479346502e+00,
+-1.8515110644656829e+00,-1.8317805679188837e+00,-1.7915847115190786e+00,
+-1.7337229745280069e+00,-1.6608548622443209e+00,-1.5754999060035857e+00,
+-1.4800376631782797e+00,-1.3767077171777942e+00,-1.2676096774484336e+00,
+-1.1547031794734153e+00,-1.0398078847728698e+00,-9.2460348090384059e-01,
+-8.1062968146028425e-01,-6.9928622607307034e-01,-5.9183288040998150e-01,
+-4.8938943617571340e-01,-3.9293571111187475e-01,-3.0331154899698731e-01,
+-2.2121681964648587e-01,-1.4721141891271827e-01,-8.1715268684945386e-02,
+-2.5008316889341131e-02,2.2769462511007532e-02,6.1618069516100604e-02,
+9.1677478089025044e-02,1.1322763615595477e-01,1.2668846560615066e-01,
+1.3261986229196054e-01,1.3172169602881922e-01,1.2483381059524845e-01,
+1.1293602373285694e-01,9.7148127146340357e-02,7.8729886503481339e-02,
+5.9081041435149473e-02,3.9741305535301308e-02,2.2390366360980352e-02,
+8.8478854323170708e-03,1.0734982325288911e-03,1.1668142079201971e-03,
+1.1367416767882332e-02,3.4054863284893599e-02,7.1748685094519260e-02,
+1.2710838749541153e-01,2.0293344974930960e-01,3.0216332508103960e-01,
+4.2787744067851463e-01,5.8329519769273475e-01,7.7177597123778696e-01,
+9.9681911039084525e-01,1.2620639381921706e+00,1.5712897516451108e+00,
+1.9284158217161007e+00,2.3375013933346622e+00,2.8027456853934041e+00,
+-2.4850527328084127e-01,-6.9177495646994203e-01,-1.0677083754498540e+00,
+-1.3813405401105570e+00,-1.6375386266790315e+00,-1.8410019777192588e+00,
+-1.9962621021322207e+00,-2.1076826751558997e+00,-2.1794595383652791e+00,
+-2.2156206996723427e+00,-2.2200263333260750e+00,-2.1963687799124614e+00,
+-2.1481725463544876e+00,-2.0787943059121403e+00,-1.9914228981824067e+00,
+-1.8890793290992747e+00,-1.7746167709337328e+00,-1.6507205622937704e+00,
+-1.5199082081243773e+00,-1.3845293797075442e+00,-1.2467659146622623e+00,
+-1.1086318169445235e+00,-9.7197325684732050e-01,-8.3846857100064653e-01,
+-7.0962826237149557e-01,-5.8679500026386222e-01,-4.7114362031874180e-01,
+-3.6368112451413026e-01,-2.6524668116502426e-01,-1.7651162492342110e-01,
+-9.7979456778318763e-02,-2.9985844055715916e-02,2.7301379581388119e-02,
+7.3882214132993340e-02,1.0992449326209908e-01,1.3576388429470398e-01,
+1.5190388821980605e-01,1.5901583968940258e-01,1.5793890701849023e-01,
+1.4968009218506495e-01,1.3541423083012205e-01,1.1648399225765615e-01,
+9.4399879434661216e-02,7.0840228991130516e-02,4.7651211220056666e-02,
+2.6846830077431605e-02,1.0608923182246599e-02,1.2871618164922438e-03,
+1.3990509251584626e-03,1.3629929116234507e-02,4.0832968660708957e-02,
+8.6029175492569721e-02,1.5240738920880403e-01,2.4332428306939846e-01,
+3.6230436399733890e-01,5.1303997257861056e-01,6.9939128306219800e-01,
+9.2538630336008509e-01,1.1952208750472550e+00,1.5132586733616904e+00,
+1.8840312072043730e+00,2.3122378191392841e+00,2.8027456853934041e+00,
+3.3605898158567129e+00,
+},{
+-1.1360069160559760e-01,-2.4622788845931609e-01,-2.8425226614103849e-01,
+-2.6065882697707821e-01,-2.0293507290602975e-01,-1.3307100547876871e-01,
+-6.7559125858451807e-02,-1.7394434820516835e-02,1.1925567247317304e-02,
+2.0400880345050609e-02,1.3529004860401983e-02,2.3049415688092267e-03,
+3.2211916334290436e-03,3.8267756605137038e-02,1.3493213842252771e-01,
+3.2619933941191448e-01,-2.4622788845931609e-01,-5.3369545729196943e-01,
+-6.1611275681912048e-01,-5.6497431193179182e-01,-4.3985889337250228e-01,
+-2.8842951773526693e-01,-1.4643344746559706e-01,-3.7702190860500195e-02,
+2.5848497931519887e-02,4.4218618910463192e-02,2.9323926224833485e-02,
+4.9959281716382975e-03,6.9818871963889251e-03,8.2944819893100430e-02,
+2.9246349700429164e-01,7.0703244342098515e-01,-2.8425226614103849e-01,
+-6.1611275681912048e-01,-7.1125756070955504e-01,-6.5222192937994805e-01,
+-5.0778523913663776e-01,-3.3297099102469474e-01,-1.6904681082792195e-01,
+-4.3524449068854665e-02,2.9840218991239453e-02,5.1047193352360409e-02,
+3.3852349275775850e-02,5.7674372840210708e-03,8.0600831608990120e-03,
+9.5753787951480263e-02,3.3762792796210306e-01,8.1621775476037328e-01,
+-2.6065882697707821e-01,-5.6497431193179182e-01,-6.5222192937994805e-01,
+-5.9808635951753786e-01,-4.6563816917455370e-01,-3.0533381181498953e-01,
+-1.5501562753684084e-01,-3.9911843072104602e-02,2.7363428213220686e-02,
+4.6810186319135028e-02,3.1042544611636913e-02,5.2887298227233259e-03,
+7.3910820503897412e-03,8.7806054758630125e-02,3.0960421477743694e-01,
+7.4847024230280113e-01,-2.0293507290602975e-01,-4.3985889337250228e-01,
+-5.0778523913663776e-01,-4.6563816917455370e-01,-3.6252106596634803e-01,
+-2.3771663549609912e-01,-1.2068690725186570e-01,-3.1073234225686974e-02,
+2.1303707086417489e-02,3.6443916684447686e-02,2.4168071064423202e-02,
+4.1175232183832122e-03,5.7543026343864767e-03,6.8361115296511343e-02,
+2.4104134368485575e-01,5.8271904677553721e-01,-1.3307100547876871e-01,
+-2.8842951773526693e-01,-3.3297099102469474e-01,-3.0533381181498953e-01,
+-2.3771663549609912e-01,-1.5587838637998175e-01,-7.9138257700606118e-02,
+-2.0375711613951353e-02,1.3969520801992985e-02,2.3897439547226895e-02,
+1.5847775699739941e-02,2.6999914155112492e-03,3.7732799285095098e-03,
+4.4826565550692976e-02,1.5805850367200946e-01,3.8210748076039636e-01,
+-6.7559125858451807e-02,-1.4643344746559706e-01,-1.6904681082792195e-01,
+-1.5501562753684084e-01,-1.2068690725186570e-01,-7.9138257700606118e-02,
+-4.0177884678769260e-02,-1.0344592050159918e-02,7.0922182533195155e-03,
+1.2132546231669039e-02,8.0457938167910470e-03,1.3707648724903265e-03,
+1.9156651944740588e-03,2.2758102510351819e-02,8.0245086479635575e-02,
+1.9399302869373969e-01,-1.7394434820516835e-02,-3.7702190860500195e-02,
+-4.3524449068854665e-02,-3.9911843072104602e-02,-3.1073234225686974e-02,
+-2.0375711613951353e-02,-1.0344592050159918e-02,-2.6634200764874549e-03,
+1.8260320359786419e-03,3.1237642872383731e-03,2.0715489483791316e-03,
+3.5293056157570390e-04,4.9322594009026943e-04,5.8595241682724009e-03,
+2.0660686601559064e-02,4.9947346866474618e-02,1.1925567247317304e-02,
+2.5848497931519887e-02,2.9840218991239453e-02,2.7363428213220686e-02,
+2.1303707086417489e-02,1.3969520801992985e-02,7.0922182533195155e-03,
+1.8260320359786419e-03,-1.2519215522388549e-03,-2.1416425113329751e-03,
+-1.4202471390944993e-03,-2.4196803110498877e-04,-3.3815408073678555e-04,
+-4.0172704791530123e-03,-1.4164898715307572e-02,-3.4243736575945150e-02,
+2.0400880345050609e-02,4.4218618910463192e-02,5.1047193352360409e-02,
+4.6810186319135028e-02,3.6443916684447686e-02,2.3897439547226895e-02,
+1.2132546231669039e-02,3.1237642872383731e-03,-2.1416425113329751e-03,
+-3.6636741640450055e-03,-2.4295944456298457e-03,-4.1393090555175149e-04,
+-5.7847486800710612e-04,-6.8722814319244208e-03,-2.4231669470964334e-02,
+-5.8580221633519614e-02,1.3529004860401983e-02,2.9323926224833485e-02,
+3.3852349275775850e-02,3.1042544611636913e-02,2.4168071064423202e-02,
+1.5847775699739941e-02,8.0457938167910470e-03,2.0715489483791316e-03,
+-1.4202471390944993e-03,-2.4295944456298457e-03,-1.6112047376282135e-03,
+-2.7450154789221415e-04,-3.8362017562576511e-04,-4.5574076864340896e-03,
+-1.6069422912323716e-02,-3.8847936451702481e-02,2.3049415688092267e-03,
+4.9959281716382975e-03,5.7674372840210708e-03,5.2887298227233259e-03,
+4.1175232183832122e-03,2.6999914155112492e-03,1.3707648724903265e-03,
+3.5293056157570390e-04,-2.4196803110498877e-04,-4.1393090555175149e-04,
+-2.7450154789221415e-04,-4.6766930381636485e-05,-6.5357511402908131e-05,
+-7.7644723546654859e-04,-2.7377535332107072e-03,-6.6185373214011634e-03,
+3.2211916334290436e-03,6.9818871963889251e-03,8.0600831608990120e-03,
+7.3910820503897412e-03,5.7543026343864767e-03,3.7732799285095098e-03,
+1.9156651944740588e-03,4.9322594009026943e-04,-3.3815408073678555e-04,
+-5.7847486800710612e-04,-3.8362017562576511e-04,-6.5357511402908131e-05,
+-9.1338137053753599e-05,-1.0850970681985928e-03,-3.8260530743627896e-03,
+-9.2495086789767811e-03,3.8267756605137038e-02,8.2944819893100430e-02,
+9.5753787951480263e-02,8.7806054758630125e-02,6.8361115296511343e-02,
+4.4826565550692976e-02,2.2758102510351819e-02,5.8595241682724009e-03,
+-4.0172704791530123e-03,-6.8722814319244208e-03,-4.5574076864340896e-03,
+-7.7644723546654859e-04,-1.0850970681985928e-03,-1.2890953170199282e-02,
+-4.5453510523429941e-02,-1.0988416310624416e-01,1.3493213842252771e-01,
+2.9246349700429164e-01,3.3762792796210306e-01,3.0960421477743694e-01,
+2.4104134368485575e-01,1.5805850367200946e-01,8.0245086479635575e-02,
+2.0660686601559064e-02,-1.4164898715307572e-02,-2.4231669470964334e-02,
+-1.6069422912323716e-02,-2.7377535332107072e-03,-3.8260530743627896e-03,
+-4.5453510523429941e-02,-1.6026911211497463e-01,-3.8745164133047183e-01,
+3.2619933941191448e-01,7.0703244342098515e-01,8.1621775476037328e-01,
+7.4847024230280113e-01,5.8271904677553721e-01,3.8210748076039636e-01,
+1.9399302869373969e-01,4.9947346866474618e-02,-3.4243736575945150e-02,
+-5.8580221633519614e-02,-3.8847936451702481e-02,-6.6185373214011634e-03,
+-9.2495086789767811e-03,-1.0988416310624416e-01,-3.8745164133047183e-01,
+-9.3666691222438203e-01,-2.4622788845931609e-01,-5.3369545729196943e-01,
+-6.1611275681912048e-01,-5.6497431193179182e-01,-4.3985889337250228e-01,
+-2.8842951773526693e-01,-1.4643344746559706e-01,-3.7702190860500195e-02,
+2.5848497931519887e-02,4.4218618910463192e-02,2.9323926224833485e-02,
+4.9959281716382975e-03,6.9818871963889251e-03,8.2944819893100430e-02,
+2.9246349700429164e-01,7.0703244342098515e-01,-5.3369545729196943e-01,
+-1.1567773371095882e+00,-1.3354156653474547e+00,-1.2245738110793809e+00,
+-9.5338791520021005e-01,-6.2516689042581675e-01,-3.1739242129310696e-01,
+-8.1718964160018004e-02,5.6026252794481479e-02,9.5843229570391486e-02,
+6.3559194346680670e-02,1.0828603481286336e-02,1.5133141511114445e-02,
+1.7978172115203961e-01,6.3391048329890509e-01,1.5324827970255228e+00,
+-6.1611275681912048e-01,-1.3354156653474547e+00,-1.5416406788460790e+00,
+-1.4136817849282579e+00,-1.1006173066050451e+00,-7.2170990228528353e-01,
+-3.6640656577560549e-01,-9.4338626280432436e-02,6.4678251598024872e-02,
+1.1064406785976644e-01,7.3374487107003006e-02,1.2500838544156068e-02,
+1.7470115977857859e-02,2.0754497781695136e-01,7.3180374707249030e-01,
+1.7691404113577391e+00,-5.6497431193179182e-01,-1.2245738110793809e+00,
+-1.4136817849282579e+00,-1.2963437047690149e+00,-1.0092641300104788e+00,
+-6.6180670817971077e-01,-3.3599417492200701e-01,-8.6508354000898180e-02,
+5.9309842701850357e-02,1.0146041518623861e-01,6.7284275334031918e-02,
+1.1463246908760993e-02,1.6020065555721885e-02,1.9031837880197600e-01,
+6.7106274605635008e-01,1.6222986386094362e+00,-4.3985889337250228e-01,
+-9.5338791520021005e-01,-1.1006173066050451e+00,-1.0092641300104788e+00,
+-7.8575927076940388e-01,-5.1524743716413468e-01,-2.6158716040640684e-01,
+-6.7350794637377476e-02,4.6175483072374846e-02,7.8991672722850126e-02,
+5.2383951384626926e-02,8.9246731988623651e-03,1.2472369377292125e-02,
+1.4817174820223045e-01,5.2245369502657013e-01,1.2630352722737825e+00,
+-2.8842951773526693e-01,-6.2516689042581675e-01,-7.2170990228528353e-01,
+-6.6180670817971077e-01,-5.1524743716413468e-01,-3.3786419248258426e-01,
+-1.7153105156808124e-01,-4.4164066042640115e-02,3.0278738282731865e-02,
+5.1797361408034703e-02,3.4349829144275645e-02,5.8521931134691840e-03,
+8.1785307486370584e-03,9.7160945293808254e-02,3.4258956580401900e-01,
+8.2821254714531278e-01,-1.4643344746559706e-01,-3.1739242129310696e-01,
+-3.6640656577560549e-01,-3.3599417492200701e-01,-2.6158716040640684e-01,
+-1.7153105156808124e-01,-8.7084995411487398e-02,-2.2421756606263443e-02,
+1.5372282512771562e-02,2.6297121945617619e-02,1.7439144027093789e-02,
+2.9711134268382011e-03,4.1521771493080450e-03,4.9327864533779575e-02,
+1.7393008725434811e-01,4.2047713931992803e-01,-3.7702190860500195e-02,
+-8.1718964160018004e-02,-9.4338626280432436e-02,-8.6508354000898180e-02,
+-6.7350794637377476e-02,-4.4164066042640115e-02,-2.2421756606263443e-02,
+-5.7729252546323551e-03,3.9578985490607010e-03,6.7707148048157251e-03,
+4.4900529758251650e-03,7.6497198847391701e-04,1.0690602323393250e-03,
+1.2700435560191181e-02,4.4781745287991725e-02,1.0826016619489565e-01,
+2.5848497931519887e-02,5.6026252794481479e-02,6.4678251598024872e-02,
+5.9309842701850357e-02,4.6175483072374846e-02,3.0278738282731865e-02,
+1.5372282512771562e-02,3.9578985490607010e-03,-2.7135222151173366e-03,
+-4.6419797797625506e-03,-3.0783655381583230e-03,-5.2446227687141800e-04,
+-7.3294417575198167e-04,-8.7073768079335423e-03,-3.0702217139833010e-02,
+-7.4222813531150678e-02,4.4218618910463192e-02,9.5843229570391486e-02,
+1.1064406785976644e-01,1.0146041518623861e-01,7.8991672722850126e-02,
+5.1797361408034703e-02,2.6297121945617619e-02,6.7707148048157251e-03,
+-4.6419797797625506e-03,-7.9409618081172084e-03,-5.2661115148566751e-03,
+-8.9718936919780390e-04,-1.2538360749658750e-03,-1.4895572570594595e-02,
+-5.2521800029126098e-02,-1.2697179985821094e-01,2.9323926224833485e-02,
+6.3559194346680670e-02,7.3374487107003006e-02,6.7284275334031918e-02,
+5.2383951384626926e-02,3.4349829144275645e-02,1.7439144027093789e-02,
+4.4900529758251650e-03,-3.0783655381583230e-03,-5.2661115148566751e-03,
+-3.4922634256417950e-03,-5.9497821325749101e-04,-8.3149129181947501e-04,
+-9.8781165468153631e-03,-3.4830246335104675e-02,-8.4202351484918836e-02,
+4.9959281716382975e-03,1.0828603481286336e-02,1.2500838544156068e-02,
+1.1463246908760993e-02,8.9246731988623651e-03,5.8521931134691840e-03,
+2.9711134268382011e-03,7.6497198847391701e-04,-5.2446227687141800e-04,
+-8.9718936919780390e-04,-5.9497821325749101e-04,-1.0136665855497995e-04,
+-1.4166147934702167e-04,-1.6829383746426174e-03,-5.9340419682030188e-03,
+-1.4345585808541728e-02,6.9818871963889251e-03,1.5133141511114445e-02,
+1.7470115977857859e-02,1.6020065555721885e-02,1.2472369377292125e-02,
+8.1785307486370584e-03,4.1521771493080450e-03,1.0690602323393250e-03,
+-7.3294417575198167e-04,-1.2538360749658750e-03,-8.3149129181947501e-04,
+-1.4166147934702167e-04,-1.9797411709987500e-04,-2.3519325111465150e-03,
+-8.2929157940725418e-03,-2.0048178924980675e-02,8.2944819893100430e-02,
+1.7978172115203961e-01,2.0754497781695136e-01,1.9031837880197600e-01,
+1.4817174820223045e-01,9.7160945293808254e-02,4.9327864533779575e-02,
+1.2700435560191181e-02,-8.7073768079335423e-03,-1.4895572570594595e-02,
+-9.8781165468153631e-03,-1.6829383746426174e-03,-2.3519325111465150e-03,
+-2.7940958232420599e-02,-9.8519839633581796e-02,-2.3817236562877042e-01,
+2.9246349700429164e-01,6.3391048329890509e-01,7.3180374707249030e-01,
+6.7106274605635008e-01,5.2245369502657013e-01,3.4258956580401900e-01,
+1.7393008725434811e-01,4.4781745287991725e-02,-3.0702217139833010e-02,
+-5.2521800029126098e-02,-3.4830246335104675e-02,-5.9340419682030188e-03,
+-8.2929157940725418e-03,-9.8519839633581796e-02,-3.4738102826281647e-01,
+-8.3979593941307940e-01,7.0703244342098515e-01,1.5324827970255228e+00,
+1.7691404113577391e+00,1.6222986386094362e+00,1.2630352722737825e+00,
+8.2821254714531278e-01,4.2047713931992803e-01,1.0826016619489565e-01,
+-7.4222813531150678e-02,-1.2697179985821094e-01,-8.4202351484918836e-02,
+-1.4345585808541728e-02,-2.0048178924980675e-02,-2.3817236562877042e-01,
+-8.3979593941307940e-01,-2.0302122524697097e+00,-2.8425226614103849e-01,
+-6.1611275681912048e-01,-7.1125756070955504e-01,-6.5222192937994805e-01,
+-5.0778523913663776e-01,-3.3297099102469474e-01,-1.6904681082792195e-01,
+-4.3524449068854665e-02,2.9840218991239453e-02,5.1047193352360409e-02,
+3.3852349275775850e-02,5.7674372840210708e-03,8.0600831608990120e-03,
+9.5753787951480263e-02,3.3762792796210306e-01,8.1621775476037328e-01,
+-6.1611275681912048e-01,-1.3354156653474547e+00,-1.5416406788460790e+00,
+-1.4136817849282579e+00,-1.1006173066050451e+00,-7.2170990228528353e-01,
+-3.6640656577560549e-01,-9.4338626280432436e-02,6.4678251598024872e-02,
+1.1064406785976644e-01,7.3374487107003006e-02,1.2500838544156068e-02,
+1.7470115977857859e-02,2.0754497781695136e-01,7.3180374707249030e-01,
+1.7691404113577391e+00,-7.1125756070955504e-01,-1.5416406788460790e+00,
+-1.7797125227332344e+00,-1.6319932461044573e+00,-1.2705829770709443e+00,
+-8.3316181812165269e-01,-4.2298984612330059e-01,-1.0890711232036665e-01,
+7.4666357664909810e-02,1.2773056383252879e-01,8.4705531804729617e-02,
+1.4431312825990972e-02,2.0167983763030861e-02,2.3959564710480663e-01,
+8.4481443096251496e-01,2.0423444890695919e+00,-6.5222192937994805e-01,
+-1.4136817849282579e+00,-1.6319932461044573e+00,-1.4965349298324782e+00,
+-1.1651223502155972e+00,-7.6400791853643568e-01,-3.8788094325695965e-01,
+-9.9867630018479758e-02,6.8468918358348674e-02,1.1712870187352564e-01,
+7.7674823347706479e-02,1.3233488422201845e-02,1.8494005558977733e-02,
+2.1970878604065547e-01,7.7469334397051171e-01,1.8728262962724784e+00,
+-5.0778523913663776e-01,-1.1006173066050451e+00,-1.2705829770709443e+00,
+-1.1651223502155972e+00,-9.0710217577338881e-01,-5.9481585353182709e-01,
+-3.0198343333154298e-01,-7.7751615066290469e-02,5.3306251317053466e-02,
+9.1190165818488822e-02,6.0473478384892587e-02,1.0302888910018737e-02,
+1.4398447234498235e-02,1.7105355314583903e-01,6.0313495637842607e-01,
+1.4580827566135213e+00,-3.3297099102469474e-01,-7.2170990228528353e-01,
+-8.3316181812165269e-01,-7.6400791853643568e-01,-5.9481585353182709e-01,
+-3.9003974310958256e-01,-1.9802017727101884e-01,-5.0984216017013750e-02,
+3.4954610651993789e-02,5.9796302736003781e-02,3.9654390235455139e-02,
+6.7559331512256904e-03,9.4415214846321760e-03,1.1216527523743025e-01,
+3.9549484441181448e-01,9.5611140901041836e-01,-1.6904681082792195e-01,
+-3.6640656577560549e-01,-4.2298984612330059e-01,-3.8788094325695965e-01,
+-3.0198343333154298e-01,-1.9802017727101884e-01,-1.0053332076836341e-01,
+-2.5884294285560827e-02,1.7746186946396847e-02,3.0358122927509612e-02,
+2.0132228888769532e-02,3.4299352921607351e-03,4.7933878306594124e-03,
+5.6945447428233820e-02,2.0078969023984428e-01,4.8541040765144317e-01,
+-4.3524449068854665e-02,-9.4338626280432436e-02,-1.0890711232036665e-01,
+-9.9867630018479758e-02,-7.7751615066290469e-02,-5.0984216017013750e-02,
+-2.5884294285560827e-02,-6.6644241485391831e-03,4.5691072557474399e-03,
+7.8162999272990419e-03,5.1834410044193646e-03,8.8310476371589175e-04,
+1.2341526200998487e-03,1.4661733126786203e-02,5.1697281975293663e-02,
+1.2497852199544468e-01,2.9840218991239453e-02,6.4678251598024872e-02,
+7.4666357664909810e-02,6.8468918358348674e-02,5.3306251317053466e-02,
+3.4954610651993789e-02,1.7746186946396847e-02,4.5691072557474399e-03,
+-3.1325648922120308e-03,-5.3588294974815653e-03,-3.5537500878035644e-03,
+-6.0545371866282949e-04,-8.4613097328656295e-04,-1.0052035962644368e-02,
+-3.5443486325448248e-02,-8.5684863228152608e-02,5.1047193352360409e-02,
+1.1064406785976644e-01,1.2773056383252879e-01,1.1712870187352564e-01,
+9.1190165818488822e-02,5.9796302736003781e-02,3.0358122927509612e-02,
+7.8162999272990419e-03,-5.3588294974815653e-03,-9.1672653468322096e-03,
+-6.0793443878992548e-03,-1.0357401549754286e-03,-1.4474629494998226e-03,
+-1.7195859840057892e-02,-6.0632614662381457e-02,-1.4657974801934870e-01,
+3.3852349275775850e-02,7.3374487107003006e-02,8.4705531804729617e-02,
+7.7674823347706479e-02,6.0473478384892587e-02,3.9654390235455139e-02,
+2.0132228888769532e-02,5.1834410044193646e-03,-3.5537500878035644e-03,
+-6.0793443878992548e-03,-4.0315652256595058e-03,-6.8685926066791581e-04,
+-9.5989648229988234e-04,-1.1403570209722602e-02,-4.0208997091895071e-02,
+-9.7205517107568085e-02,5.7674372840210708e-03,1.2500838544156068e-02,
+1.4431312825990972e-02,1.3233488422201845e-02,1.0302888910018737e-02,
+6.7559331512256904e-03,3.4299352921607351e-03,8.8310476371589175e-04,
+-6.0545371866282949e-04,-1.0357401549754286e-03,-6.8685926066791581e-04,
+-1.1702046663231158e-04,-1.6353791920664662e-04,-1.9428304801749618e-03,
+-6.8504217267673084e-03,-1.6560939951659748e-02,8.0600831608990120e-03,
+1.7470115977857859e-02,2.0167983763030861e-02,1.8494005558977733e-02,
+1.4398447234498235e-02,9.4415214846321760e-03,4.7933878306594124e-03,
+1.2341526200998487e-03,-8.4613097328656295e-04,-1.4474629494998226e-03,
+-9.5989648229988234e-04,-1.6353791920664662e-04,-2.2854678149997198e-04,
+-2.7151357642196672e-03,-9.5735707361654931e-03,-2.3144170739897163e-02,
+9.5753787951480263e-02,2.0754497781695136e-01,2.3959564710480663e-01,
+2.1970878604065547e-01,1.7105355314583903e-01,1.1216527523743025e-01,
+5.6945447428233820e-02,1.4661733126786203e-02,-1.0052035962644368e-02,
+-1.7195859840057892e-02,-1.1403570209722602e-02,-1.9428304801749618e-03,
+-2.7151357642196672e-03,-3.2255812878929646e-02,-1.1373402034564606e-01,
+-2.7495274838997830e-01,3.3762792796210306e-01,7.3180374707249030e-01,
+8.4481443096251496e-01,7.7469334397051171e-01,6.0313495637842607e-01,
+3.9549484441181448e-01,2.0078969023984428e-01,5.1697281975293663e-02,
+-3.5443486325448248e-02,-6.0632614662381457e-02,-4.0208997091895071e-02,
+-6.8504217267673084e-03,-9.5735707361654931e-03,-1.1373402034564606e-01,
+-4.0102624083715455e-01,-9.6948359654902561e-01,8.1621775476037328e-01,
+1.7691404113577391e+00,2.0423444890695919e+00,1.8728262962724784e+00,
+1.4580827566135213e+00,9.5611140901041836e-01,4.8541040765144317e-01,
+1.2497852199544468e-01,-8.5684863228152608e-02,-1.4657974801934870e-01,
+-9.7205517107568085e-02,-1.6560939951659748e-02,-2.3144170739897163e-02,
+-2.7495274838997830e-01,-9.6948359654902561e-01,-2.3437330235935860e+00,
+-2.6065882697707821e-01,-5.6497431193179182e-01,-6.5222192937994805e-01,
+-5.9808635951753786e-01,-4.6563816917455370e-01,-3.0533381181498953e-01,
+-1.5501562753684084e-01,-3.9911843072104602e-02,2.7363428213220686e-02,
+4.6810186319135028e-02,3.1042544611636913e-02,5.2887298227233259e-03,
+7.3910820503897412e-03,8.7806054758630125e-02,3.0960421477743694e-01,
+7.4847024230280113e-01,-5.6497431193179182e-01,-1.2245738110793809e+00,
+-1.4136817849282579e+00,-1.2963437047690149e+00,-1.0092641300104788e+00,
+-6.6180670817971077e-01,-3.3599417492200701e-01,-8.6508354000898180e-02,
+5.9309842701850357e-02,1.0146041518623861e-01,6.7284275334031918e-02,
+1.1463246908760993e-02,1.6020065555721885e-02,1.9031837880197600e-01,
+6.7106274605635008e-01,1.6222986386094362e+00,-6.5222192937994805e-01,
+-1.4136817849282579e+00,-1.6319932461044573e+00,-1.4965349298324782e+00,
+-1.1651223502155972e+00,-7.6400791853643568e-01,-3.8788094325695965e-01,
+-9.9867630018479758e-02,6.8468918358348674e-02,1.1712870187352564e-01,
+7.7674823347706479e-02,1.3233488422201845e-02,1.8494005558977733e-02,
+2.1970878604065547e-01,7.7469334397051171e-01,1.8728262962724784e+00,
+-5.9808635951753786e-01,-1.2963437047690149e+00,-1.4965349298324782e+00,
+-1.3723198925943052e+00,-1.0684151412931442e+00,-7.0059391451991360e-01,
+-3.5568614121780229e-01,-9.1578440682269502e-02,6.2785877438955140e-02,
+1.0740681314587164e-01,7.1227676086209613e-02,1.2135085555428304e-02,
+1.6958970496716574e-02,2.0147256950099290e-01,7.1039243080690540e-01,
+1.7173784123008318e+00,-4.6563816917455370e-01,-1.0092641300104788e+00,
+-1.1651223502155972e+00,-1.0684151412931442e+00,-8.3181109616248250e-01,
+-5.4544508915910228e-01,-2.7691827603462116e-01,-7.1298093956784214e-02,
+4.8881738490536009e-02,8.3621221307339511e-02,5.5454073077498833e-02,
+9.4477309687590605e-03,1.3203350732737817e-02,1.5685580670492527e-01,
+5.5307369180468413e-01,1.3370593175352496e+00,-3.0533381181498953e-01,
+-6.6180670817971077e-01,-7.6400791853643568e-01,-7.0059391451991360e-01,
+-5.4544508915910228e-01,-3.5766575687716795e-01,-1.8158415349148527e-01,
+-4.6752436213637338e-02,3.2053316350584282e-02,5.4833104201179594e-02,
+3.6363005943940152e-02,6.1951787904490629e-03,8.6578585580809886e-03,
+1.0285535967000214e-01,3.6266807515517030e-01,8.7675247664833478e-01,
+-1.5501562753684084e-01,-3.3599417492200701e-01,-3.8788094325695965e-01,
+-3.5568614121780229e-01,-2.7691827603462116e-01,-1.8158415349148527e-01,
+-9.2188877926446366e-02,-2.3735852231538956e-02,1.6273222147219712e-02,
+2.7838345209829640e-02,1.8461218402308077e-02,3.1452446166895243e-03,
+4.3955281910257327e-03,5.2218874909385704e-02,1.8412379200185569e-01,
+4.4512048814453919e-01,-3.9911843072104602e-02,-8.6508354000898180e-02,
+-9.9867630018479758e-02,-9.1578440682269502e-02,-7.1298093956784214e-02,
+-4.6752436213637338e-02,-2.3735852231538956e-02,-6.1112651962957898e-03,
+4.1898632991888007e-03,7.1675332549148152e-03,4.7532062637856143e-03,
+8.0980551160791947e-04,1.1317157770918129e-03,1.3444783431850738e-02,
+4.7406316440401497e-02,1.1460508436016426e-01,2.7363428213220686e-02,
+5.9309842701850357e-02,6.8468918358348674e-02,6.2785877438955140e-02,
+4.8881738490536009e-02,3.2053316350584282e-02,1.6273222147219712e-02,
+4.1898632991888007e-03,-2.8725564841352025e-03,-4.9140372027522972e-03,
+-3.2587825660357339e-03,-5.5519999273201392e-04,-7.7590061096088903e-04,
+-9.2176992582153616e-03,-3.2501614481361685e-02,-7.8572868536639362e-02,
+4.6810186319135028e-02,1.0146041518623861e-01,1.1712870187352564e-01,
+1.0740681314587164e-01,8.3621221307339511e-02,5.4833104201179594e-02,
+2.7838345209829640e-02,7.1675332549148152e-03,-4.9140372027522972e-03,
+-8.4063661631716968e-03,-5.5747480871559674e-03,-9.4977189633027592e-04,
+-1.3273209731323732e-03,-1.5768573160812593e-02,-5.5600000763433854e-02,
+-1.3441337054587166e-01,3.1042544611636913e-02,6.7284275334031918e-02,
+7.7674823347706479e-02,7.1227676086209613e-02,5.5454073077498833e-02,
+3.6363005943940152e-02,1.8461218402308077e-02,4.7532062637856143e-03,
+-3.2587825660357339e-03,-5.5747480871559674e-03,-3.6969382051665889e-03,
+-6.2984873125060403e-04,-8.8022338218252116e-04,-1.0457053780328351e-02,
+-3.6871579453645609e-02,-8.9137287835683310e-02,5.2887298227233259e-03,
+1.1463246908760993e-02,1.3233488422201845e-02,1.2135085555428304e-02,
+9.4477309687590605e-03,6.1951787904490629e-03,3.1452446166895243e-03,
+8.0980551160791947e-04,-5.5519999273201392e-04,-9.4977189633027592e-04,
+-6.2984873125060403e-04,-1.0730756162047328e-04,-1.4996398363109620e-04,
+-1.7815721255374228e-03,-6.2818246476581407e-03,-1.5186352742375675e-02,
+7.3910820503897412e-03,1.6020065555721885e-02,1.8494005558977733e-02,
+1.6958970496716574e-02,1.3203350732737817e-02,8.6578585580809886e-03,
+4.3955281910257327e-03,1.1317157770918129e-03,-7.7590061096088903e-04,
+-1.3273209731323732e-03,-8.8022338218252116e-04,-1.4996398363109620e-04,
+-2.0957699575774313e-04,-2.4897747096019884e-03,-8.7789474889632402e-03,
+-2.1223163770400788e-02,8.7806054758630125e-02,1.9031837880197600e-01,
+2.1970878604065547e-01,2.0147256950099290e-01,1.5685580670492527e-01,
+1.0285535967000214e-01,5.2218874909385704e-02,1.3444783431850738e-02,
+-9.2176992582153616e-03,-1.5768573160812593e-02,-1.0457053780328351e-02,
+-1.7815721255374228e-03,-2.4897747096019884e-03,-2.9578523550071623e-02,
+-1.0429389616888329e-01,-2.5213118559236136e-01,3.0960421477743694e-01,
+6.7106274605635008e-01,7.7469334397051171e-01,7.1039243080690540e-01,
+5.5307369180468413e-01,3.6266807515517030e-01,1.8412379200185569e-01,
+4.7406316440401497e-02,-3.2501614481361685e-02,-5.5600000763433854e-02,
+-3.6871579453645609e-02,-6.2818246476581407e-03,-8.7789474889632402e-03,
+-1.0429389616888329e-01,-3.6774035592657128e-01,-8.8901474904901079e-01,
+7.4847024230280113e-01,1.6222986386094362e+00,1.8728262962724784e+00,
+1.7173784123008318e+00,1.3370593175352496e+00,8.7675247664833478e-01,
+4.4512048814453919e-01,1.1460508436016426e-01,-7.8572868536639362e-02,
+-1.3441337054587166e-01,-8.9137287835683310e-02,-1.5186352742375675e-02,
+-2.1223163770400788e-02,-2.5213118559236136e-01,-8.8901474904901079e-01,
+-2.1491990511492531e+00,-2.0293507290602975e-01,-4.3985889337250228e-01,
+-5.0778523913663776e-01,-4.6563816917455370e-01,-3.6252106596634803e-01,
+-2.3771663549609912e-01,-1.2068690725186570e-01,-3.1073234225686974e-02,
+2.1303707086417489e-02,3.6443916684447686e-02,2.4168071064423202e-02,
+4.1175232183832122e-03,5.7543026343864767e-03,6.8361115296511343e-02,
+2.4104134368485575e-01,5.8271904677553721e-01,-4.3985889337250228e-01,
+-9.5338791520021005e-01,-1.1006173066050451e+00,-1.0092641300104788e+00,
+-7.8575927076940388e-01,-5.1524743716413468e-01,-2.6158716040640684e-01,
+-6.7350794637377476e-02,4.6175483072374846e-02,7.8991672722850126e-02,
+5.2383951384626926e-02,8.9246731988623651e-03,1.2472369377292125e-02,
+1.4817174820223045e-01,5.2245369502657013e-01,1.2630352722737825e+00,
+-5.0778523913663776e-01,-1.1006173066050451e+00,-1.2705829770709443e+00,
+-1.1651223502155972e+00,-9.0710217577338881e-01,-5.9481585353182709e-01,
+-3.0198343333154298e-01,-7.7751615066290469e-02,5.3306251317053466e-02,
+9.1190165818488822e-02,6.0473478384892587e-02,1.0302888910018737e-02,
+1.4398447234498235e-02,1.7105355314583903e-01,6.0313495637842607e-01,
+1.4580827566135213e+00,-4.6563816917455370e-01,-1.0092641300104788e+00,
+-1.1651223502155972e+00,-1.0684151412931442e+00,-8.3181109616248250e-01,
+-5.4544508915910228e-01,-2.7691827603462116e-01,-7.1298093956784214e-02,
+4.8881738490536009e-02,8.3621221307339511e-02,5.5454073077498833e-02,
+9.4477309687590605e-03,1.3203350732737817e-02,1.5685580670492527e-01,
+5.5307369180468413e-01,1.3370593175352496e+00,-3.6252106596634803e-01,
+-7.8575927076940388e-01,-9.0710217577338881e-01,-8.3181109616248250e-01,
+-6.4760379459016804e-01,-4.2465448117923188e-01,-2.1559381352176388e-01,
+-5.5508896679157260e-02,3.8056716817891356e-02,6.5103026969381972e-02,
+4.3173586306011202e-02,7.3554998891722789e-03,1.0279425310955048e-02,
+1.2211957269414597e-01,4.3059370469222813e-01,1.0409631364893812e+00,
+-2.3771663549609912e-01,-5.1524743716413468e-01,-5.9481585353182709e-01,
+-5.4544508915910228e-01,-4.2465448117923188e-01,-2.7845949929883318e-01,
+-1.4137174579786915e-01,-3.6398955529648447e-02,2.4955004079174614e-02,
+4.2690133028600030e-02,2.8310298745282125e-02,4.8232360825295473e-03,
+6.7405473203052679e-03,8.0077702165226583e-02,2.8235403775056511e-01,
+6.8259275863624680e-01,-1.2068690725186570e-01,-2.6158716040640684e-01,
+-3.0198343333154298e-01,-2.7691827603462116e-01,-2.1559381352176388e-01,
+-1.4137174579786915e-01,-7.1773347866610493e-02,-1.8479469730436904e-02,
+1.2669463609427112e-02,2.1673452152981554e-02,1.4372920901450925e-02,
+2.4487198572842317e-03,3.4221240241549822e-03,4.0654833406961188e-02,
+1.4334897301182536e-01,3.4654709284609453e-01,-3.1073234225686974e-02,
+-6.7350794637377476e-02,-7.7751615066290469e-02,-7.1298093956784214e-02,
+-5.5508896679157260e-02,-3.6398955529648447e-02,-1.8479469730436904e-02,
+-4.7579054296420509e-03,3.2620042986764020e-03,5.5802594545184547e-03,
+3.7005931119438173e-03,6.3047141907190962e-04,8.8109359808186127e-04,
+1.0467391945212512e-02,3.6908031830762411e-02,8.9225411699089818e-02,
+2.1303707086417489e-02,4.6175483072374846e-02,5.3306251317053466e-02,
+4.8881738490536009e-02,3.8056716817891356e-02,2.4955004079174614e-02,
+1.2669463609427112e-02,3.2620042986764020e-03,-2.2364194080637390e-03,
+-3.8258075107933109e-03,-2.5371144545260904e-03,-4.3224912928963022e-04,
+-6.0407487012525962e-04,-7.1764094570880843e-03,-2.5304025115246986e-02,
+-6.1172648514684624e-02,3.6443916684447686e-02,7.8991672722850126e-02,
+9.1190165818488822e-02,8.3621221307339511e-02,6.5103026969381972e-02,
+4.2690133028600030e-02,2.1673452152981554e-02,5.5802594545184547e-03,
+-3.8258075107933109e-03,-6.5447487429537432e-03,-4.3402017979587981e-03,
+-7.3944178780038783e-04,-1.0333813804663805e-03,-1.2276570799940600e-02,
+-4.3287197826202828e-02,-1.0464708779522880e-01,2.4168071064423202e-02,
+5.2383951384626926e-02,6.0473478384892587e-02,5.5454073077498833e-02,
+4.3173586306011202e-02,2.8310298745282125e-02,1.4372920901450925e-02,
+3.7005931119438173e-03,-2.5371144545260904e-03,-4.3402017979587981e-03,
+-2.8782390870674135e-03,-4.9036665927815193e-04,-6.8529502073033655e-04,
+-8.1413048462763982e-03,-2.8706246979481875e-02,-6.9397542432625414e-02,
+4.1175232183832122e-03,8.9246731988623651e-03,1.0302888910018737e-02,
+9.4477309687590605e-03,7.3554998891722789e-03,4.8232360825295473e-03,
+2.4487198572842317e-03,6.3047141907190962e-04,-4.3224912928963022e-04,
+-7.3944178780038783e-04,-4.9036665927815193e-04,-8.3543949358499958e-05,
+-1.1675396649479808e-04,-1.3870371219582012e-03,-4.8906939298376528e-03,
+-1.1823285007039885e-02,5.7543026343864767e-03,1.2472369377292125e-02,
+1.4398447234498235e-02,1.3203350732737817e-02,1.0279425310955048e-02,
+6.7405473203052679e-03,3.4221240241549822e-03,8.8109359808186127e-04,
+-6.0407487012525962e-04,-1.0333813804663805e-03,-6.8529502073033655e-04,
+-1.1675396649479808e-04,-1.6316548112627061e-04,-1.9384059157800948e-03,
+-6.8348207094004465e-03,-1.6523224388720337e-02,6.8361115296511343e-02,
+1.4817174820223045e-01,1.7105355314583903e-01,1.5685580670492527e-01,
+1.2211957269414597e-01,8.0077702165226583e-02,4.0654833406961188e-02,
+1.0467391945212512e-02,-7.1764094570880843e-03,-1.2276570799940600e-02,
+-8.1413048462763982e-03,-1.3870371219582012e-03,-1.9384059157800948e-03,
+-2.3028262279467526e-02,-8.1197670027677304e-02,-1.9629590573799760e-01,
+2.4104134368485575e-01,5.2245369502657013e-01,6.0313495637842607e-01,
+5.5307369180468413e-01,4.3059370469222813e-01,2.8235403775056511e-01,
+1.4334897301182536e-01,3.6908031830762411e-02,-2.5304025115246986e-02,
+-4.3287197826202828e-02,-2.8706246979481875e-02,-4.8906939298376528e-03,
+-6.8348207094004465e-03,-8.1197670027677304e-02,-2.8630304527155204e-01,
+-6.9213951050528522e-01,5.8271904677553721e-01,1.2630352722737825e+00,
+1.4580827566135213e+00,1.3370593175352496e+00,1.0409631364893812e+00,
+6.8259275863624680e-01,3.4654709284609453e-01,8.9225411699089818e-02,
+-6.1172648514684624e-02,-1.0464708779522880e-01,-6.9397542432625414e-02,
+-1.1823285007039885e-02,-1.6523224388720337e-02,-1.9629590573799760e-01,
+-6.9213951050528522e-01,-1.6732518564310794e+00,-1.3307100547876871e-01,
+-2.8842951773526693e-01,-3.3297099102469474e-01,-3.0533381181498953e-01,
+-2.3771663549609912e-01,-1.5587838637998175e-01,-7.9138257700606118e-02,
+-2.0375711613951353e-02,1.3969520801992985e-02,2.3897439547226895e-02,
+1.5847775699739941e-02,2.6999914155112492e-03,3.7732799285095098e-03,
+4.4826565550692976e-02,1.5805850367200946e-01,3.8210748076039636e-01,
+-2.8842951773526693e-01,-6.2516689042581675e-01,-7.2170990228528353e-01,
+-6.6180670817971077e-01,-5.1524743716413468e-01,-3.3786419248258426e-01,
+-1.7153105156808124e-01,-4.4164066042640115e-02,3.0278738282731865e-02,
+5.1797361408034703e-02,3.4349829144275645e-02,5.8521931134691840e-03,
+8.1785307486370584e-03,9.7160945293808254e-02,3.4258956580401900e-01,
+8.2821254714531278e-01,-3.3297099102469474e-01,-7.2170990228528353e-01,
+-8.3316181812165269e-01,-7.6400791853643568e-01,-5.9481585353182709e-01,
+-3.9003974310958256e-01,-1.9802017727101884e-01,-5.0984216017013750e-02,
+3.4954610651993789e-02,5.9796302736003781e-02,3.9654390235455139e-02,
+6.7559331512256904e-03,9.4415214846321760e-03,1.1216527523743025e-01,
+3.9549484441181448e-01,9.5611140901041836e-01,-3.0533381181498953e-01,
+-6.6180670817971077e-01,-7.6400791853643568e-01,-7.0059391451991360e-01,
+-5.4544508915910228e-01,-3.5766575687716795e-01,-1.8158415349148527e-01,
+-4.6752436213637338e-02,3.2053316350584282e-02,5.4833104201179594e-02,
+3.6363005943940152e-02,6.1951787904490629e-03,8.6578585580809886e-03,
+1.0285535967000214e-01,3.6266807515517030e-01,8.7675247664833478e-01,
+-2.3771663549609912e-01,-5.1524743716413468e-01,-5.9481585353182709e-01,
+-5.4544508915910228e-01,-4.2465448117923188e-01,-2.7845949929883318e-01,
+-1.4137174579786915e-01,-3.6398955529648447e-02,2.4955004079174614e-02,
+4.2690133028600030e-02,2.8310298745282125e-02,4.8232360825295473e-03,
+6.7405473203052679e-03,8.0077702165226583e-02,2.8235403775056511e-01,
+6.8259275863624680e-01,-1.5587838637998175e-01,-3.3786419248258426e-01,
+-3.9003974310958256e-01,-3.5766575687716795e-01,-2.7845949929883318e-01,
+-1.8259478278537244e-01,-9.2701966644881395e-02,-2.3867957082757130e-02,
+1.6363792798301802e-02,2.7993282998295399e-02,1.8563966619922212e-02,
+3.1627498685793398e-03,4.4199920523624314e-03,5.2509505582065685e-02,
+1.8514855597118185e-01,4.4759786183590222e-01,-7.9138257700606118e-02,
+-1.7153105156808124e-01,-1.9802017727101884e-01,-1.8158415349148527e-01,
+-1.4137174579786915e-01,-9.2701966644881395e-02,-4.7064075373555170e-02,
+-1.2117578211245927e-02,8.3077717283686070e-03,1.4211974445288433e-02,
+9.4247830531912768e-03,1.6057037794325879e-03,2.2439959650455421e-03,
+2.6658672064741040e-02,9.3998497646907708e-02,2.2724199139361190e-01,
+-2.0375711613951353e-02,-4.4164066042640115e-02,-5.0984216017013750e-02,
+-4.6752436213637338e-02,-3.6398955529648447e-02,-2.3867957082757130e-02,
+-1.2117578211245927e-02,-3.1199104739698669e-03,2.1390003496435384e-03,
+3.6591542595942883e-03,2.4265970353098965e-03,4.1342023564538977e-04,
+5.7776119888330868e-04,6.8638030427337071e-03,2.4201774664334152e-02,
+5.8507950740249726e-02,1.3969520801992985e-02,3.0278738282731865e-02,
+3.4954610651993789e-02,3.2053316350584282e-02,2.4955004079174614e-02,
+1.6363792798301802e-02,8.3077717283686070e-03,2.1390003496435384e-03,
+-1.4664915977391502e-03,-2.5087041137794586e-03,-1.6636669386116409e-03,
+-2.8343955250420549e-04,-3.9611117585991451e-04,-4.7058007692157844e-03,
+-1.6592657033243086e-02,-4.0112858408747343e-02,2.3897439547226895e-02,
+5.1797361408034703e-02,5.9796302736003781e-02,5.4833104201179594e-02,
+4.2690133028600030e-02,2.7993282998295399e-02,1.4211974445288433e-02,
+3.6591542595942883e-03,-2.5087041137794586e-03,-4.2916006748328073e-03,
+-2.8460088685733353e-03,-4.8487558501619787e-04,-6.7762115918412746e-04,
+-8.0501393711074343e-03,-2.8384797445824006e-02,-6.8620436053379308e-02,
+1.5847775699739941e-02,3.4349829144275645e-02,3.9654390235455139e-02,
+3.6363005943940152e-02,2.8310298745282125e-02,1.8563966619922212e-02,
+9.4247830531912768e-03,2.4265970353098965e-03,-1.6636669386116409e-03,
+-2.8460088685733353e-03,-1.8873532496854750e-03,-3.2154907216863649e-04,
+-4.4936982135368453e-04,-5.3385134776817722e-03,-1.8823602516704341e-02,
+-4.5506183909083120e-02,2.6999914155112492e-03,5.8521931134691840e-03,
+6.7559331512256904e-03,6.1951787904490629e-03,4.8232360825295473e-03,
+3.1627498685793398e-03,1.6057037794325879e-03,4.1342023564538977e-04,
+-2.8343955250420549e-04,-4.8487558501619787e-04,-3.2154907216863649e-04,
+-5.4782434517619549e-05,-7.6559302897294401e-05,-9.0952451841985749e-04,
+-3.2069841324755544e-03,-7.7529054067326797e-03,3.7732799285095098e-03,
+8.1785307486370584e-03,9.4415214846321760e-03,8.6578585580809886e-03,
+6.7405473203052679e-03,4.4199920523624314e-03,2.2439959650455421e-03,
+5.7776119888330868e-04,-3.9611117585991451e-04,-6.7762115918412746e-04,
+-4.4936982135368453e-04,-7.6559302897294401e-05,-1.0699281460802013e-04,
+-1.2710746375432791e-03,-4.4818101230248431e-03,-1.0834805692638838e-02,
+4.4826565550692976e-02,9.7160945293808254e-02,1.1216527523743025e-01,
+1.0285535967000214e-01,8.0077702165226583e-02,5.2509505582065685e-02,
+2.6658672064741040e-02,6.8638030427337071e-03,-4.7058007692157844e-03,
+-8.0501393711074343e-03,-5.3385134776817722e-03,-9.0952451841985749e-04,
+-1.2710746375432791e-03,-1.5100366694014156e-02,-5.3243904261535135e-02,
+-1.2871749162854940e-01,1.5805850367200946e-01,3.4258956580401900e-01,
+3.9549484441181448e-01,3.6266807515517030e-01,2.8235403775056511e-01,
+1.8514855597118185e-01,9.3998497646907708e-02,2.4201774664334152e-02,
+-1.6592657033243086e-02,-2.8384797445824006e-02,-1.8823602516704341e-02,
+-3.2069841324755544e-03,-4.4818101230248431e-03,-5.3243904261535135e-02,
+-1.8773804626448509e-01,-4.5385797179164911e-01,3.8210748076039636e-01,
+8.2821254714531278e-01,9.5611140901041836e-01,8.7675247664833478e-01,
+6.8259275863624680e-01,4.4759786183590222e-01,2.2724199139361190e-01,
+5.8507950740249726e-02,-4.0112858408747343e-02,-6.8620436053379308e-02,
+-4.5506183909083120e-02,-7.7529054067326797e-03,-1.0834805692638838e-02,
+-1.2871749162854940e-01,-4.5385797179164911e-01,-1.0972046564745597e+00,
+-6.7559125858451807e-02,-1.4643344746559706e-01,-1.6904681082792195e-01,
+-1.5501562753684084e-01,-1.2068690725186570e-01,-7.9138257700606118e-02,
+-4.0177884678769260e-02,-1.0344592050159918e-02,7.0922182533195155e-03,
+1.2132546231669039e-02,8.0457938167910470e-03,1.3707648724903265e-03,
+1.9156651944740588e-03,2.2758102510351819e-02,8.0245086479635575e-02,
+1.9399302869373969e-01,-1.4643344746559706e-01,-3.1739242129310696e-01,
+-3.6640656577560549e-01,-3.3599417492200701e-01,-2.6158716040640684e-01,
+-1.7153105156808124e-01,-8.7084995411487398e-02,-2.2421756606263443e-02,
+1.5372282512771562e-02,2.6297121945617619e-02,1.7439144027093789e-02,
+2.9711134268382011e-03,4.1521771493080450e-03,4.9327864533779575e-02,
+1.7393008725434811e-01,4.2047713931992803e-01,-1.6904681082792195e-01,
+-3.6640656577560549e-01,-4.2298984612330059e-01,-3.8788094325695965e-01,
+-3.0198343333154298e-01,-1.9802017727101884e-01,-1.0053332076836341e-01,
+-2.5884294285560827e-02,1.7746186946396847e-02,3.0358122927509612e-02,
+2.0132228888769532e-02,3.4299352921607351e-03,4.7933878306594124e-03,
+5.6945447428233820e-02,2.0078969023984428e-01,4.8541040765144317e-01,
+-1.5501562753684084e-01,-3.3599417492200701e-01,-3.8788094325695965e-01,
+-3.5568614121780229e-01,-2.7691827603462116e-01,-1.8158415349148527e-01,
+-9.2188877926446366e-02,-2.3735852231538956e-02,1.6273222147219712e-02,
+2.7838345209829640e-02,1.8461218402308077e-02,3.1452446166895243e-03,
+4.3955281910257327e-03,5.2218874909385704e-02,1.8412379200185569e-01,
+4.4512048814453919e-01,-1.2068690725186570e-01,-2.6158716040640684e-01,
+-3.0198343333154298e-01,-2.7691827603462116e-01,-2.1559381352176388e-01,
+-1.4137174579786915e-01,-7.1773347866610493e-02,-1.8479469730436904e-02,
+1.2669463609427112e-02,2.1673452152981554e-02,1.4372920901450925e-02,
+2.4487198572842317e-03,3.4221240241549822e-03,4.0654833406961188e-02,
+1.4334897301182536e-01,3.4654709284609453e-01,-7.9138257700606118e-02,
+-1.7153105156808124e-01,-1.9802017727101884e-01,-1.8158415349148527e-01,
+-1.4137174579786915e-01,-9.2701966644881395e-02,-4.7064075373555170e-02,
+-1.2117578211245927e-02,8.3077717283686070e-03,1.4211974445288433e-02,
+9.4247830531912768e-03,1.6057037794325879e-03,2.2439959650455421e-03,
+2.6658672064741040e-02,9.3998497646907708e-02,2.2724199139361190e-01,
+-4.0177884678769260e-02,-8.7084995411487398e-02,-1.0053332076836341e-01,
+-9.2188877926446366e-02,-7.1773347866610493e-02,-4.7064075373555170e-02,
+-2.3894069035804932e-02,-6.1520012457094708e-03,4.2177918005563697e-03,
+7.2153101029925892e-03,4.7848898577740329e-03,8.1520345725039078e-04,
+1.1392594899461983e-03,1.3534402740560836e-02,4.7722314189968529e-02,
+1.1536901101521835e-01,-1.0344592050159918e-02,-2.2421756606263443e-02,
+-2.5884294285560827e-02,-2.3735852231538956e-02,-1.8479469730436904e-02,
+-1.2117578211245927e-02,-6.1520012457094708e-03,-1.5839545483231632e-03,
+1.0859540236651810e-03,1.8577244702555618e-03,1.2319646486957936e-03,
+2.0989027348150557e-04,2.9332491635614133e-04,3.4847000063109590e-03,
+1.2287054829585031e-02,2.9704036529665245e-02,7.0922182533195155e-03,
+1.5372282512771562e-02,1.7746186946396847e-02,1.6273222147219712e-02,
+1.2669463609427112e-02,8.3077717283686070e-03,4.2177918005563697e-03,
+1.0859540236651810e-03,-7.4452650346756855e-04,-1.2736497808418790e-03,
+-8.4463090729514079e-04,-1.4390008050213510e-04,-2.0110259697503352e-04,
+-2.3890988520633982e-03,-8.4239643399541819e-03,-2.0364989653671728e-02,
+1.2132546231669039e-02,2.6297121945617619e-02,3.0358122927509612e-02,
+2.7838345209829640e-02,2.1673452152981554e-02,1.4211974445288433e-02,
+7.2153101029925892e-03,1.8577244702555618e-03,-1.2736497808418790e-03,
+-2.1788126502997329e-03,-1.4448968101987703e-03,-2.4616760470053123e-04,
+-3.4402305004732625e-04,-4.0869938345622359e-03,-1.4410743318649111e-02,
+-3.4838067534792572e-02,8.0457938167910470e-03,1.7439144027093789e-02,
+2.0132228888769532e-02,1.8461218402308077e-02,1.4372920901450925e-02,
+9.4247830531912768e-03,4.7848898577740329e-03,1.2319646486957936e-03,
+-8.4463090729514079e-04,-1.4448968101987703e-03,-9.5819472676339501e-04,
+-1.6324799048561545e-04,-2.2814160161033215e-04,-2.7103222271307459e-03,
+-9.5565982007883576e-03,-2.3103139523072969e-02,1.3707648724903265e-03,
+2.9711134268382011e-03,3.4299352921607351e-03,3.1452446166895243e-03,
+2.4487198572842317e-03,1.6057037794325879e-03,8.1520345725039078e-04,
+2.0989027348150557e-04,-1.4390008050213510e-04,-2.4616760470053123e-04,
+-1.6324799048561545e-04,-2.7812620601253002e-05,-3.8868569163241773e-05,
+-4.6175860165931226e-04,-1.6281611749491276e-03,-3.9360904372642835e-03,
+1.9156651944740588e-03,4.1521771493080450e-03,4.7933878306594124e-03,
+4.3955281910257327e-03,3.4221240241549822e-03,2.2439959650455421e-03,
+1.1392594899461983e-03,2.9332491635614133e-04,-2.0110259697503352e-04,
+-3.4402305004732625e-04,-2.2814160161033215e-04,-3.8868569163241773e-05,
+-5.4319428954840987e-05,-6.4531481598351093e-04,-2.2753805239972280e-03,
+-5.5007475054935639e-03,2.2758102510351819e-02,4.9327864533779575e-02,
+5.6945447428233820e-02,5.2218874909385704e-02,4.0654833406961188e-02,
+2.6658672064741040e-02,1.3534402740560836e-02,3.4847000063109590e-03,
+-2.3890988520633982e-03,-4.0869938345622359e-03,-2.7103222271307459e-03,
+-4.6175860165931226e-04,-6.4531481598351093e-04,-7.6663400138841098e-03,
+-2.7031520625087069e-02,-6.5348880365263540e-02,8.0245086479635575e-02,
+1.7393008725434811e-01,2.0078969023984428e-01,1.8412379200185569e-01,
+1.4334897301182536e-01,9.3998497646907708e-02,4.7722314189968529e-02,
+1.2287054829585031e-02,-8.4239643399541819e-03,-1.4410743318649111e-02,
+-9.5565982007883576e-03,-1.6281611749491276e-03,-2.2753805239972280e-03,
+-2.7031520625087069e-02,-9.5313161949661662e-02,-2.3042020106345262e-01,
+1.9399302869373969e-01,4.2047713931992803e-01,4.8541040765144317e-01,
+4.4512048814453919e-01,3.4654709284609453e-01,2.2724199139361190e-01,
+1.1536901101521835e-01,2.9704036529665245e-02,-2.0364989653671728e-02,
+-3.4838067534792572e-02,-2.3103139523072969e-02,-3.9360904372642835e-03,
+-5.5007475054935639e-03,-6.5348880365263540e-02,-2.3042020106345262e-01,
+-5.5704236405631491e-01,-1.7394434820516835e-02,-3.7702190860500195e-02,
+-4.3524449068854665e-02,-3.9911843072104602e-02,-3.1073234225686974e-02,
+-2.0375711613951353e-02,-1.0344592050159918e-02,-2.6634200764874549e-03,
+1.8260320359786419e-03,3.1237642872383731e-03,2.0715489483791316e-03,
+3.5293056157570390e-04,4.9322594009026943e-04,5.8595241682724009e-03,
+2.0660686601559064e-02,4.9947346866474618e-02,-3.7702190860500195e-02,
+-8.1718964160018004e-02,-9.4338626280432436e-02,-8.6508354000898180e-02,
+-6.7350794637377476e-02,-4.4164066042640115e-02,-2.2421756606263443e-02,
+-5.7729252546323551e-03,3.9578985490607010e-03,6.7707148048157251e-03,
+4.4900529758251650e-03,7.6497198847391701e-04,1.0690602323393250e-03,
+1.2700435560191181e-02,4.4781745287991725e-02,1.0826016619489565e-01,
+-4.3524449068854665e-02,-9.4338626280432436e-02,-1.0890711232036665e-01,
+-9.9867630018479758e-02,-7.7751615066290469e-02,-5.0984216017013750e-02,
+-2.5884294285560827e-02,-6.6644241485391831e-03,4.5691072557474399e-03,
+7.8162999272990419e-03,5.1834410044193646e-03,8.8310476371589175e-04,
+1.2341526200998487e-03,1.4661733126786203e-02,5.1697281975293663e-02,
+1.2497852199544468e-01,-3.9911843072104602e-02,-8.6508354000898180e-02,
+-9.9867630018479758e-02,-9.1578440682269502e-02,-7.1298093956784214e-02,
+-4.6752436213637338e-02,-2.3735852231538956e-02,-6.1112651962957898e-03,
+4.1898632991888007e-03,7.1675332549148152e-03,4.7532062637856143e-03,
+8.0980551160791947e-04,1.1317157770918129e-03,1.3444783431850738e-02,
+4.7406316440401497e-02,1.1460508436016426e-01,-3.1073234225686974e-02,
+-6.7350794637377476e-02,-7.7751615066290469e-02,-7.1298093956784214e-02,
+-5.5508896679157260e-02,-3.6398955529648447e-02,-1.8479469730436904e-02,
+-4.7579054296420509e-03,3.2620042986764020e-03,5.5802594545184547e-03,
+3.7005931119438173e-03,6.3047141907190962e-04,8.8109359808186127e-04,
+1.0467391945212512e-02,3.6908031830762411e-02,8.9225411699089818e-02,
+-2.0375711613951353e-02,-4.4164066042640115e-02,-5.0984216017013750e-02,
+-4.6752436213637338e-02,-3.6398955529648447e-02,-2.3867957082757130e-02,
+-1.2117578211245927e-02,-3.1199104739698669e-03,2.1390003496435384e-03,
+3.6591542595942883e-03,2.4265970353098965e-03,4.1342023564538977e-04,
+5.7776119888330868e-04,6.8638030427337071e-03,2.4201774664334152e-02,
+5.8507950740249726e-02,-1.0344592050159918e-02,-2.2421756606263443e-02,
+-2.5884294285560827e-02,-2.3735852231538956e-02,-1.8479469730436904e-02,
+-1.2117578211245927e-02,-6.1520012457094708e-03,-1.5839545483231632e-03,
+1.0859540236651810e-03,1.8577244702555618e-03,1.2319646486957936e-03,
+2.0989027348150557e-04,2.9332491635614133e-04,3.4847000063109590e-03,
+1.2287054829585031e-02,2.9704036529665245e-02,-2.6634200764874549e-03,
+-5.7729252546323551e-03,-6.6644241485391831e-03,-6.1112651962957898e-03,
+-4.7579054296420509e-03,-3.1199104739698669e-03,-1.5839545483231632e-03,
+-4.0782046539789008e-04,2.7960036845797731e-04,4.7830795324443898e-04,
+3.1719369530947006e-04,5.4040407349020825e-05,7.5522308407016681e-05,
+8.9720502387535817e-04,3.1635455854939210e-03,7.6478924313505559e-03,
+1.8260320359786419e-03,3.9578985490607010e-03,4.5691072557474399e-03,
+4.1898632991888007e-03,3.2620042986764020e-03,2.1390003496435384e-03,
+1.0859540236651810e-03,2.7960036845797731e-04,-1.9169309211974905e-04,
+-3.2792635806799808e-04,-2.1746695324509346e-04,-3.7049925367682590e-05,
+-5.1777846010736539e-05,-6.1512081060755008e-04,-2.1689164384497417e-03,
+-5.2433698726872535e-03,3.1237642872383731e-03,6.7707148048157251e-03,
+7.8162999272990419e-03,7.1675332549148152e-03,5.5802594545184547e-03,
+3.6591542595942883e-03,1.8577244702555618e-03,4.7830795324443898e-04,
+-3.2792635806799808e-04,-5.6097846368174942e-04,-3.7201729696789698e-04,
+-6.3380724668604671e-05,-8.8575546897118329e-05,-1.0522774971377657e-03,
+-3.7103312422459567e-03,-8.9697503824481828e-03,2.0715489483791316e-03,
+4.4900529758251650e-03,5.1834410044193646e-03,4.7532062637856143e-03,
+3.7005931119438173e-03,2.4265970353098965e-03,1.2319646486957936e-03,
+3.1719369530947006e-04,-2.1746695324509346e-04,-3.7201729696789698e-04,
+-2.4670620746292116e-04,-4.2031427938127308e-05,-5.8739573205457418e-05,
+-6.9782612968083413e-04,-2.4605354553841607e-03,-5.9483607799393212e-03,
+3.5293056157570390e-04,7.6497198847391701e-04,8.8310476371589175e-04,
+8.0980551160791947e-04,6.3047141907190962e-04,4.1342023564538977e-04,
+2.0989027348150557e-04,5.4040407349020825e-05,-3.7049925367682590e-05,
+-6.3380724668604671e-05,-4.2031427938127308e-05,-7.1609099450142821e-06,
+-1.0007482842411264e-05,-1.1888889616784581e-04,-4.1920233684322739e-04,
+-1.0134244291748473e-03,4.9322594009026943e-04,1.0690602323393250e-03,
+1.2341526200998487e-03,1.1317157770918129e-03,8.8109359808186127e-04,
+5.7776119888330868e-04,2.9332491635614133e-04,7.5522308407016681e-05,
+-5.1777846010736539e-05,-8.8575546897118329e-05,-5.8739573205457418e-05,
+-1.0007482842411264e-05,-1.3985612667966052e-05,-1.6614907849543670e-04,
+-5.8584177509146684e-04,-1.4162763761760289e-03,5.8595241682724009e-03,
+1.2700435560191181e-02,1.4661733126786203e-02,1.3444783431850738e-02,
+1.0467391945212512e-02,6.8638030427337071e-03,3.4847000063109590e-03,
+8.9720502387535817e-04,-6.1512081060755008e-04,-1.0522774971377657e-03,
+-6.9782612968083413e-04,-1.1888889616784581e-04,-1.6614907849543670e-04,
+-1.9738510525257880e-03,-6.9598002880866261e-03,-1.6825363348971223e-02,
+2.0660686601559064e-02,4.4781745287991725e-02,5.1697281975293663e-02,
+4.7406316440401497e-02,3.6908031830762411e-02,2.4201774664334152e-02,
+1.2287054829585031e-02,3.1635455854939210e-03,-2.1689164384497417e-03,
+-3.7103312422459567e-03,-2.4605354553841607e-03,-4.1920233684322739e-04,
+-5.8584177509146684e-04,-6.9598002880866261e-03,-2.4540261023275889e-02,
+-5.9326243757595876e-02,4.9947346866474618e-02,1.0826016619489565e-01,
+1.2497852199544468e-01,1.1460508436016426e-01,8.9225411699089818e-02,
+5.8507950740249726e-02,2.9704036529665245e-02,7.6478924313505559e-03,
+-5.2433698726872535e-03,-8.9697503824481828e-03,-5.9483607799393212e-03,
+-1.0134244291748473e-03,-1.4162763761760289e-03,-1.6825363348971223e-02,
+-5.9326243757595876e-02,-1.4342158769409252e-01,1.1925567247317304e-02,
+2.5848497931519887e-02,2.9840218991239453e-02,2.7363428213220686e-02,
+2.1303707086417489e-02,1.3969520801992985e-02,7.0922182533195155e-03,
+1.8260320359786419e-03,-1.2519215522388549e-03,-2.1416425113329751e-03,
+-1.4202471390944993e-03,-2.4196803110498877e-04,-3.3815408073678555e-04,
+-4.0172704791530123e-03,-1.4164898715307572e-02,-3.4243736575945150e-02,
+2.5848497931519887e-02,5.6026252794481479e-02,6.4678251598024872e-02,
+5.9309842701850357e-02,4.6175483072374846e-02,3.0278738282731865e-02,
+1.5372282512771562e-02,3.9578985490607010e-03,-2.7135222151173366e-03,
+-4.6419797797625506e-03,-3.0783655381583230e-03,-5.2446227687141800e-04,
+-7.3294417575198167e-04,-8.7073768079335423e-03,-3.0702217139833010e-02,
+-7.4222813531150678e-02,2.9840218991239453e-02,6.4678251598024872e-02,
+7.4666357664909810e-02,6.8468918358348674e-02,5.3306251317053466e-02,
+3.4954610651993789e-02,1.7746186946396847e-02,4.5691072557474399e-03,
+-3.1325648922120308e-03,-5.3588294974815653e-03,-3.5537500878035644e-03,
+-6.0545371866282949e-04,-8.4613097328656295e-04,-1.0052035962644368e-02,
+-3.5443486325448248e-02,-8.5684863228152608e-02,2.7363428213220686e-02,
+5.9309842701850357e-02,6.8468918358348674e-02,6.2785877438955140e-02,
+4.8881738490536009e-02,3.2053316350584282e-02,1.6273222147219712e-02,
+4.1898632991888007e-03,-2.8725564841352025e-03,-4.9140372027522972e-03,
+-3.2587825660357339e-03,-5.5519999273201392e-04,-7.7590061096088903e-04,
+-9.2176992582153616e-03,-3.2501614481361685e-02,-7.8572868536639362e-02,
+2.1303707086417489e-02,4.6175483072374846e-02,5.3306251317053466e-02,
+4.8881738490536009e-02,3.8056716817891356e-02,2.4955004079174614e-02,
+1.2669463609427112e-02,3.2620042986764020e-03,-2.2364194080637390e-03,
+-3.8258075107933109e-03,-2.5371144545260904e-03,-4.3224912928963022e-04,
+-6.0407487012525962e-04,-7.1764094570880843e-03,-2.5304025115246986e-02,
+-6.1172648514684624e-02,1.3969520801992985e-02,3.0278738282731865e-02,
+3.4954610651993789e-02,3.2053316350584282e-02,2.4955004079174614e-02,
+1.6363792798301802e-02,8.3077717283686070e-03,2.1390003496435384e-03,
+-1.4664915977391502e-03,-2.5087041137794586e-03,-1.6636669386116409e-03,
+-2.8343955250420549e-04,-3.9611117585991451e-04,-4.7058007692157844e-03,
+-1.6592657033243086e-02,-4.0112858408747343e-02,7.0922182533195155e-03,
+1.5372282512771562e-02,1.7746186946396847e-02,1.6273222147219712e-02,
+1.2669463609427112e-02,8.3077717283686070e-03,4.2177918005563697e-03,
+1.0859540236651810e-03,-7.4452650346756855e-04,-1.2736497808418790e-03,
+-8.4463090729514079e-04,-1.4390008050213510e-04,-2.0110259697503352e-04,
+-2.3890988520633982e-03,-8.4239643399541819e-03,-2.0364989653671728e-02,
+1.8260320359786419e-03,3.9578985490607010e-03,4.5691072557474399e-03,
+4.1898632991888007e-03,3.2620042986764020e-03,2.1390003496435384e-03,
+1.0859540236651810e-03,2.7960036845797731e-04,-1.9169309211974905e-04,
+-3.2792635806799808e-04,-2.1746695324509346e-04,-3.7049925367682590e-05,
+-5.1777846010736539e-05,-6.1512081060755008e-04,-2.1689164384497417e-03,
+-5.2433698726872535e-03,-1.2519215522388549e-03,-2.7135222151173366e-03,
+-3.1325648922120308e-03,-2.8725564841352025e-03,-2.2364194080637390e-03,
+-1.4664915977391502e-03,-7.4452650346756855e-04,-1.9169309211974905e-04,
+1.3142415286893083e-04,2.2482523149847111e-04,1.4909462720424926e-04,
+2.5401306857020245e-05,3.5498720762916491e-05,4.2172480266344792e-04,
+1.4870019697355019e-03,3.5948371225913434e-03,-2.1416425113329751e-03,
+-4.6419797797625506e-03,-5.3588294974815653e-03,-4.9140372027522972e-03,
+-3.8258075107933109e-03,-2.5087041137794586e-03,-1.2736497808418790e-03,
+-3.2792635806799808e-04,2.2482523149847111e-04,3.8460498785752861e-04,
+2.5505383405288740e-04,4.3453616171973408e-05,6.0727103345925570e-05,
+7.2143798774959578e-04,2.5437908846015489e-03,6.1496313321640628e-03,
+-1.4202471390944993e-03,-3.0783655381583230e-03,-3.5537500878035644e-03,
+-3.2587825660357339e-03,-2.5371144545260904e-03,-1.6636669386116409e-03,
+-8.4463090729514079e-04,-2.1746695324509346e-04,1.4909462720424926e-04,
+2.5505383405288740e-04,1.6914096363507269e-04,2.8816608619308681e-05,
+4.0271658008350641e-05,4.7842729713920562e-04,1.6869350076831324e-03,
+4.0781765676456416e-03,-2.4196803110498877e-04,-5.2446227687141800e-04,
+-6.0545371866282949e-04,-5.5519999273201392e-04,-4.3224912928963022e-04,
+-2.8343955250420549e-04,-1.4390008050213510e-04,-3.7049925367682590e-05,
+2.5401306857020245e-05,4.3453616171973408e-05,2.8816608619308681e-05,
+4.9094962832896272e-06,6.8610972903115908e-06,8.1509835808901698e-05,
+2.8740374204971886e-04,6.9480045226555376e-04,-3.3815408073678555e-04,
+-7.3294417575198167e-04,-8.4613097328656295e-04,-7.7590061096088903e-04,
+-6.0407487012525962e-04,-3.9611117585991451e-04,-2.0110259697503352e-04,
+-5.1777846010736539e-05,3.5498720762916491e-05,6.0727103345925570e-05,
+4.0271658008350641e-05,6.8610972903115908e-06,9.5884900019882480e-06,
+1.1391126122362039e-04,4.0165119230550772e-04,9.7099442086800991e-04,
+-4.0172704791530123e-03,-8.7073768079335423e-03,-1.0052035962644368e-02,
+-9.2176992582153616e-03,-7.1764094570880843e-03,-4.7058007692157844e-03,
+-2.3890988520633982e-03,-6.1512081060755008e-04,4.2172480266344792e-04,
+7.2143798774959578e-04,4.7842729713920562e-04,8.1509835808901698e-05,
+1.1391126122362039e-04,1.3532657833366102e-03,4.7716161645894317e-03,
+1.1535413719911958e-02,-1.4164898715307572e-02,-3.0702217139833010e-02,
+-3.5443486325448248e-02,-3.2501614481361685e-02,-2.5304025115246986e-02,
+-1.6592657033243086e-02,-8.4239643399541819e-03,-2.1689164384497417e-03,
+1.4870019697355019e-03,2.5437908846015489e-03,1.6869350076831324e-03,
+2.8740374204971886e-04,4.0165119230550772e-04,4.7716161645894317e-03,
+1.6824722166575157e-02,4.0673877407471082e-02,-3.4243736575945150e-02,
+-7.4222813531150678e-02,-8.5684863228152608e-02,-7.8572868536639362e-02,
+-6.1172648514684624e-02,-4.0112858408747343e-02,-2.0364989653671728e-02,
+-5.2433698726872535e-03,3.5948371225913434e-03,6.1496313321640628e-03,
+4.0781765676456416e-03,6.9480045226555376e-04,9.7099442086800991e-04,
+1.1535413719911958e-02,4.0673877407471082e-02,9.8329368353233804e-02,
+2.0400880345050609e-02,4.4218618910463192e-02,5.1047193352360409e-02,
+4.6810186319135028e-02,3.6443916684447686e-02,2.3897439547226895e-02,
+1.2132546231669039e-02,3.1237642872383731e-03,-2.1416425113329751e-03,
+-3.6636741640450055e-03,-2.4295944456298457e-03,-4.1393090555175149e-04,
+-5.7847486800710612e-04,-6.8722814319244208e-03,-2.4231669470964334e-02,
+-5.8580221633519614e-02,4.4218618910463192e-02,9.5843229570391486e-02,
+1.1064406785976644e-01,1.0146041518623861e-01,7.8991672722850126e-02,
+5.1797361408034703e-02,2.6297121945617619e-02,6.7707148048157251e-03,
+-4.6419797797625506e-03,-7.9409618081172084e-03,-5.2661115148566751e-03,
+-8.9718936919780390e-04,-1.2538360749658750e-03,-1.4895572570594595e-02,
+-5.2521800029126098e-02,-1.2697179985821094e-01,5.1047193352360409e-02,
+1.1064406785976644e-01,1.2773056383252879e-01,1.1712870187352564e-01,
+9.1190165818488822e-02,5.9796302736003781e-02,3.0358122927509612e-02,
+7.8162999272990419e-03,-5.3588294974815653e-03,-9.1672653468322096e-03,
+-6.0793443878992548e-03,-1.0357401549754286e-03,-1.4474629494998226e-03,
+-1.7195859840057892e-02,-6.0632614662381457e-02,-1.4657974801934870e-01,
+4.6810186319135028e-02,1.0146041518623861e-01,1.1712870187352564e-01,
+1.0740681314587164e-01,8.3621221307339511e-02,5.4833104201179594e-02,
+2.7838345209829640e-02,7.1675332549148152e-03,-4.9140372027522972e-03,
+-8.4063661631716968e-03,-5.5747480871559674e-03,-9.4977189633027592e-04,
+-1.3273209731323732e-03,-1.5768573160812593e-02,-5.5600000763433854e-02,
+-1.3441337054587166e-01,3.6443916684447686e-02,7.8991672722850126e-02,
+9.1190165818488822e-02,8.3621221307339511e-02,6.5103026969381972e-02,
+4.2690133028600030e-02,2.1673452152981554e-02,5.5802594545184547e-03,
+-3.8258075107933109e-03,-6.5447487429537432e-03,-4.3402017979587981e-03,
+-7.3944178780038783e-04,-1.0333813804663805e-03,-1.2276570799940600e-02,
+-4.3287197826202828e-02,-1.0464708779522880e-01,2.3897439547226895e-02,
+5.1797361408034703e-02,5.9796302736003781e-02,5.4833104201179594e-02,
+4.2690133028600030e-02,2.7993282998295399e-02,1.4211974445288433e-02,
+3.6591542595942883e-03,-2.5087041137794586e-03,-4.2916006748328073e-03,
+-2.8460088685733353e-03,-4.8487558501619787e-04,-6.7762115918412746e-04,
+-8.0501393711074343e-03,-2.8384797445824006e-02,-6.8620436053379308e-02,
+1.2132546231669039e-02,2.6297121945617619e-02,3.0358122927509612e-02,
+2.7838345209829640e-02,2.1673452152981554e-02,1.4211974445288433e-02,
+7.2153101029925892e-03,1.8577244702555618e-03,-1.2736497808418790e-03,
+-2.1788126502997329e-03,-1.4448968101987703e-03,-2.4616760470053123e-04,
+-3.4402305004732625e-04,-4.0869938345622359e-03,-1.4410743318649111e-02,
+-3.4838067534792572e-02,3.1237642872383731e-03,6.7707148048157251e-03,
+7.8162999272990419e-03,7.1675332549148152e-03,5.5802594545184547e-03,
+3.6591542595942883e-03,1.8577244702555618e-03,4.7830795324443898e-04,
+-3.2792635806799808e-04,-5.6097846368174942e-04,-3.7201729696789698e-04,
+-6.3380724668604671e-05,-8.8575546897118329e-05,-1.0522774971377657e-03,
+-3.7103312422459567e-03,-8.9697503824481828e-03,-2.1416425113329751e-03,
+-4.6419797797625506e-03,-5.3588294974815653e-03,-4.9140372027522972e-03,
+-3.8258075107933109e-03,-2.5087041137794586e-03,-1.2736497808418790e-03,
+-3.2792635806799808e-04,2.2482523149847111e-04,3.8460498785752861e-04,
+2.5505383405288740e-04,4.3453616171973408e-05,6.0727103345925570e-05,
+7.2143798774959578e-04,2.5437908846015489e-03,6.1496313321640628e-03,
+-3.6636741640450055e-03,-7.9409618081172084e-03,-9.1672653468322096e-03,
+-8.4063661631716968e-03,-6.5447487429537432e-03,-4.2916006748328073e-03,
+-2.1788126502997329e-03,-5.6097846368174942e-04,3.8460498785752861e-04,
+6.5793770431810117e-04,4.3631658286358288e-04,7.4335417821203009e-05,
+1.0388490068180545e-04,1.2341526200998487e-03,4.3516230618934060e-03,
+1.0520077609044165e-02,-2.4295944456298457e-03,-5.2661115148566751e-03,
+-6.0793443878992548e-03,-5.5747480871559674e-03,-4.3402017979587981e-03,
+-2.8460088685733353e-03,-1.4448968101987703e-03,-3.7201729696789698e-04,
+2.5505383405288740e-04,4.3631658286358288e-04,2.8934678653058654e-04,
+4.9296119186692522e-05,6.8892092031092034e-05,8.1843805332937336e-04,
+2.8858131884135219e-03,6.9764725196819199e-03,-4.1393090555175149e-04,
+-8.9718936919780390e-04,-1.0357401549754286e-03,-9.4977189633027592e-04,
+-7.3944178780038783e-04,-4.8487558501619787e-04,-2.4616760470053123e-04,
+-6.3380724668604671e-05,4.3453616171973408e-05,7.4335417821203009e-05,
+4.9296119186692522e-05,8.3985980836587260e-06,1.1737171234926791e-05,
+1.3943759427093028e-04,4.9165706172971113e-04,1.1885842070569197e-03,
+-5.7847486800710612e-04,-1.2538360749658750e-03,-1.4474629494998226e-03,
+-1.3273209731323732e-03,-1.0333813804663805e-03,-6.7762115918412746e-04,
+-3.4402305004732625e-04,-8.8575546897118329e-05,6.0727103345925570e-05,
+1.0388490068180545e-04,6.8892092031092034e-05,1.1737171234926791e-05,
+1.6402879055021913e-05,1.9486620317366032e-04,6.8709837819369568e-04,
+1.6610648856385524e-03,-6.8722814319244208e-03,-1.4895572570594595e-02,
+-1.7195859840057892e-02,-1.5768573160812593e-02,-1.2276570799940600e-02,
+-8.0501393711074343e-03,-4.0869938345622359e-03,-1.0522774971377657e-03,
+7.2143798774959578e-04,1.2341526200998487e-03,8.1843805332937336e-04,
+1.3943759427093028e-04,1.9486620317366032e-04,2.3150104937030846e-03,
+8.1627287329411047e-03,1.9733450841386002e-02,-2.4231669470964334e-02,
+-5.2521800029126098e-02,-6.0632614662381457e-02,-5.5600000763433854e-02,
+-4.3287197826202828e-02,-2.8384797445824006e-02,-1.4410743318649111e-02,
+-3.7103312422459567e-03,2.5437908846015489e-03,4.3516230618934060e-03,
+2.8858131884135219e-03,4.9165706172971113e-04,6.8709837819369568e-04,
+8.1627287329411047e-03,2.8781787619891475e-02,6.9580162431748249e-02,
+-5.8580221633519614e-02,-1.2697179985821094e-01,-1.4657974801934870e-01,
+-1.3441337054587166e-01,-1.0464708779522880e-01,-6.8620436053379308e-02,
+-3.4838067534792572e-02,-8.9697503824481828e-03,6.1496313321640628e-03,
+1.0520077609044165e-02,6.9764725196819199e-03,1.1885842070569197e-03,
+1.6610648856385524e-03,1.9733450841386002e-02,6.9580162431748249e-02,
+1.6821050408566407e-01,1.3529004860401983e-02,2.9323926224833485e-02,
+3.3852349275775850e-02,3.1042544611636913e-02,2.4168071064423202e-02,
+1.5847775699739941e-02,8.0457938167910470e-03,2.0715489483791316e-03,
+-1.4202471390944993e-03,-2.4295944456298457e-03,-1.6112047376282135e-03,
+-2.7450154789221415e-04,-3.8362017562576511e-04,-4.5574076864340896e-03,
+-1.6069422912323716e-02,-3.8847936451702481e-02,2.9323926224833485e-02,
+6.3559194346680670e-02,7.3374487107003006e-02,6.7284275334031918e-02,
+5.2383951384626926e-02,3.4349829144275645e-02,1.7439144027093789e-02,
+4.4900529758251650e-03,-3.0783655381583230e-03,-5.2661115148566751e-03,
+-3.4922634256417950e-03,-5.9497821325749101e-04,-8.3149129181947501e-04,
+-9.8781165468153631e-03,-3.4830246335104675e-02,-8.4202351484918836e-02,
+3.3852349275775850e-02,7.3374487107003006e-02,8.4705531804729617e-02,
+7.7674823347706479e-02,6.0473478384892587e-02,3.9654390235455139e-02,
+2.0132228888769532e-02,5.1834410044193646e-03,-3.5537500878035644e-03,
+-6.0793443878992548e-03,-4.0315652256595058e-03,-6.8685926066791581e-04,
+-9.5989648229988234e-04,-1.1403570209722602e-02,-4.0208997091895071e-02,
+-9.7205517107568085e-02,3.1042544611636913e-02,6.7284275334031918e-02,
+7.7674823347706479e-02,7.1227676086209613e-02,5.5454073077498833e-02,
+3.6363005943940152e-02,1.8461218402308077e-02,4.7532062637856143e-03,
+-3.2587825660357339e-03,-5.5747480871559674e-03,-3.6969382051665889e-03,
+-6.2984873125060403e-04,-8.8022338218252116e-04,-1.0457053780328351e-02,
+-3.6871579453645609e-02,-8.9137287835683310e-02,2.4168071064423202e-02,
+5.2383951384626926e-02,6.0473478384892587e-02,5.5454073077498833e-02,
+4.3173586306011202e-02,2.8310298745282125e-02,1.4372920901450925e-02,
+3.7005931119438173e-03,-2.5371144545260904e-03,-4.3402017979587981e-03,
+-2.8782390870674135e-03,-4.9036665927815193e-04,-6.8529502073033655e-04,
+-8.1413048462763982e-03,-2.8706246979481875e-02,-6.9397542432625414e-02,
+1.5847775699739941e-02,3.4349829144275645e-02,3.9654390235455139e-02,
+3.6363005943940152e-02,2.8310298745282125e-02,1.8563966619922212e-02,
+9.4247830531912768e-03,2.4265970353098965e-03,-1.6636669386116409e-03,
+-2.8460088685733353e-03,-1.8873532496854750e-03,-3.2154907216863649e-04,
+-4.4936982135368453e-04,-5.3385134776817722e-03,-1.8823602516704341e-02,
+-4.5506183909083120e-02,8.0457938167910470e-03,1.7439144027093789e-02,
+2.0132228888769532e-02,1.8461218402308077e-02,1.4372920901450925e-02,
+9.4247830531912768e-03,4.7848898577740329e-03,1.2319646486957936e-03,
+-8.4463090729514079e-04,-1.4448968101987703e-03,-9.5819472676339501e-04,
+-1.6324799048561545e-04,-2.2814160161033215e-04,-2.7103222271307459e-03,
+-9.5565982007883576e-03,-2.3103139523072969e-02,2.0715489483791316e-03,
+4.4900529758251650e-03,5.1834410044193646e-03,4.7532062637856143e-03,
+3.7005931119438173e-03,2.4265970353098965e-03,1.2319646486957936e-03,
+3.1719369530947006e-04,-2.1746695324509346e-04,-3.7201729696789698e-04,
+-2.4670620746292116e-04,-4.2031427938127308e-05,-5.8739573205457418e-05,
+-6.9782612968083413e-04,-2.4605354553841607e-03,-5.9483607799393212e-03,
+-1.4202471390944993e-03,-3.0783655381583230e-03,-3.5537500878035644e-03,
+-3.2587825660357339e-03,-2.5371144545260904e-03,-1.6636669386116409e-03,
+-8.4463090729514079e-04,-2.1746695324509346e-04,1.4909462720424926e-04,
+2.5505383405288740e-04,1.6914096363507269e-04,2.8816608619308681e-05,
+4.0271658008350641e-05,4.7842729713920562e-04,1.6869350076831324e-03,
+4.0781765676456416e-03,-2.4295944456298457e-03,-5.2661115148566751e-03,
+-6.0793443878992548e-03,-5.5747480871559674e-03,-4.3402017979587981e-03,
+-2.8460088685733353e-03,-1.4448968101987703e-03,-3.7201729696789698e-04,
+2.5505383405288740e-04,4.3631658286358288e-04,2.8934678653058654e-04,
+4.9296119186692522e-05,6.8892092031092034e-05,8.1843805332937336e-04,
+2.8858131884135219e-03,6.9764725196819199e-03,-1.6112047376282135e-03,
+-3.4922634256417950e-03,-4.0315652256595058e-03,-3.6969382051665889e-03,
+-2.8782390870674135e-03,-1.8873532496854750e-03,-9.5819472676339501e-04,
+-2.4670620746292116e-04,1.6914096363507269e-04,2.8934678653058654e-04,
+1.9188260580449423e-04,3.2691110618543462e-05,4.5686334715355770e-05,
+5.4275365641842654e-04,1.9137497986321250e-03,4.6265028288416943e-03,
+-2.7450154789221415e-04,-5.9497821325749101e-04,-6.8685926066791581e-04,
+-6.2984873125060403e-04,-4.9036665927815193e-04,-3.2154907216863649e-04,
+-1.6324799048561545e-04,-4.2031427938127308e-05,2.8816608619308681e-05,
+4.9296119186692522e-05,3.2691110618543462e-05,5.5695966238999972e-06,
+7.7835977663198719e-06,9.2469141463880078e-05,3.2604626198917686e-04,
+7.8821900046932569e-04,-3.8362017562576511e-04,-8.3149129181947501e-04,
+-9.5989648229988234e-04,-8.8022338218252116e-04,-6.8529502073033655e-04,
+-4.4936982135368453e-04,-2.2814160161033215e-04,-5.8739573205457418e-05,
+4.0271658008350641e-05,6.8892092031092034e-05,4.5686334715355770e-05,
+7.7835977663198719e-06,1.0877698741751374e-05,1.2922706105200632e-04,
+4.5565471396002977e-04,1.1015482925813558e-03,-4.5574076864340896e-03,
+-9.8781165468153631e-03,-1.1403570209722602e-02,-1.0457053780328351e-02,
+-8.1413048462763982e-03,-5.3385134776817722e-03,-2.7103222271307459e-03,
+-6.9782612968083413e-04,4.7842729713920562e-04,8.1843805332937336e-04,
+5.4275365641842654e-04,9.2469141463880078e-05,1.2922706105200632e-04,
+1.5352174852978351e-03,5.4131780018451536e-03,1.3086393715866507e-02,
+-1.6069422912323716e-02,-3.4830246335104675e-02,-4.0208997091895071e-02,
+-3.6871579453645609e-02,-2.8706246979481875e-02,-1.8823602516704341e-02,
+-9.5565982007883576e-03,-2.4605354553841607e-03,1.6869350076831324e-03,
+2.8858131884135219e-03,1.9137497986321250e-03,3.2604626198917686e-04,
+4.5565471396002977e-04,5.4131780018451536e-03,1.9086869684770136e-02,
+4.6142634033685681e-02,-3.8847936451702481e-02,-8.4202351484918836e-02,
+-9.7205517107568085e-02,-8.9137287835683310e-02,-6.9397542432625414e-02,
+-4.5506183909083120e-02,-2.3103139523072969e-02,-5.9483607799393212e-03,
+4.0781765676456416e-03,6.9764725196819199e-03,4.6265028288416943e-03,
+7.8821900046932569e-04,1.1015482925813558e-03,1.3086393715866507e-02,
+4.6142634033685681e-02,1.1155012376207196e-01,2.3049415688092267e-03,
+4.9959281716382975e-03,5.7674372840210708e-03,5.2887298227233259e-03,
+4.1175232183832122e-03,2.6999914155112492e-03,1.3707648724903265e-03,
+3.5293056157570390e-04,-2.4196803110498877e-04,-4.1393090555175149e-04,
+-2.7450154789221415e-04,-4.6766930381636485e-05,-6.5357511402908131e-05,
+-7.7644723546654859e-04,-2.7377535332107072e-03,-6.6185373214011634e-03,
+4.9959281716382975e-03,1.0828603481286336e-02,1.2500838544156068e-02,
+1.1463246908760993e-02,8.9246731988623651e-03,5.8521931134691840e-03,
+2.9711134268382011e-03,7.6497198847391701e-04,-5.2446227687141800e-04,
+-8.9718936919780390e-04,-5.9497821325749101e-04,-1.0136665855497995e-04,
+-1.4166147934702167e-04,-1.6829383746426174e-03,-5.9340419682030188e-03,
+-1.4345585808541728e-02,5.7674372840210708e-03,1.2500838544156068e-02,
+1.4431312825990972e-02,1.3233488422201845e-02,1.0302888910018737e-02,
+6.7559331512256904e-03,3.4299352921607351e-03,8.8310476371589175e-04,
+-6.0545371866282949e-04,-1.0357401549754286e-03,-6.8685926066791581e-04,
+-1.1702046663231158e-04,-1.6353791920664662e-04,-1.9428304801749618e-03,
+-6.8504217267673084e-03,-1.6560939951659748e-02,5.2887298227233259e-03,
+1.1463246908760993e-02,1.3233488422201845e-02,1.2135085555428304e-02,
+9.4477309687590605e-03,6.1951787904490629e-03,3.1452446166895243e-03,
+8.0980551160791947e-04,-5.5519999273201392e-04,-9.4977189633027592e-04,
+-6.2984873125060403e-04,-1.0730756162047328e-04,-1.4996398363109620e-04,
+-1.7815721255374228e-03,-6.2818246476581407e-03,-1.5186352742375675e-02,
+4.1175232183832122e-03,8.9246731988623651e-03,1.0302888910018737e-02,
+9.4477309687590605e-03,7.3554998891722789e-03,4.8232360825295473e-03,
+2.4487198572842317e-03,6.3047141907190962e-04,-4.3224912928963022e-04,
+-7.3944178780038783e-04,-4.9036665927815193e-04,-8.3543949358499958e-05,
+-1.1675396649479808e-04,-1.3870371219582012e-03,-4.8906939298376528e-03,
+-1.1823285007039885e-02,2.6999914155112492e-03,5.8521931134691840e-03,
+6.7559331512256904e-03,6.1951787904490629e-03,4.8232360825295473e-03,
+3.1627498685793398e-03,1.6057037794325879e-03,4.1342023564538977e-04,
+-2.8343955250420549e-04,-4.8487558501619787e-04,-3.2154907216863649e-04,
+-5.4782434517619549e-05,-7.6559302897294401e-05,-9.0952451841985749e-04,
+-3.2069841324755544e-03,-7.7529054067326797e-03,1.3707648724903265e-03,
+2.9711134268382011e-03,3.4299352921607351e-03,3.1452446166895243e-03,
+2.4487198572842317e-03,1.6057037794325879e-03,8.1520345725039078e-04,
+2.0989027348150557e-04,-1.4390008050213510e-04,-2.4616760470053123e-04,
+-1.6324799048561545e-04,-2.7812620601253002e-05,-3.8868569163241773e-05,
+-4.6175860165931226e-04,-1.6281611749491276e-03,-3.9360904372642835e-03,
+3.5293056157570390e-04,7.6497198847391701e-04,8.8310476371589175e-04,
+8.0980551160791947e-04,6.3047141907190962e-04,4.1342023564538977e-04,
+2.0989027348150557e-04,5.4040407349020825e-05,-3.7049925367682590e-05,
+-6.3380724668604671e-05,-4.2031427938127308e-05,-7.1609099450142821e-06,
+-1.0007482842411264e-05,-1.1888889616784581e-04,-4.1920233684322739e-04,
+-1.0134244291748473e-03,-2.4196803110498877e-04,-5.2446227687141800e-04,
+-6.0545371866282949e-04,-5.5519999273201392e-04,-4.3224912928963022e-04,
+-2.8343955250420549e-04,-1.4390008050213510e-04,-3.7049925367682590e-05,
+2.5401306857020245e-05,4.3453616171973408e-05,2.8816608619308681e-05,
+4.9094962832896272e-06,6.8610972903115908e-06,8.1509835808901698e-05,
+2.8740374204971886e-04,6.9480045226555376e-04,-4.1393090555175149e-04,
+-8.9718936919780390e-04,-1.0357401549754286e-03,-9.4977189633027592e-04,
+-7.3944178780038783e-04,-4.8487558501619787e-04,-2.4616760470053123e-04,
+-6.3380724668604671e-05,4.3453616171973408e-05,7.4335417821203009e-05,
+4.9296119186692522e-05,8.3985980836587260e-06,1.1737171234926791e-05,
+1.3943759427093028e-04,4.9165706172971113e-04,1.1885842070569197e-03,
+-2.7450154789221415e-04,-5.9497821325749101e-04,-6.8685926066791581e-04,
+-6.2984873125060403e-04,-4.9036665927815193e-04,-3.2154907216863649e-04,
+-1.6324799048561545e-04,-4.2031427938127308e-05,2.8816608619308681e-05,
+4.9296119186692522e-05,3.2691110618543462e-05,5.5695966238999972e-06,
+7.7835977663198719e-06,9.2469141463880078e-05,3.2604626198917686e-04,
+7.8821900046932569e-04,-4.6766930381636485e-05,-1.0136665855497995e-04,
+-1.1702046663231158e-04,-1.0730756162047328e-04,-8.3543949358499958e-05,
+-5.4782434517619549e-05,-2.7812620601253002e-05,-7.1609099450142821e-06,
+4.9094962832896272e-06,8.3985980836587260e-06,5.5695966238999972e-06,
+9.4889423962740693e-07,1.3260944342619041e-06,1.5754001879031421e-05,
+5.5548622412970872e-05,1.3428916304292216e-04,-6.5357511402908131e-05,
+-1.4166147934702167e-04,-1.6353791920664662e-04,-1.4996398363109620e-04,
+-1.1675396649479808e-04,-7.6559302897294401e-05,-3.8868569163241773e-05,
+-1.0007482842411264e-05,6.8610972903115908e-06,1.1737171234926791e-05,
+7.7835977663198719e-06,1.3260944342619041e-06,1.8532375634094933e-06,
+2.2016462253304780e-05,7.7630062378375442e-05,1.8767119058793469e-04,
+-7.7644723546654859e-04,-1.6829383746426174e-03,-1.9428304801749618e-03,
+-1.7815721255374228e-03,-1.3870371219582012e-03,-9.0952451841985749e-04,
+-4.6175860165931226e-04,-1.1888889616784581e-04,8.1509835808901698e-05,
+1.3943759427093028e-04,9.2469141463880078e-05,1.5754001879031421e-05,
+2.2016462253304780e-05,2.6155557156926079e-04,9.2224514105510025e-04,
+2.2295337441846641e-03,-2.7377535332107072e-03,-5.9340419682030188e-03,
+-6.8504217267673084e-03,-6.2818246476581407e-03,-4.8906939298376528e-03,
+-3.2069841324755544e-03,-1.6281611749491276e-03,-4.1920233684322739e-04,
+2.8740374204971886e-04,4.9165706172971113e-04,3.2604626198917686e-04,
+5.5548622412970872e-05,7.7630062378375442e-05,9.2224514105510025e-04,
+3.2518370574052824e-03,7.8613376501834864e-03,-6.6185373214011634e-03,
+-1.4345585808541728e-02,-1.6560939951659748e-02,-1.5186352742375675e-02,
+-1.1823285007039885e-02,-7.7529054067326797e-03,-3.9360904372642835e-03,
+-1.0134244291748473e-03,6.9480045226555376e-04,1.1885842070569197e-03,
+7.8821900046932569e-04,1.3428916304292216e-04,1.8767119058793469e-04,
+2.2295337441846641e-03,7.8613376501834864e-03,1.9004835900204853e-02,
+3.2211916334290436e-03,6.9818871963889251e-03,8.0600831608990120e-03,
+7.3910820503897412e-03,5.7543026343864767e-03,3.7732799285095098e-03,
+1.9156651944740588e-03,4.9322594009026943e-04,-3.3815408073678555e-04,
+-5.7847486800710612e-04,-3.8362017562576511e-04,-6.5357511402908131e-05,
+-9.1338137053753599e-05,-1.0850970681985928e-03,-3.8260530743627896e-03,
+-9.2495086789767811e-03,6.9818871963889251e-03,1.5133141511114445e-02,
+1.7470115977857859e-02,1.6020065555721885e-02,1.2472369377292125e-02,
+8.1785307486370584e-03,4.1521771493080450e-03,1.0690602323393250e-03,
+-7.3294417575198167e-04,-1.2538360749658750e-03,-8.3149129181947501e-04,
+-1.4166147934702167e-04,-1.9797411709987500e-04,-2.3519325111465150e-03,
+-8.2929157940725418e-03,-2.0048178924980675e-02,8.0600831608990120e-03,
+1.7470115977857859e-02,2.0167983763030861e-02,1.8494005558977733e-02,
+1.4398447234498235e-02,9.4415214846321760e-03,4.7933878306594124e-03,
+1.2341526200998487e-03,-8.4613097328656295e-04,-1.4474629494998226e-03,
+-9.5989648229988234e-04,-1.6353791920664662e-04,-2.2854678149997198e-04,
+-2.7151357642196672e-03,-9.5735707361654931e-03,-2.3144170739897163e-02,
+7.3910820503897412e-03,1.6020065555721885e-02,1.8494005558977733e-02,
+1.6958970496716574e-02,1.3203350732737817e-02,8.6578585580809886e-03,
+4.3955281910257327e-03,1.1317157770918129e-03,-7.7590061096088903e-04,
+-1.3273209731323732e-03,-8.8022338218252116e-04,-1.4996398363109620e-04,
+-2.0957699575774313e-04,-2.4897747096019884e-03,-8.7789474889632402e-03,
+-2.1223163770400788e-02,5.7543026343864767e-03,1.2472369377292125e-02,
+1.4398447234498235e-02,1.3203350732737817e-02,1.0279425310955048e-02,
+6.7405473203052679e-03,3.4221240241549822e-03,8.8109359808186127e-04,
+-6.0407487012525962e-04,-1.0333813804663805e-03,-6.8529502073033655e-04,
+-1.1675396649479808e-04,-1.6316548112627061e-04,-1.9384059157800948e-03,
+-6.8348207094004465e-03,-1.6523224388720337e-02,3.7732799285095098e-03,
+8.1785307486370584e-03,9.4415214846321760e-03,8.6578585580809886e-03,
+6.7405473203052679e-03,4.4199920523624314e-03,2.2439959650455421e-03,
+5.7776119888330868e-04,-3.9611117585991451e-04,-6.7762115918412746e-04,
+-4.4936982135368453e-04,-7.6559302897294401e-05,-1.0699281460802013e-04,
+-1.2710746375432791e-03,-4.4818101230248431e-03,-1.0834805692638838e-02,
+1.9156651944740588e-03,4.1521771493080450e-03,4.7933878306594124e-03,
+4.3955281910257327e-03,3.4221240241549822e-03,2.2439959650455421e-03,
+1.1392594899461983e-03,2.9332491635614133e-04,-2.0110259697503352e-04,
+-3.4402305004732625e-04,-2.2814160161033215e-04,-3.8868569163241773e-05,
+-5.4319428954840987e-05,-6.4531481598351093e-04,-2.2753805239972280e-03,
+-5.5007475054935639e-03,4.9322594009026943e-04,1.0690602323393250e-03,
+1.2341526200998487e-03,1.1317157770918129e-03,8.8109359808186127e-04,
+5.7776119888330868e-04,2.9332491635614133e-04,7.5522308407016681e-05,
+-5.1777846010736539e-05,-8.8575546897118329e-05,-5.8739573205457418e-05,
+-1.0007482842411264e-05,-1.3985612667966052e-05,-1.6614907849543670e-04,
+-5.8584177509146684e-04,-1.4162763761760289e-03,-3.3815408073678555e-04,
+-7.3294417575198167e-04,-8.4613097328656295e-04,-7.7590061096088903e-04,
+-6.0407487012525962e-04,-3.9611117585991451e-04,-2.0110259697503352e-04,
+-5.1777846010736539e-05,3.5498720762916491e-05,6.0727103345925570e-05,
+4.0271658008350641e-05,6.8610972903115908e-06,9.5884900019882480e-06,
+1.1391126122362039e-04,4.0165119230550772e-04,9.7099442086800991e-04,
+-5.7847486800710612e-04,-1.2538360749658750e-03,-1.4474629494998226e-03,
+-1.3273209731323732e-03,-1.0333813804663805e-03,-6.7762115918412746e-04,
+-3.4402305004732625e-04,-8.8575546897118329e-05,6.0727103345925570e-05,
+1.0388490068180545e-04,6.8892092031092034e-05,1.1737171234926791e-05,
+1.6402879055021913e-05,1.9486620317366032e-04,6.8709837819369568e-04,
+1.6610648856385524e-03,-3.8362017562576511e-04,-8.3149129181947501e-04,
+-9.5989648229988234e-04,-8.8022338218252116e-04,-6.8529502073033655e-04,
+-4.4936982135368453e-04,-2.2814160161033215e-04,-5.8739573205457418e-05,
+4.0271658008350641e-05,6.8892092031092034e-05,4.5686334715355770e-05,
+7.7835977663198719e-06,1.0877698741751374e-05,1.2922706105200632e-04,
+4.5565471396002977e-04,1.1015482925813558e-03,-6.5357511402908131e-05,
+-1.4166147934702167e-04,-1.6353791920664662e-04,-1.4996398363109620e-04,
+-1.1675396649479808e-04,-7.6559302897294401e-05,-3.8868569163241773e-05,
+-1.0007482842411264e-05,6.8610972903115908e-06,1.1737171234926791e-05,
+7.7835977663198719e-06,1.3260944342619041e-06,1.8532375634094933e-06,
+2.2016462253304780e-05,7.7630062378375442e-05,1.8767119058793469e-04,
+-9.1338137053753599e-05,-1.9797411709987500e-04,-2.2854678149997198e-04,
+-2.0957699575774313e-04,-1.6316548112627061e-04,-1.0699281460802013e-04,
+-5.4319428954840987e-05,-1.3985612667966052e-05,9.5884900019882480e-06,
+1.6402879055021913e-05,1.0877698741751374e-05,1.8532375634094933e-06,
+2.5899282718455652e-06,3.0768347869525314e-05,1.0848921760953090e-04,
+2.6227340299556090e-04,-1.0850970681985928e-03,-2.3519325111465150e-03,
+-2.7151357642196672e-03,-2.4897747096019884e-03,-1.9384059157800948e-03,
+-1.2710746375432791e-03,-6.4531481598351093e-04,-1.6614907849543670e-04,
+1.1391126122362039e-04,1.9486620317366032e-04,1.2922706105200632e-04,
+2.2016462253304780e-05,3.0768347869525314e-05,3.6552797268996073e-04,
+1.2888519052012271e-03,3.1158080275872635e-03,-3.8260530743627896e-03,
+-8.2929157940725418e-03,-9.5735707361654931e-03,-8.7789474889632402e-03,
+-6.8348207094004465e-03,-4.4818101230248431e-03,-2.2753805239972280e-03,
+-5.8584177509146684e-04,4.0165119230550772e-04,6.8709837819369568e-04,
+4.5565471396002977e-04,7.7630062378375442e-05,1.0848921760953090e-04,
+1.2888519052012271e-03,4.5444927820881276e-03,1.0986341436591829e-02,
+-9.2495086789767811e-03,-2.0048178924980675e-02,-2.3144170739897163e-02,
+-2.1223163770400788e-02,-1.6523224388720337e-02,-1.0834805692638838e-02,
+-5.5007475054935639e-03,-1.4162763761760289e-03,9.7099442086800991e-04,
+1.6610648856385524e-03,1.1015482925813558e-03,1.8767119058793469e-04,
+2.6227340299556090e-04,3.1158080275872635e-03,1.0986341436591829e-02,
+2.6559553276683801e-02,3.8267756605137038e-02,8.2944819893100430e-02,
+9.5753787951480263e-02,8.7806054758630125e-02,6.8361115296511343e-02,
+4.4826565550692976e-02,2.2758102510351819e-02,5.8595241682724009e-03,
+-4.0172704791530123e-03,-6.8722814319244208e-03,-4.5574076864340896e-03,
+-7.7644723546654859e-04,-1.0850970681985928e-03,-1.2890953170199282e-02,
+-4.5453510523429941e-02,-1.0988416310624416e-01,8.2944819893100430e-02,
+1.7978172115203961e-01,2.0754497781695136e-01,1.9031837880197600e-01,
+1.4817174820223045e-01,9.7160945293808254e-02,4.9327864533779575e-02,
+1.2700435560191181e-02,-8.7073768079335423e-03,-1.4895572570594595e-02,
+-9.8781165468153631e-03,-1.6829383746426174e-03,-2.3519325111465150e-03,
+-2.7940958232420599e-02,-9.8519839633581796e-02,-2.3817236562877042e-01,
+9.5753787951480263e-02,2.0754497781695136e-01,2.3959564710480663e-01,
+2.1970878604065547e-01,1.7105355314583903e-01,1.1216527523743025e-01,
+5.6945447428233820e-02,1.4661733126786203e-02,-1.0052035962644368e-02,
+-1.7195859840057892e-02,-1.1403570209722602e-02,-1.9428304801749618e-03,
+-2.7151357642196672e-03,-3.2255812878929646e-02,-1.1373402034564606e-01,
+-2.7495274838997830e-01,8.7806054758630125e-02,1.9031837880197600e-01,
+2.1970878604065547e-01,2.0147256950099290e-01,1.5685580670492527e-01,
+1.0285535967000214e-01,5.2218874909385704e-02,1.3444783431850738e-02,
+-9.2176992582153616e-03,-1.5768573160812593e-02,-1.0457053780328351e-02,
+-1.7815721255374228e-03,-2.4897747096019884e-03,-2.9578523550071623e-02,
+-1.0429389616888329e-01,-2.5213118559236136e-01,6.8361115296511343e-02,
+1.4817174820223045e-01,1.7105355314583903e-01,1.5685580670492527e-01,
+1.2211957269414597e-01,8.0077702165226583e-02,4.0654833406961188e-02,
+1.0467391945212512e-02,-7.1764094570880843e-03,-1.2276570799940600e-02,
+-8.1413048462763982e-03,-1.3870371219582012e-03,-1.9384059157800948e-03,
+-2.3028262279467526e-02,-8.1197670027677304e-02,-1.9629590573799760e-01,
+4.4826565550692976e-02,9.7160945293808254e-02,1.1216527523743025e-01,
+1.0285535967000214e-01,8.0077702165226583e-02,5.2509505582065685e-02,
+2.6658672064741040e-02,6.8638030427337071e-03,-4.7058007692157844e-03,
+-8.0501393711074343e-03,-5.3385134776817722e-03,-9.0952451841985749e-04,
+-1.2710746375432791e-03,-1.5100366694014156e-02,-5.3243904261535135e-02,
+-1.2871749162854940e-01,2.2758102510351819e-02,4.9327864533779575e-02,
+5.6945447428233820e-02,5.2218874909385704e-02,4.0654833406961188e-02,
+2.6658672064741040e-02,1.3534402740560836e-02,3.4847000063109590e-03,
+-2.3890988520633982e-03,-4.0869938345622359e-03,-2.7103222271307459e-03,
+-4.6175860165931226e-04,-6.4531481598351093e-04,-7.6663400138841098e-03,
+-2.7031520625087069e-02,-6.5348880365263540e-02,5.8595241682724009e-03,
+1.2700435560191181e-02,1.4661733126786203e-02,1.3444783431850738e-02,
+1.0467391945212512e-02,6.8638030427337071e-03,3.4847000063109590e-03,
+8.9720502387535817e-04,-6.1512081060755008e-04,-1.0522774971377657e-03,
+-6.9782612968083413e-04,-1.1888889616784581e-04,-1.6614907849543670e-04,
+-1.9738510525257880e-03,-6.9598002880866261e-03,-1.6825363348971223e-02,
+-4.0172704791530123e-03,-8.7073768079335423e-03,-1.0052035962644368e-02,
+-9.2176992582153616e-03,-7.1764094570880843e-03,-4.7058007692157844e-03,
+-2.3890988520633982e-03,-6.1512081060755008e-04,4.2172480266344792e-04,
+7.2143798774959578e-04,4.7842729713920562e-04,8.1509835808901698e-05,
+1.1391126122362039e-04,1.3532657833366102e-03,4.7716161645894317e-03,
+1.1535413719911958e-02,-6.8722814319244208e-03,-1.4895572570594595e-02,
+-1.7195859840057892e-02,-1.5768573160812593e-02,-1.2276570799940600e-02,
+-8.0501393711074343e-03,-4.0869938345622359e-03,-1.0522774971377657e-03,
+7.2143798774959578e-04,1.2341526200998487e-03,8.1843805332937336e-04,
+1.3943759427093028e-04,1.9486620317366032e-04,2.3150104937030846e-03,
+8.1627287329411047e-03,1.9733450841386002e-02,-4.5574076864340896e-03,
+-9.8781165468153631e-03,-1.1403570209722602e-02,-1.0457053780328351e-02,
+-8.1413048462763982e-03,-5.3385134776817722e-03,-2.7103222271307459e-03,
+-6.9782612968083413e-04,4.7842729713920562e-04,8.1843805332937336e-04,
+5.4275365641842654e-04,9.2469141463880078e-05,1.2922706105200632e-04,
+1.5352174852978351e-03,5.4131780018451536e-03,1.3086393715866507e-02,
+-7.7644723546654859e-04,-1.6829383746426174e-03,-1.9428304801749618e-03,
+-1.7815721255374228e-03,-1.3870371219582012e-03,-9.0952451841985749e-04,
+-4.6175860165931226e-04,-1.1888889616784581e-04,8.1509835808901698e-05,
+1.3943759427093028e-04,9.2469141463880078e-05,1.5754001879031421e-05,
+2.2016462253304780e-05,2.6155557156926079e-04,9.2224514105510025e-04,
+2.2295337441846641e-03,-1.0850970681985928e-03,-2.3519325111465150e-03,
+-2.7151357642196672e-03,-2.4897747096019884e-03,-1.9384059157800948e-03,
+-1.2710746375432791e-03,-6.4531481598351093e-04,-1.6614907849543670e-04,
+1.1391126122362039e-04,1.9486620317366032e-04,1.2922706105200632e-04,
+2.2016462253304780e-05,3.0768347869525314e-05,3.6552797268996073e-04,
+1.2888519052012271e-03,3.1158080275872635e-03,-1.2890953170199282e-02,
+-2.7940958232420599e-02,-3.2255812878929646e-02,-2.9578523550071623e-02,
+-2.3028262279467526e-02,-1.5100366694014156e-02,-7.6663400138841098e-03,
+-1.9738510525257880e-03,1.3532657833366102e-03,2.3150104937030846e-03,
+1.5352174852978351e-03,2.6155557156926079e-04,3.6552797268996073e-04,
+4.3424723155567335e-03,1.5311560633790577e-02,3.7015799367736690e-02,
+-4.5453510523429941e-02,-9.8519839633581796e-02,-1.1373402034564606e-01,
+-1.0429389616888329e-01,-8.1197670027677304e-02,-5.3243904261535135e-02,
+-2.7031520625087069e-02,-6.9598002880866261e-03,4.7716161645894317e-03,
+8.1627287329411047e-03,5.4131780018451536e-03,9.2224514105510025e-04,
+1.2888519052012271e-03,1.5311560633790577e-02,5.3988574251206956e-02,
+1.3051773626671093e-01,-1.0988416310624416e-01,-2.3817236562877042e-01,
+-2.7495274838997830e-01,-2.5213118559236136e-01,-1.9629590573799760e-01,
+-1.2871749162854940e-01,-6.5348880365263540e-02,-1.6825363348971223e-02,
+1.1535413719911958e-02,1.9733450841386002e-02,1.3086393715866507e-02,
+2.2295337441846641e-03,3.1158080275872635e-03,3.7015799367736690e-02,
+1.3051773626671093e-01,3.1552749292700355e-01,1.3493213842252771e-01,
+2.9246349700429164e-01,3.3762792796210306e-01,3.0960421477743694e-01,
+2.4104134368485575e-01,1.5805850367200946e-01,8.0245086479635575e-02,
+2.0660686601559064e-02,-1.4164898715307572e-02,-2.4231669470964334e-02,
+-1.6069422912323716e-02,-2.7377535332107072e-03,-3.8260530743627896e-03,
+-4.5453510523429941e-02,-1.6026911211497463e-01,-3.8745164133047183e-01,
+2.9246349700429164e-01,6.3391048329890509e-01,7.3180374707249030e-01,
+6.7106274605635008e-01,5.2245369502657013e-01,3.4258956580401900e-01,
+1.7393008725434811e-01,4.4781745287991725e-02,-3.0702217139833010e-02,
+-5.2521800029126098e-02,-3.4830246335104675e-02,-5.9340419682030188e-03,
+-8.2929157940725418e-03,-9.8519839633581796e-02,-3.4738102826281647e-01,
+-8.3979593941307940e-01,3.3762792796210306e-01,7.3180374707249030e-01,
+8.4481443096251496e-01,7.7469334397051171e-01,6.0313495637842607e-01,
+3.9549484441181448e-01,2.0078969023984428e-01,5.1697281975293663e-02,
+-3.5443486325448248e-02,-6.0632614662381457e-02,-4.0208997091895071e-02,
+-6.8504217267673084e-03,-9.5735707361654931e-03,-1.1373402034564606e-01,
+-4.0102624083715455e-01,-9.6948359654902561e-01,3.0960421477743694e-01,
+6.7106274605635008e-01,7.7469334397051171e-01,7.1039243080690540e-01,
+5.5307369180468413e-01,3.6266807515517030e-01,1.8412379200185569e-01,
+4.7406316440401497e-02,-3.2501614481361685e-02,-5.5600000763433854e-02,
+-3.6871579453645609e-02,-6.2818246476581407e-03,-8.7789474889632402e-03,
+-1.0429389616888329e-01,-3.6774035592657128e-01,-8.8901474904901079e-01,
+2.4104134368485575e-01,5.2245369502657013e-01,6.0313495637842607e-01,
+5.5307369180468413e-01,4.3059370469222813e-01,2.8235403775056511e-01,
+1.4334897301182536e-01,3.6908031830762411e-02,-2.5304025115246986e-02,
+-4.3287197826202828e-02,-2.8706246979481875e-02,-4.8906939298376528e-03,
+-6.8348207094004465e-03,-8.1197670027677304e-02,-2.8630304527155204e-01,
+-6.9213951050528522e-01,1.5805850367200946e-01,3.4258956580401900e-01,
+3.9549484441181448e-01,3.6266807515517030e-01,2.8235403775056511e-01,
+1.8514855597118185e-01,9.3998497646907708e-02,2.4201774664334152e-02,
+-1.6592657033243086e-02,-2.8384797445824006e-02,-1.8823602516704341e-02,
+-3.2069841324755544e-03,-4.4818101230248431e-03,-5.3243904261535135e-02,
+-1.8773804626448509e-01,-4.5385797179164911e-01,8.0245086479635575e-02,
+1.7393008725434811e-01,2.0078969023984428e-01,1.8412379200185569e-01,
+1.4334897301182536e-01,9.3998497646907708e-02,4.7722314189968529e-02,
+1.2287054829585031e-02,-8.4239643399541819e-03,-1.4410743318649111e-02,
+-9.5565982007883576e-03,-1.6281611749491276e-03,-2.2753805239972280e-03,
+-2.7031520625087069e-02,-9.5313161949661662e-02,-2.3042020106345262e-01,
+2.0660686601559064e-02,4.4781745287991725e-02,5.1697281975293663e-02,
+4.7406316440401497e-02,3.6908031830762411e-02,2.4201774664334152e-02,
+1.2287054829585031e-02,3.1635455854939210e-03,-2.1689164384497417e-03,
+-3.7103312422459567e-03,-2.4605354553841607e-03,-4.1920233684322739e-04,
+-5.8584177509146684e-04,-6.9598002880866261e-03,-2.4540261023275889e-02,
+-5.9326243757595876e-02,-1.4164898715307572e-02,-3.0702217139833010e-02,
+-3.5443486325448248e-02,-3.2501614481361685e-02,-2.5304025115246986e-02,
+-1.6592657033243086e-02,-8.4239643399541819e-03,-2.1689164384497417e-03,
+1.4870019697355019e-03,2.5437908846015489e-03,1.6869350076831324e-03,
+2.8740374204971886e-04,4.0165119230550772e-04,4.7716161645894317e-03,
+1.6824722166575157e-02,4.0673877407471082e-02,-2.4231669470964334e-02,
+-5.2521800029126098e-02,-6.0632614662381457e-02,-5.5600000763433854e-02,
+-4.3287197826202828e-02,-2.8384797445824006e-02,-1.4410743318649111e-02,
+-3.7103312422459567e-03,2.5437908846015489e-03,4.3516230618934060e-03,
+2.8858131884135219e-03,4.9165706172971113e-04,6.8709837819369568e-04,
+8.1627287329411047e-03,2.8781787619891475e-02,6.9580162431748249e-02,
+-1.6069422912323716e-02,-3.4830246335104675e-02,-4.0208997091895071e-02,
+-3.6871579453645609e-02,-2.8706246979481875e-02,-1.8823602516704341e-02,
+-9.5565982007883576e-03,-2.4605354553841607e-03,1.6869350076831324e-03,
+2.8858131884135219e-03,1.9137497986321250e-03,3.2604626198917686e-04,
+4.5565471396002977e-04,5.4131780018451536e-03,1.9086869684770136e-02,
+4.6142634033685681e-02,-2.7377535332107072e-03,-5.9340419682030188e-03,
+-6.8504217267673084e-03,-6.2818246476581407e-03,-4.8906939298376528e-03,
+-3.2069841324755544e-03,-1.6281611749491276e-03,-4.1920233684322739e-04,
+2.8740374204971886e-04,4.9165706172971113e-04,3.2604626198917686e-04,
+5.5548622412970872e-05,7.7630062378375442e-05,9.2224514105510025e-04,
+3.2518370574052824e-03,7.8613376501834864e-03,-3.8260530743627896e-03,
+-8.2929157940725418e-03,-9.5735707361654931e-03,-8.7789474889632402e-03,
+-6.8348207094004465e-03,-4.4818101230248431e-03,-2.2753805239972280e-03,
+-5.8584177509146684e-04,4.0165119230550772e-04,6.8709837819369568e-04,
+4.5565471396002977e-04,7.7630062378375442e-05,1.0848921760953090e-04,
+1.2888519052012271e-03,4.5444927820881276e-03,1.0986341436591829e-02,
+-4.5453510523429941e-02,-9.8519839633581796e-02,-1.1373402034564606e-01,
+-1.0429389616888329e-01,-8.1197670027677304e-02,-5.3243904261535135e-02,
+-2.7031520625087069e-02,-6.9598002880866261e-03,4.7716161645894317e-03,
+8.1627287329411047e-03,5.4131780018451536e-03,9.2224514105510025e-04,
+1.2888519052012271e-03,1.5311560633790577e-02,5.3988574251206956e-02,
+1.3051773626671093e-01,-1.6026911211497463e-01,-3.4738102826281647e-01,
+-4.0102624083715455e-01,-3.6774035592657128e-01,-2.8630304527155204e-01,
+-1.8773804626448509e-01,-9.5313161949661662e-02,-2.4540261023275889e-02,
+1.6824722166575157e-02,2.8781787619891475e-02,1.9086869684770136e-02,
+3.2518370574052824e-03,4.5444927820881276e-03,5.3988574251206956e-02,
+1.9036375320524712e-01,4.6020563573279105e-01,-3.8745164133047183e-01,
+-8.3979593941307940e-01,-9.6948359654902561e-01,-8.8901474904901079e-01,
+-6.9213951050528522e-01,-4.5385797179164911e-01,-2.3042020106345262e-01,
+-5.9326243757595876e-02,4.0673877407471082e-02,6.9580162431748249e-02,
+4.6142634033685681e-02,7.8613376501834864e-03,1.0986341436591829e-02,
+1.3051773626671093e-01,4.6020563573279105e-01,1.1125501761455325e+00,
+3.2619933941191448e-01,7.0703244342098515e-01,8.1621775476037328e-01,
+7.4847024230280113e-01,5.8271904677553721e-01,3.8210748076039636e-01,
+1.9399302869373969e-01,4.9947346866474618e-02,-3.4243736575945150e-02,
+-5.8580221633519614e-02,-3.8847936451702481e-02,-6.6185373214011634e-03,
+-9.2495086789767811e-03,-1.0988416310624416e-01,-3.8745164133047183e-01,
+-9.3666691222438203e-01,7.0703244342098515e-01,1.5324827970255228e+00,
+1.7691404113577391e+00,1.6222986386094362e+00,1.2630352722737825e+00,
+8.2821254714531278e-01,4.2047713931992803e-01,1.0826016619489565e-01,
+-7.4222813531150678e-02,-1.2697179985821094e-01,-8.4202351484918836e-02,
+-1.4345585808541728e-02,-2.0048178924980675e-02,-2.3817236562877042e-01,
+-8.3979593941307940e-01,-2.0302122524697097e+00,8.1621775476037328e-01,
+1.7691404113577391e+00,2.0423444890695919e+00,1.8728262962724784e+00,
+1.4580827566135213e+00,9.5611140901041836e-01,4.8541040765144317e-01,
+1.2497852199544468e-01,-8.5684863228152608e-02,-1.4657974801934870e-01,
+-9.7205517107568085e-02,-1.6560939951659748e-02,-2.3144170739897163e-02,
+-2.7495274838997830e-01,-9.6948359654902561e-01,-2.3437330235935860e+00,
+7.4847024230280113e-01,1.6222986386094362e+00,1.8728262962724784e+00,
+1.7173784123008318e+00,1.3370593175352496e+00,8.7675247664833478e-01,
+4.4512048814453919e-01,1.1460508436016426e-01,-7.8572868536639362e-02,
+-1.3441337054587166e-01,-8.9137287835683310e-02,-1.5186352742375675e-02,
+-2.1223163770400788e-02,-2.5213118559236136e-01,-8.8901474904901079e-01,
+-2.1491990511492531e+00,5.8271904677553721e-01,1.2630352722737825e+00,
+1.4580827566135213e+00,1.3370593175352496e+00,1.0409631364893812e+00,
+6.8259275863624680e-01,3.4654709284609453e-01,8.9225411699089818e-02,
+-6.1172648514684624e-02,-1.0464708779522880e-01,-6.9397542432625414e-02,
+-1.1823285007039885e-02,-1.6523224388720337e-02,-1.9629590573799760e-01,
+-6.9213951050528522e-01,-1.6732518564310794e+00,3.8210748076039636e-01,
+8.2821254714531278e-01,9.5611140901041836e-01,8.7675247664833478e-01,
+6.8259275863624680e-01,4.4759786183590222e-01,2.2724199139361190e-01,
+5.8507950740249726e-02,-4.0112858408747343e-02,-6.8620436053379308e-02,
+-4.5506183909083120e-02,-7.7529054067326797e-03,-1.0834805692638838e-02,
+-1.2871749162854940e-01,-4.5385797179164911e-01,-1.0972046564745597e+00,
+1.9399302869373969e-01,4.2047713931992803e-01,4.8541040765144317e-01,
+4.4512048814453919e-01,3.4654709284609453e-01,2.2724199139361190e-01,
+1.1536901101521835e-01,2.9704036529665245e-02,-2.0364989653671728e-02,
+-3.4838067534792572e-02,-2.3103139523072969e-02,-3.9360904372642835e-03,
+-5.5007475054935639e-03,-6.5348880365263540e-02,-2.3042020106345262e-01,
+-5.5704236405631491e-01,4.9947346866474618e-02,1.0826016619489565e-01,
+1.2497852199544468e-01,1.1460508436016426e-01,8.9225411699089818e-02,
+5.8507950740249726e-02,2.9704036529665245e-02,7.6478924313505559e-03,
+-5.2433698726872535e-03,-8.9697503824481828e-03,-5.9483607799393212e-03,
+-1.0134244291748473e-03,-1.4162763761760289e-03,-1.6825363348971223e-02,
+-5.9326243757595876e-02,-1.4342158769409252e-01,-3.4243736575945150e-02,
+-7.4222813531150678e-02,-8.5684863228152608e-02,-7.8572868536639362e-02,
+-6.1172648514684624e-02,-4.0112858408747343e-02,-2.0364989653671728e-02,
+-5.2433698726872535e-03,3.5948371225913434e-03,6.1496313321640628e-03,
+4.0781765676456416e-03,6.9480045226555376e-04,9.7099442086800991e-04,
+1.1535413719911958e-02,4.0673877407471082e-02,9.8329368353233804e-02,
+-5.8580221633519614e-02,-1.2697179985821094e-01,-1.4657974801934870e-01,
+-1.3441337054587166e-01,-1.0464708779522880e-01,-6.8620436053379308e-02,
+-3.4838067534792572e-02,-8.9697503824481828e-03,6.1496313321640628e-03,
+1.0520077609044165e-02,6.9764725196819199e-03,1.1885842070569197e-03,
+1.6610648856385524e-03,1.9733450841386002e-02,6.9580162431748249e-02,
+1.6821050408566407e-01,-3.8847936451702481e-02,-8.4202351484918836e-02,
+-9.7205517107568085e-02,-8.9137287835683310e-02,-6.9397542432625414e-02,
+-4.5506183909083120e-02,-2.3103139523072969e-02,-5.9483607799393212e-03,
+4.0781765676456416e-03,6.9764725196819199e-03,4.6265028288416943e-03,
+7.8821900046932569e-04,1.1015482925813558e-03,1.3086393715866507e-02,
+4.6142634033685681e-02,1.1155012376207196e-01,-6.6185373214011634e-03,
+-1.4345585808541728e-02,-1.6560939951659748e-02,-1.5186352742375675e-02,
+-1.1823285007039885e-02,-7.7529054067326797e-03,-3.9360904372642835e-03,
+-1.0134244291748473e-03,6.9480045226555376e-04,1.1885842070569197e-03,
+7.8821900046932569e-04,1.3428916304292216e-04,1.8767119058793469e-04,
+2.2295337441846641e-03,7.8613376501834864e-03,1.9004835900204853e-02,
+-9.2495086789767811e-03,-2.0048178924980675e-02,-2.3144170739897163e-02,
+-2.1223163770400788e-02,-1.6523224388720337e-02,-1.0834805692638838e-02,
+-5.5007475054935639e-03,-1.4162763761760289e-03,9.7099442086800991e-04,
+1.6610648856385524e-03,1.1015482925813558e-03,1.8767119058793469e-04,
+2.6227340299556090e-04,3.1158080275872635e-03,1.0986341436591829e-02,
+2.6559553276683801e-02,-1.0988416310624416e-01,-2.3817236562877042e-01,
+-2.7495274838997830e-01,-2.5213118559236136e-01,-1.9629590573799760e-01,
+-1.2871749162854940e-01,-6.5348880365263540e-02,-1.6825363348971223e-02,
+1.1535413719911958e-02,1.9733450841386002e-02,1.3086393715866507e-02,
+2.2295337441846641e-03,3.1158080275872635e-03,3.7015799367736690e-02,
+1.3051773626671093e-01,3.1552749292700355e-01,-3.8745164133047183e-01,
+-8.3979593941307940e-01,-9.6948359654902561e-01,-8.8901474904901079e-01,
+-6.9213951050528522e-01,-4.5385797179164911e-01,-2.3042020106345262e-01,
+-5.9326243757595876e-02,4.0673877407471082e-02,6.9580162431748249e-02,
+4.6142634033685681e-02,7.8613376501834864e-03,1.0986341436591829e-02,
+1.3051773626671093e-01,4.6020563573279105e-01,1.1125501761455325e+00,
+-9.3666691222438203e-01,-2.0302122524697097e+00,-2.3437330235935860e+00,
+-2.1491990511492531e+00,-1.6732518564310794e+00,-1.0972046564745597e+00,
+-5.5704236405631491e-01,-1.4342158769409252e-01,9.8329368353233804e-02,
+1.6821050408566407e-01,1.1155012376207196e-01,1.9004835900204853e-02,
+2.6559553276683801e-02,3.1552749292700355e-01,1.1125501761455325e+00,
+2.6895974284855129e+00,
+}
+#endif
+};
diff --git a/src/zfp/zfp-0.5.0/examples/fields.h b/src/zfp/zfp-0.5.0/examples/fields.h
new file mode 100644
index 0000000..f558cfb
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/fields.h
@@ -0,0 +1,20 @@
+#ifndef FIELDS_H
+#define FIELDS_H
+
+// single- and double-precision fields for regression testing
+
+extern const float array_float[3][4096];
+extern const double array_double[3][4096];
+
+template <typename Scalar>
+struct Field {
+  static const Scalar (*array)[4096];
+};
+
+template <>
+const float (*Field<float>::array)[4096] = array_float;
+
+template <>
+const double (*Field<double>::array)[4096] = array_double;
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/examples/pgm.c b/src/zfp/zfp-0.5.0/examples/pgm.c
new file mode 100644
index 0000000..92113ad
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/pgm.c
@@ -0,0 +1,112 @@
+/* simple example that shows how zfp can be used to compress pgm images */
+
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "zfp.h"
+
+int main(int argc, char* argv[])
+{
+  double rate = 0;
+  uint nx, ny;
+  uint x, y;
+  char line[0x100];
+  uchar* image;
+  zfp_field* field;
+  zfp_stream* zfp;
+  bitstream* stream;
+  void* buffer;
+  size_t bytes;
+  size_t size;
+
+  switch (argc) {
+    case 2:
+      if (sscanf(argv[1], "%lf", &rate) != 1)
+        goto usage;
+      break;
+    default:
+    usage:
+      fprintf(stderr, "Usage: pgm <rate|-precision> <input.pgm >output.pgm\n");
+      return EXIT_FAILURE;
+  }
+
+  /* read pgm header */
+  if (!fgets(line, sizeof(line), stdin) || strcmp(line, "P5\n") ||
+      !fgets(line, sizeof(line), stdin) || sscanf(line, "%u%u", &nx, &ny) != 2 ||
+      !fgets(line, sizeof(line), stdin) || strcmp(line, "255\n")) {
+    fprintf(stderr, "error opening image\n");
+    return EXIT_FAILURE;
+  }
+
+  if ((nx & 3u) || (ny & 3u)) {
+    fprintf(stderr, "image dimensions must be multiples of four\n");
+    return EXIT_FAILURE;
+  }
+
+  /* read image data */
+  image = malloc(nx * ny);
+  if (fread(image, sizeof(*image), nx * ny, stdin) != nx * ny) {
+    fprintf(stderr, "error reading image\n");
+    return EXIT_FAILURE;
+  }
+
+  /* create input array */
+  field = zfp_field_2d(image, zfp_type_int32, nx, ny);
+
+  /* initialize compressed stream */
+  zfp = zfp_stream_open(NULL);
+  if (rate < 0)
+    zfp_stream_set_precision(zfp, (uint)floor(0.5 - rate), zfp_type_int32);
+  else
+    zfp_stream_set_rate(zfp, rate, zfp_type_int32, 2, 0);
+  bytes = zfp_stream_maximum_size(zfp, field);
+  buffer = malloc(bytes);
+  stream = stream_open(buffer, bytes);
+  zfp_stream_set_bit_stream(zfp, stream);
+  zfp_field_free(field);
+
+  /* compress */
+  for (y = 0; y < ny; y += 4)
+    for (x = 0; x < nx; x += 4) {
+      uchar ublock[16];
+      int32 iblock[16];
+      uint i, j;
+      for (j = 0; j < 4; j++)
+        for (i = 0; i < 4; i++)
+          ublock[i + 4 * j] = image[x + i + nx * (y + j)];
+      zfp_promote_uint8_to_int32(iblock, ublock, 2);
+      zfp_encode_block_int32_2(zfp, iblock);
+    }
+
+  zfp_stream_flush(zfp);
+  size = zfp_stream_compressed_size(zfp);
+  fprintf(stderr, "%u compressed bytes (%.2f bps)\n", (uint)size, (double)size * CHAR_BIT / (nx * ny));
+
+  /* decompress */
+  zfp_stream_rewind(zfp);
+  for (y = 0; y < ny; y += 4)
+    for (x = 0; x < nx; x += 4) {
+      int32 iblock[16];
+      uchar ublock[16];
+      uint i, j;
+      zfp_decode_block_int32_2(zfp, iblock);
+      zfp_demote_int32_to_uint8(ublock, iblock, 2);
+      for (j = 0; j < 4; j++)
+        for (i = 0; i < 4; i++)
+          image[x + i + nx * (y + j)] = ublock[i + 4 * j];
+    }
+  zfp_stream_close(zfp);
+  stream_close(stream);
+  free(buffer);
+
+  /* output reconstructed image */
+  printf("P5\n");
+  printf("%u %u\n", nx, ny);
+  printf("255\n");
+  fwrite(image, sizeof(*image), nx * ny, stdout);
+  free(image);
+
+  return 0;
+}
diff --git a/src/zfp/zfp-0.5.0/examples/simple.c b/src/zfp/zfp-0.5.0/examples/simple.c
new file mode 100644
index 0000000..4f52f62
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/simple.c
@@ -0,0 +1,99 @@
+/* minimal code example showing how to call the zfp (de)compressor */
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "zfp.h"
+
+/* compress or decompress array */
+static int
+compress(double* array, int nx, int ny, int nz, double tolerance, int decompress)
+{
+  int status = 0;    /* return value: 0 = success */
+  zfp_type type;     /* array scalar type */
+  zfp_field* field;  /* array meta data */
+  zfp_stream* zfp;   /* compressed stream */
+  void* buffer;      /* storage for compressed stream */
+  size_t bufsize;    /* byte size of compressed buffer */
+  bitstream* stream; /* bit stream to write to or read from */
+  size_t zfpsize;    /* byte size of compressed stream */
+
+  /* allocate meta data for the 3D array a[nz][ny][nx] */
+  type = zfp_type_double;
+  field = zfp_field_3d(array, type, nx, ny, nz);
+
+  /* allocate meta data for a compressed stream */
+  zfp = zfp_stream_open(NULL);
+
+  /* set compression mode and parameters via one of three functions */
+/*  zfp_stream_set_rate(zfp, rate, type, 3, 0); */
+/*  zfp_stream_set_precision(zfp, precision, type); */
+  zfp_stream_set_accuracy(zfp, tolerance, type);
+
+  /* allocate buffer for compressed data */
+  bufsize = zfp_stream_maximum_size(zfp, field);
+  buffer = malloc(bufsize);
+
+  /* associate bit stream with allocated buffer */
+  stream = stream_open(buffer, bufsize);
+  zfp_stream_set_bit_stream(zfp, stream);
+  zfp_stream_rewind(zfp);
+
+  /* compress or decompress entire array */
+  if (decompress) {
+    /* read compressed stream and decompress array */
+    zfpsize = fread(buffer, 1, bufsize, stdin);
+    if (!zfp_decompress(zfp, field)) {
+      fprintf(stderr, "decompression failed\n");
+      status = 1;
+    }
+  }
+  else {
+    /* compress array and output compressed stream */
+    zfpsize = zfp_compress(zfp, field);
+    if (!zfpsize) {
+      fprintf(stderr, "compression failed\n");
+      status = 1;
+    }
+    else
+      fwrite(buffer, 1, zfpsize, stdout);
+  }
+
+  /* clean up */
+  zfp_field_free(field);
+  zfp_stream_close(zfp);
+  stream_close(stream);
+  free(buffer);
+  free(array);
+
+  return status;
+}
+
+int main(int argc, char* argv[])
+{
+  /* use -d to decompress rather than compress data */
+  int decompress = (argc == 2 && !strcmp(argv[1], "-d"));
+
+  /* allocate 100x100x100 array of doubles */
+  int nx = 100;
+  int ny = 100;
+  int nz = 100;
+  double* array = malloc(nx * ny * nz * sizeof(double));
+
+  if (!decompress) {
+    /* initialize array to be compressed */
+    int i, j, k;
+    for (k = 0; k < nz; k++)
+      for (j = 0; j < ny; j++)
+        for (i = 0; i < nx; i++) {
+          double x = 2.0 * i / nx;
+          double y = 2.0 * j / ny;
+          double z = 2.0 * k / nz;
+          array[i + nx * (j + ny * k)] = exp(-(x * x + y * y + z * z));
+        }
+  }
+
+  /* compress or decompress array */
+  return compress(array, nx, ny, nz, 1e-3, decompress);
+}
diff --git a/src/zfp/zfp-0.5.0/examples/speed.c b/src/zfp/zfp-0.5.0/examples/speed.c
new file mode 100644
index 0000000..1311da1
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/speed.c
@@ -0,0 +1,136 @@
+/* measure the throughput of encoding and decoding 3D blocks of doubles */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include "zfp.h"
+
+/* example 3D block of (reinterpreted) doubles */
+static const uint64 block[] = {
+0xbf7c3a7bb8495ca9ull,
+0xbf79f9d9058ffdafull,
+0xbf77c7abd0b61999ull,
+0xbf75a42c806bd1daull,
+0xbf738f8f740b8ea8ull,
+0xbf718a050399fef8ull,
+0xbf6f2772ff8c30feull,
+0xbf6b59aa63d22f68ull,
+0xbf67aaf8b80cff9eull,
+0xbf641b9e71983592ull,
+0xbf60abd3f723f2b7ull,
+0xbf5ab7934169cc04ull,
+0xbf54574f6f4897d3ull,
+0xbf4c6e39da7fb99bull,
+0xbf40ae5826a893d1ull,
+0xbf25bce8e19d48e1ull,
+0x3f253bfed65904d7ull,
+0x3f3f18ab46a04cf3ull,
+0x3f4948e7cb74278bull,
+0x3f51427b51aeec2eull,
+0x3f55a0716d8b4b6bull,
+0x3f59be96aeaac56full,
+0x3f5d9d3ba7bfd327ull,
+0x3f609e608469e93eull,
+0x3f624ecbcfa3832cull,
+0x3f63e0202ae84b4dull,
+0x3f6552a61a3f4812ull,
+0x3f66a6ae305af268ull,
+0x3f67dc910e9935bcull,
+0x3f68f4af65036ff7ull,
+0x3f69ef71f24e7182ull,
+0x3f6acd4983da7d43ull,
+0x3f6b8eaef5b348a0ull,
+0x3f6c3423328ffb7aull,
+0x3f6cbe2f33d33034ull,
+0x3f6d2d64018af3acull,
+0x3f6d825ab270c540ull,
+0x3f6dbdb46be996ccull,
+0x3f6de01a6205cca9ull,
+0x3f6dea3dd7813dafull,
+0x3f6ddcd81dc33335ull,
+0x3f6db8aa94de690full,
+0x3f6d7e7eab910d8full,
+0x3f6d2f25df44c187ull,
+0x3f6ccb79bc0e9844ull,
+0x3f6c545bdcaf1795ull,
+0x3f6bcab5ea9237c4ull,
+0x3f6b2f799dcf639bull,
+0x3f6a83a0bd297862ull,
+0x3f69c82d1e0ec5deull,
+0x3f68fe28a4990e53ull,
+0x3f6826a5438d8685ull,
+0x3f6742bcfc5cd5b2ull,
+0x3f665391df231599ull,
+0x3f655a4e0aa7d278ull,
+0x3f645823ac5e0b09ull,
+0x3f634e4d00643085ull,
+0x3f623e0c518426a3ull,
+0x3f6128abf933439aull,
+0x3f600f7e5f92501cull,
+0x3f5de7bbf6db0eb7ull,
+0x3f5bae5aa4792e11ull,
+0x3f5975adf0453ea2ull,
+0x3f57409b1fdc65c4ull,
+};
+
+int main(int argc, char* argv[])
+{
+  size_t n = 0x200000;
+  double rate = 1;
+  zfp_field* field;
+  uint insize;
+  zfp_stream* zfp;
+  bitstream* stream;
+  void* buffer;
+  size_t bytes;
+  clock_t c;
+  double time;
+  uint i;
+
+  switch (argc) {
+    case 3:
+      sscanf(argv[2], "%zu", &n);
+      /* FALLTHROUGH */
+    case 2:
+      sscanf(argv[1], "%lf", &rate);
+      break;
+  }
+
+  /* declare array to compress */
+  field = zfp_field_3d(NULL, zfp_type_double, 4, 4, 4 * n);
+  insize = n * sizeof(block);
+
+  /* allocate storage for compressed bit stream */
+  zfp = zfp_stream_open(NULL);
+  zfp_stream_set_rate(zfp, rate, zfp_field_type(field), zfp_field_dimensionality(field), 0);
+  bytes = zfp_stream_maximum_size(zfp, field);
+  buffer = malloc(bytes);
+  stream = stream_open(buffer, bytes);
+  zfp_stream_set_bit_stream(zfp, stream);
+  zfp_field_free(field);
+
+  /* compress */
+  c = clock();
+  for (i = 0; i < n; i++)
+    zfp_encode_block_double_3(zfp, (const double*)block);
+  zfp_stream_flush(zfp);
+  time = (double)(clock() - c) / CLOCKS_PER_SEC;
+  printf("encode in=%u out=%u %.0f MB/s\n", insize, (uint)stream_size(stream), insize / (1024 * 1024 * time));
+
+  /* decompress */
+  zfp_stream_rewind(zfp);
+  c = clock();
+  for (i = 0; i < n; i++) {
+    double a[64];
+    zfp_decode_block_double_3(zfp, a);
+  }
+  time = (double)(clock() - c) / CLOCKS_PER_SEC;
+  printf("decode in=%u out=%u %.0f MB/s\n", (uint)stream_size(stream), insize, insize / (1024 * 1024 * time));
+
+  zfp_stream_close(zfp);
+  stream_close(stream);
+  free(buffer);
+
+  return 0;
+}
diff --git a/src/zfp/zfp-0.5.0/examples/testzfp.cpp b/src/zfp/zfp-0.5.0/examples/testzfp.cpp
new file mode 100644
index 0000000..7fcc835
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/testzfp.cpp
@@ -0,0 +1,705 @@
+#include <algorithm>
+#include <cmath>
+#include <ctime>
+#include <cstdio>
+#include <cstdlib>
+#include <iomanip>
+#include <iostream>
+#include <limits>
+#include <numeric>
+#include <sstream>
+#include <string>
+#include "zfp.h"
+#include "zfparray1.h"
+#include "zfparray2.h"
+#include "zfparray3.h"
+
+// size of arrays to test
+#ifdef TESTZFP_LARGE_ARRAYS
+  #define TEST_SIZE 16 // 16^6 = 16 M scalars
+  #define WITH_TIMINGS
+#elif defined(TESTZFP_MEDIUM_ARRAYS)
+  #define TEST_SIZE 8 // 8^6 = 256 K scalars
+#else
+  #define TEST_SIZE 4 // 4^6 = 4096 scalars
+  #include "fields.h"
+#endif
+
+typedef unsigned char uchar;
+typedef unsigned long long uint64;
+
+int width = 72; // characters per line
+
+// polynomial x - 3 x^2 + 4 x^4
+template <typename Scalar>
+inline Scalar
+polynomial(volatile Scalar x)
+{
+  // volatile used to ensure bit-for-bit reproducibility across compilers
+  volatile Scalar xx = x * x;
+  volatile Scalar yy = 4 * xx - 3;
+  volatile Scalar p = x + xx * yy;
+  return p;
+}
+
+// initialize array
+template <typename Scalar>
+inline void
+initialize(Scalar* p, int nx, int ny, int nz, Scalar (*f)(Scalar))
+{
+  nx = std::max(nx, 1);
+  ny = std::max(ny, 1);
+  nz = std::max(nz, 1);
+#if TEST_SIZE == 4
+  // use precomputed small arrays for portability
+  uint d = nz == 1 ? ny == 1 ? 0 : 1 : 2;
+  std::copy(&Field<Scalar>::array[d][0], &Field<Scalar>::array[d][0] + nx * ny * nz, p);
+#else
+  for (int k = 0; k < nz; k++) {
+    volatile Scalar z = Scalar(2 * k - nz + 1) / nz;
+    volatile Scalar fz = nz > 1 ? f(z) : Scalar(1);
+    for (int j = 0; j < ny; j++) {
+      volatile Scalar y = Scalar(2 * j - ny + 1) / ny;
+      volatile Scalar fy = ny > 1 ? f(y) : Scalar(1);
+      for (int i = 0; i < nx; i++) {
+        volatile Scalar x = Scalar(2 * i - nx + 1) / nx;
+        volatile Scalar fx = nx > 1 ? f(x) : Scalar(1);
+        *p++ = fx * fy * fz;
+      }
+    }
+  }
+#endif
+}
+
+// compute checksum
+inline uint32
+hash(const void* p, size_t n)
+{
+  uint32 h = 0;
+  for (const uchar* q = static_cast<const uchar*>(p); n; q++, n--) {
+    // Jenkins one-at-a-time hash; see http://www.burtleburtle.net/bob/hash/doobs.html
+    h += *q;
+    h += h << 10;
+    h ^= h >>  6;
+  }
+  h += h <<  3;
+  h ^= h >> 11;
+  h += h << 15;
+  return h;
+}
+
+// test fixed-rate mode
+template <typename Scalar>
+inline uint
+test_rate(zfp_stream* stream, const zfp_field* input, double rate, Scalar tolerance)
+{
+  uint failures = 0;
+  uint n = zfp_field_size(input, NULL);
+  uint dims = zfp_field_dimensionality(input);
+  zfp_type type = zfp_field_type(input);
+
+  // allocate memory for compressed data
+  rate = zfp_stream_set_rate(stream, rate, type, dims, 0);
+  size_t bufsize = zfp_stream_maximum_size(stream, input);
+  uchar* buffer = new uchar[bufsize];
+  bitstream* s = stream_open(buffer, bufsize);
+  zfp_stream_set_bit_stream(stream, s);
+
+  // perform compression test
+  std::ostringstream status;
+  status << "  compress:  ";
+  status << " rate=" << std::fixed << std::setprecision(0) << std::setw(2) << rate;
+#ifdef WITH_TIMINGS
+  clock_t c = clock();
+#endif
+  zfp_stream_rewind(stream);
+  size_t outsize = zfp_compress(stream, input);
+#ifdef WITH_TIMINGS
+  double time = double(clock() - c) / CLOCKS_PER_SEC;
+  double throughput = (n * sizeof(Scalar)) / (0x100000 * time);
+  status << " throughput=" << std::setprecision(1) << std::setw(6) << throughput << " MB/s";
+#endif
+  bool pass = true;
+  // make sure compressed size matches rate
+  size_t bytes = (size_t)floor(rate * zfp_field_size(input, NULL) / CHAR_BIT + 0.5);
+  if (outsize != bytes) {
+    status << " [" << outsize << " != " << bytes << "]";
+    pass = false;
+  }
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  // perform decompression test
+  status.str("");
+  status << "  decompress:";
+  status << " rate=" << std::fixed << std::setprecision(0) << std::setw(2) << rate;
+  Scalar* g = new Scalar[n];
+  zfp_field* output = zfp_field_alloc();
+  *output = *input;
+  zfp_field_set_pointer(output, g);
+#ifdef WITH_TIMINGS
+  c = clock();
+#endif
+  zfp_stream_rewind(stream);
+  pass = zfp_decompress(stream, output);
+  if (!pass)
+    status << " [decompression failed]";
+  else {
+#ifdef WITH_TIMINGS
+    double time = double(clock() - c) / CLOCKS_PER_SEC;
+    double throughput = (n * sizeof(Scalar)) / (0x100000 * time);
+    status << " throughput=" << std::setprecision(1) << std::setw(6) << throughput << " MB/s";
+#endif
+    // compute max error
+    Scalar* f = static_cast<Scalar*>(zfp_field_pointer(input));
+    Scalar emax = 0;
+    for (uint i = 0; i < n; i++)
+      emax = std::max(emax, std::abs(f[i] - g[i]));
+    status << std::scientific;
+    status.precision(3);
+    // make sure max error is within tolerance
+    if (emax <= tolerance)
+      status << " " << emax << " <= " << tolerance;
+    else {
+      status << " [" << emax << " > " << tolerance << "]";
+      pass = false;
+    }
+  }
+  zfp_field_free(output);
+  delete[] g;
+  stream_close(s);
+  delete[] buffer;
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  return failures;
+}
+
+// test fixed-precision mode
+template <typename Scalar>
+inline uint
+test_precision(zfp_stream* stream, const zfp_field* input, uint precision, size_t bytes)
+{
+  uint failures = 0;
+  uint n = zfp_field_size(input, NULL);
+  zfp_type type = zfp_field_type(input);
+
+  // allocate memory for compressed data
+  zfp_stream_set_precision(stream, precision, type);
+  size_t bufsize = zfp_stream_maximum_size(stream, input);
+  uchar* buffer = new uchar[bufsize];
+  bitstream* s = stream_open(buffer, bufsize);
+  zfp_stream_set_bit_stream(stream, s);
+
+  // perform compression test
+  std::ostringstream status;
+  status << "  compress:  ";
+  status << " precision=" << std::setw(2) << precision;
+  zfp_stream_rewind(stream);
+  size_t outsize = zfp_compress(stream, input);
+  double ratio = double(n * sizeof(Scalar)) / outsize;
+  status << " ratio=" << std::fixed << std::setprecision(3) << std::setw(7) << ratio;
+  bool pass = true;
+  // make sure compressed size agrees
+  if (outsize != bytes) {
+    status << " [" << outsize << " != " << bytes << "]";
+    pass = false;
+  }
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  // perform decompression test
+  status.str("");
+  status << "  decompress:";
+  status << " precision=" << std::setw(2) << precision;
+  Scalar* g = new Scalar[n];
+  zfp_field* output = zfp_field_alloc();
+  *output = *input;
+  zfp_field_set_pointer(output, g);
+  zfp_stream_rewind(stream);
+  pass = zfp_decompress(stream, output);
+  if (!pass)
+    status << " [decompression failed]";
+  zfp_field_free(output);
+  delete[] g;
+  stream_close(s);
+  delete[] buffer;
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  return failures;
+}
+
+// test fixed-accuracy mode
+template <typename Scalar>
+inline uint
+test_accuracy(zfp_stream* stream, const zfp_field* input, Scalar tolerance, size_t bytes)
+{
+  uint failures = 0;
+  uint n = zfp_field_size(input, NULL);
+  zfp_type type = zfp_field_type(input);
+
+  // allocate memory for compressed data
+  tolerance = zfp_stream_set_accuracy(stream, tolerance, type);
+  size_t bufsize = zfp_stream_maximum_size(stream, input);
+  uchar* buffer = new uchar[bufsize];
+  bitstream* s = stream_open(buffer, bufsize);
+  zfp_stream_set_bit_stream(stream, s);
+
+  // perform compression test
+  std::ostringstream status;
+  status << "  compress:  ";
+  status << " tolerance=" << std::scientific << std::setprecision(3) << tolerance;
+  zfp_stream_rewind(stream);
+  size_t outsize = zfp_compress(stream, input);
+  double ratio = double(n * sizeof(Scalar)) / outsize;
+  status << " ratio=" << std::fixed << std::setprecision(3) << std::setw(7) << ratio;
+  bool pass = true;
+  // make sure compressed size agrees
+  if (outsize != bytes) {
+    status << " [" << outsize << " != " << bytes << "]";
+    pass = false;
+  }
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  // perform decompression test
+  status.str("");
+  status << "  decompress:";
+  status << " tolerance=" << std::scientific << std::setprecision(3) << tolerance;
+  Scalar* g = new Scalar[n];
+  zfp_field* output = zfp_field_alloc();
+  *output = *input;
+  zfp_field_set_pointer(output, g);
+  zfp_stream_rewind(stream);
+  pass = zfp_decompress(stream, output);
+  if (!pass)
+    status << " [decompression failed]";
+  else {
+    // compute max error
+    Scalar* f = static_cast<Scalar*>(zfp_field_pointer(input));
+    Scalar emax = 0;
+    for (uint i = 0; i < n; i++)
+      emax = std::max(emax, std::abs(f[i] - g[i]));
+    status << std::scientific << std::setprecision(3) << " ";
+    // make sure max error is within tolerance
+    if (emax <= tolerance)
+      status << emax << " <= " << tolerance;
+    else if (tolerance == 0)
+      status << "(" << emax << " > 0)";
+    else {
+      status << "[" << emax << " > " << tolerance << "]";
+      pass = false;
+    }
+  }
+  zfp_field_free(output);
+  delete[] g;
+  stream_close(s);
+  delete[] buffer;
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  return failures;
+}
+
+// perform 1D differencing
+template <typename Scalar>
+inline void
+update_array1(zfp::array1<Scalar>& a)
+{
+  for (uint i = 0; i < a.size() - 1; i++)
+    a(i) -= a(i + 1);
+  for (uint i = 0; i < a.size() - 1; i++)
+    a(0) = std::max(a(0), a(i));
+}
+
+// perform 2D differencing
+template <typename Scalar>
+inline void
+update_array2(zfp::array2<Scalar>& a)
+{
+  for (uint j = 0; j < a.size_y(); j++)
+    for (uint i = 0; i < a.size_x() - 1; i++)
+      a(i, j) -= a(i + 1, j);
+  for (uint j = 0; j < a.size_y() - 1; j++)
+    for (uint i = 0; i < a.size_x(); i++)
+      a(i, j) -= a(i, j + 1);
+  for (uint j = 0; j < a.size_y() - 1; j++)
+    for (uint i = 0; i < a.size_x() - 1; i++)
+      a(0, 0) = std::max(a(0, 0), a(i, j));
+}
+
+// perform 3D differencing
+template <typename Scalar>
+inline void
+update_array3(zfp::array3<Scalar>& a)
+{
+  for (uint k = 0; k < a.size_z(); k++)
+    for (uint j = 0; j < a.size_y(); j++)
+      for (uint i = 0; i < a.size_x() - 1; i++)
+        a(i, j, k) -= a(i + 1, j, k);
+  for (uint k = 0; k < a.size_z(); k++)
+    for (uint j = 0; j < a.size_y() - 1; j++)
+      for (uint i = 0; i < a.size_x(); i++)
+        a(i, j, k) -= a(i, j + 1, k);
+  for (uint k = 0; k < a.size_z() - 1; k++)
+    for (uint j = 0; j < a.size_y(); j++)
+      for (uint i = 0; i < a.size_x(); i++)
+        a(i, j, k) -= a(i, j, k + 1);
+  for (uint k = 0; k < a.size_z() - 1; k++)
+    for (uint j = 0; j < a.size_y() - 1; j++)
+      for (uint i = 0; i < a.size_x() - 1; i++)
+        a(0, 0, 0) = std::max(a(0, 0, 0), a(i, j, k));
+}
+
+template <class Array>
+inline void update_array(Array& a);
+
+template <>
+inline void
+update_array(zfp::array1<float>& a) { update_array1(a); }
+
+template <>
+inline void
+update_array(zfp::array1<double>& a) { update_array1(a); }
+
+template <>
+inline void
+update_array(zfp::array2<float>& a) { update_array2(a); }
+
+template <>
+inline void
+update_array(zfp::array2<double>& a) { update_array2(a); }
+
+template <>
+inline void
+update_array(zfp::array3<float>& a) { update_array3(a); }
+
+template <>
+inline void
+update_array(zfp::array3<double>& a) { update_array3(a); }
+
+// test random-accessible array primitive
+template <class Array, typename Scalar>
+inline uint
+test_array(Array& a, const Scalar* f, uint n, double tolerance, double dfmax)
+{
+  uint failures = 0;
+
+  // test construction
+  std::ostringstream status;
+  status << "  construct: ";
+  Scalar emax = 0;
+  for (uint i = 0; i < n; i++)
+    emax = std::max(emax, std::abs(f[i] - a[i]));
+  status << std::scientific;
+  status.precision(3);
+  // make sure max error is within tolerance
+  bool pass = true;
+  if (emax <= tolerance)
+    status << " " << emax << " <= " << tolerance;
+  else {
+    status << " [" << emax << " > " << tolerance << "]";
+    pass = false;
+  }
+
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  // test array updates
+  status.str("");
+  status << "  update:    ";
+  update_array(a);
+  Scalar amax = a[0];
+  pass = true;
+  if (std::abs(amax - dfmax) <= 1e-3 * dfmax)
+    status << " " << amax << " ~ " << dfmax;
+  else {
+    status << " [" << amax << " != " << dfmax << "]";
+    pass = false;
+  }
+
+  std::cout << std::setw(width) << std::left << status.str() << (pass ? " OK " : "FAIL") << std::endl;
+  if (!pass)
+    failures++;
+
+  return failures;
+}
+
+// test arrays with m^6 scalars
+template <typename Scalar>
+inline uint
+test(uint m)
+{
+  uint failures = 0;
+  uint n = m * m * m * m * m * m;
+  Scalar* f = new Scalar[n];
+  // test 1D, 2D, and 3D arrays
+  for (uint d = 1; d <= 3; d++) {
+    // determine array size
+    uint nx, ny, nz;
+    zfp_field* field = zfp_field_alloc();
+    zfp_field_set_type(field, zfp::codec<Scalar>::type);
+    zfp_field_set_pointer(field, f);
+    switch (d) {
+      case 1:
+        nx = n;
+        ny = 0;
+        nz = 0;
+        zfp_field_set_size_1d(field, nx);
+        break;
+      case 2:
+        nx = m * m * m;
+        ny = m * m * m;
+        nz = 0;
+        zfp_field_set_size_2d(field, nx, ny);
+        break;
+      case 3:
+        nx = m * m;
+        ny = m * m;
+        nz = m * m;
+        zfp_field_set_size_3d(field, nx, ny, nz);
+        break;
+    }
+    initialize<Scalar>(f, nx, ny, nz, polynomial);
+    uint t = (zfp_field_type(field) == zfp_type_float ? 0 : 1);
+    std::cout << "testing " << d << "D array of " << (t == 0 ? "floats" : "doubles") << std::endl;
+
+    // test data integrity
+    uint32 checksum[2][3] = {
+#if TEST_SIZE == 4
+      { 0xdad6fd69u, 0x000f8df1u, 0x60993f48u },
+      { 0x8d95b1fdu, 0x96a0e601u, 0x66e77c83u },
+#elif TEST_SIZE == 8
+      { 0x269fb420u, 0xfc4fd405u, 0x733b9643u },
+      { 0x3321e28bu, 0xfcb8f0f0u, 0xd0f6d6adu },
+#elif TEST_SIZE == 16
+      { 0x62d6c2b5u, 0x88aa838eu, 0x84f98253u },
+      { 0xf2bd03a4u, 0x10084595u, 0xb8df0e02u },
+#endif
+    };
+    uint32 h = hash(f, n * sizeof(Scalar));
+    if (h != checksum[t][d - 1])
+      std::cout << "warning: array checksum mismatch; tests below may fail" << std::endl;
+
+    // open compressed stream
+    zfp_stream* stream = zfp_stream_open(0);
+
+    // test fixed rate
+    for (uint rate = 2u >> t, i = 0; rate <= 32 * (t + 1); rate *= 4, i++) {
+      // expected max errors
+#if TEST_SIZE == 4
+      Scalar emax[2][3][4] = {
+        {
+          {1.998e+00, 7.767e-03, 0.000e+00},
+          {2.356e-01, 3.939e-04, 7.451e-09},
+          {2.479e-01, 1.525e-03, 7.451e-08},
+        },
+        {
+          {1.998e+00, 9.976e-01, 1.360e-05},
+          {2.944e+00, 2.491e-02, 2.578e-06},
+          {6.103e-01, 3.253e-02, 6.467e-06},
+        }
+      };
+#elif TEST_SIZE == 8
+      Scalar emax[2][3][4] = {
+        {
+          {2.000e+00, 1.425e-03, 0.000e+00},
+          {7.110e-02, 1.264e-05, 2.329e-10},
+          {1.864e-02, 2.814e-05, 1.193e-07},
+        },
+        {
+          {2.000e+00, 1.001e+00, 3.084e-06, 0.000e+00},
+          {2.266e+00, 3.509e-03, 1.784e-08, 0.000e+00},
+          {2.494e-01, 1.473e-03, 7.060e-08, 3.470e-18},
+        }
+      };
+#elif TEST_SIZE == 16
+      Scalar emax[2][3][4] = {
+        {
+          {2.000e+00, 1.304e-03, 0.000e+00},
+          {6.907e-02, 5.961e-07, 2.911e-11},
+          {3.458e-03, 7.153e-07, 2.385e-07},
+        },
+        {
+          {2.000e+00, 1.001e+00, 6.353e-07, 0.000e+00},
+          {2.036e+00, 3.174e-04, 1.646e-10, 5.294e-23},
+          {5.483e-02, 8.559e-05, 4.564e-10, 8.674e-19},
+        }
+      };
+#endif
+      failures += test_rate<Scalar>(stream, field, rate, emax[t][d - 1][i]);
+    }
+
+    if (stream_word_bits != 64)
+      std::cout << "warning: stream word size is smaller than 64; tests below may fail" << std::endl;
+
+    // test fixed precision
+    for (uint prec = 4u << t, i = 0; i < 3; prec *= 2, i++) {
+      // expected compressed sizes
+#if TEST_SIZE == 4
+      size_t bytes[2][3][3] = {
+        {
+          {2176, 3256, 6272},
+          { 576, 1296, 4136},
+          { 128,  720, 4096},
+        },
+        {
+          {3640, 6656, 14576},
+          {1392, 4232, 12312},
+          { 744, 4120, 12304},
+        },
+      };
+#elif TEST_SIZE == 8
+      size_t bytes[2][3][3] = {
+        {
+          {138864, 204456, 349888},
+          { 35216,  63632, 163008},
+          {  8856,  26768, 133360},
+        },
+        {
+          {229048, 374264, 786504},
+          { 69776, 169168, 564192},
+          { 28304, 134904, 588600},
+        },
+      };
+#elif TEST_SIZE == 16
+      size_t bytes[2][3][3] = {
+        {
+          {8886920, 13080944, 21487696},
+          {2240256,  3457592,  7787752},
+          { 570656,  1277128,  4803216},
+        },
+        {
+          {14654848, 23059592, 45965208},
+          { 3850784,  8168520, 25149520},
+          { 1375440,  4901552, 24339800},
+        },
+      };
+#endif
+      failures += test_precision<Scalar>(stream, field, prec, bytes[t][d - 1][i]);
+    }
+
+    // test fixed accuracy
+    for (uint i = 0; i < 3; i++) {
+      Scalar tol[] = { 1e-3, 2 * std::numeric_limits<Scalar>::epsilon(), 0 };
+      // expected compressed sizes
+#if TEST_SIZE == 4
+      size_t bytes[2][3][3] = {
+        {
+          {4752, 10184, 14192},
+          {2920,  8720, 12216},
+          {4264, 10408, 12280},
+        },
+        {
+          {5136, 25416, 30960},
+          {3016, 23664, 28696},
+          {4288, 25280, 28688},
+        },
+      };
+#elif TEST_SIZE == 8
+      size_t bytes[2][3][3] = {
+        {
+          {272208, 552856, 792528},
+          {105440, 329280, 572552},
+          { 90584, 381264, 588528},
+        },
+        {
+          {296672, 1478648, 1834416},
+          {111560, 1250056, 1609720},
+          { 92120, 1327544, 1637168},
+        },
+      };
+#elif TEST_SIZE == 16
+      size_t bytes[2][3][3] = {
+        {
+          {17416688, 32229448, 47431656},
+          { 5327000, 14827440, 28920960},
+          { 2721504, 12688136, 26308832},
+        },
+        {
+          {18982344, 85195360, 107965448},
+          { 5715280, 63417800,  86969224},
+          { 2819224, 66345592,  89157296},
+        },
+      };
+#endif
+      failures += test_accuracy<Scalar>(stream, field, tol[i], bytes[t][d - 1][i]);
+    }
+
+    // test compressed array support
+#if TEST_SIZE == 4
+    Scalar emax[2][3] = {
+      {0.000e+00, 7.451e-09, 7.451e-08},
+      {2.354e-10, 5.731e-09, 2.804e-08},
+    };
+    Scalar dfmax[2][3] = {
+      {4.385e-03, 9.260e-02, 3.760e-01},
+      {4.385e-03, 9.260e-02, 3.760e-01},
+    };
+#elif TEST_SIZE == 8
+    Scalar emax[2][3] = {
+      {0.000e+00, 2.329e-10, 1.193e-07},
+      {1.302e-11, 5.678e-11, 4.148e-10},
+    };
+    Scalar dfmax[2][3] = {
+      {6.866e-05, 1.792e-03, 2.239e-02},
+      {6.866e-05, 1.792e-03, 2.239e-02},
+    };
+#elif TEST_SIZE == 16
+    Scalar emax[2][3] = {
+      {0.000e+00, 2.911e-11, 2.385e-07},
+      {4.464e-13, 3.051e-13, 1.224e-12},
+    };
+    Scalar dfmax[2][3] = {
+      {1.073e-06, 2.906e-05, 4.714e-04},
+      {1.073e-06, 2.880e-05, 4.714e-04},
+    };
+#endif
+    double rate = 24;
+    switch (d) {
+      case 1: {
+          zfp::array1<Scalar> a(nx, rate, f);
+          failures += test_array(a, f, n, emax[t][d - 1], dfmax[t][d - 1]);
+        }
+        break;
+      case 2: {
+          zfp::array2<Scalar> a(nx, ny, rate, f);
+          failures += test_array(a, f, n, emax[t][d - 1], dfmax[t][d - 1]);
+        }
+        break;
+      case 3: {
+          zfp::array3<Scalar> a(nx, ny, nz, rate, f);
+          failures += test_array(a, f, n, emax[t][d - 1], dfmax[t][d - 1]);
+        }
+        break;
+    }
+
+    std::cout << std::endl;
+    zfp_stream_close(stream);
+    zfp_field_free(field);
+  }
+
+  delete[] f;
+  return failures;
+}
+
+int main()
+{
+  uint failures = 0;
+  uint m = TEST_SIZE;
+  failures += test<float>(m);
+  failures += test<double>(m);
+  if (failures)
+    std::cout << failures << " test(s) failed" << std::endl;
+  else
+    std::cout << "all tests passed" << std::endl;
+  return failures ? EXIT_FAILURE : EXIT_SUCCESS;
+}
diff --git a/src/zfp/zfp-0.5.0/examples/zfp.c b/src/zfp/zfp-0.5.0/examples/zfp.c
new file mode 100644
index 0000000..2cdc6f0
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/examples/zfp.c
@@ -0,0 +1,480 @@
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "zfp.h"
+#include "macros.h"
+
+/*
+File I/O is done using the following combinations of i, o, s, and z:
+- i   : read uncompressed
+- z   : read compressed
+- i, s: read uncompressed, print stats
+- i, o: read and write uncompressed
+- i, z: read uncompressed, write compressed
+- z, o: read compressed, write uncompressed
+
+The 7 major tasks to be accomplished are:
+- read uncompressed:  i
+- read compressed:    !i
+- compress:           i
+- write compressed:   i && z
+- decompress:         o || s || (!i && z)
+- write uncompressed: o
+- compute stats:      s
+*/
+
+/* compute and print reconstruction error */
+static void
+print_error(const void* fin, const void* fout, zfp_type type, uint n)
+{
+  const float* ff = fin;
+  const double* fd = fin;
+  const float* gf = fout;
+  const double* gd = fout;
+  int single = (type == zfp_type_float);
+  double fmin = single ? ff[0] : fd[0];
+  double fmax = fmin;
+  double erms = 0;
+  double ermsn = 0;
+  double emax = 0;
+  double psnr = 0;
+  uint i;
+
+  for (i = 0; i < n; i++) {
+    double d = fabs(single ? ff[i] - gf[i] : fd[i] - gd[i]);
+    double val = single ? ff[i] : fd[i];
+    emax = MAX(emax, d);
+    erms += d * d;
+    fmin = MIN(fmin, val);
+    fmax = MAX(fmax, val);
+  }
+  erms = sqrt(erms / n);
+  ermsn = erms / (fmax - fmin);
+  psnr = 20 * log10((fmax - fmin) / (2 * erms));
+  fprintf(stderr, " rmse=%.4g nrmse=%.4g maxe=%.4g psnr=%.2f", erms, ermsn, emax, psnr);
+}
+
+static void
+usage()
+{
+  fprintf(stderr, "Usage: zfp <options>\n");
+  fprintf(stderr, "General options:\n");
+  fprintf(stderr, "  -h : read/write array and compression parameters from/to compressed header\n");
+  fprintf(stderr, "  -q : quiet mode; suppress output\n");
+  fprintf(stderr, "  -s : print error statistics\n");
+  fprintf(stderr, "Input and output:\n");
+  fprintf(stderr, "  -i <path> : uncompressed binary input file (\"-\" for stdin)\n");
+  fprintf(stderr, "  -o <path> : decompressed binary output file (\"-\" for stdout)\n");
+  fprintf(stderr, "  -z <path> : compressed input (w/o -i) or output file (\"-\" for stdin/stdout)\n");
+  fprintf(stderr, "Array type and dimensions (needed with -i):\n");
+  fprintf(stderr, "  -f : single precision (float type)\n");
+  fprintf(stderr, "  -d : double precision (double type)\n");
+  fprintf(stderr, "  -1 <nx> : 1D array dimensions\n");
+  fprintf(stderr, "  -2 <nx> <ny> : 2D array dimensions\n");
+  fprintf(stderr, "  -3 <nx> <ny> <nz> : 3D array dimensions\n");
+  fprintf(stderr, "Compression parameters (needed with -i):\n");
+  fprintf(stderr, "  -r <rate> : fixed rate (# compressed bits per floating-point value)\n");
+  fprintf(stderr, "  -p <precision> : fixed precision (# uncompressed bits per value)\n");
+  fprintf(stderr, "  -a <tolerance> : fixed accuracy (absolute error tolerance)\n");
+  fprintf(stderr, "  -c <minbits> <maxbits> <maxprec> <minexp> : advanced usage\n");
+  fprintf(stderr, "      minbits : min # bits per 4^d values in d dimensions\n");
+  fprintf(stderr, "      maxbits : max # bits per 4^d values in d dimensions (0 for unlimited)\n");
+  fprintf(stderr, "      maxprec : max # bits of precision per value (0 for full)\n");
+  fprintf(stderr, "      minexp : min bit plane # coded (-1074 for all bit planes)\n");
+  fprintf(stderr, "Examples:\n");
+  fprintf(stderr, "  -i file : read uncompressed file and compress to memory\n");
+  fprintf(stderr, "  -z file : read compressed file and decompress to memory\n");
+  fprintf(stderr, "  -i ifile -z zfile : read uncompressed ifile, write compressed zfile\n");
+  fprintf(stderr, "  -z zfile -o ofile : read compressed zfile, write decompressed ofile\n");
+  fprintf(stderr, "  -i ifile -o ofile : read ifile, compress, decompress, write ofile\n");
+  fprintf(stderr, "  -i file -s : read uncompressed file, compress to memory, print stats\n");
+  fprintf(stderr, "  -i - -o - -s : read stdin, compress, decompress, write stdout, print stats\n");
+  fprintf(stderr, "  -f -3 100 100 100 -r 16 : 2x fixed-rate compression of 100x100x100 floats\n");
+  fprintf(stderr, "  -d -1 1000000 -r 32 : 2x fixed-rate compression of 1M doubles\n");
+  fprintf(stderr, "  -d -2 1000 1000 -p 32 : 32-bit precision compression of 1000x1000 doubles\n");
+  fprintf(stderr, "  -d -1 1000000 -a 1e-9 : compression of 1M doubles with < 1e-9 max error\n");
+  fprintf(stderr, "  -d -1 1000000 -c 64 64 0 -1074 : 4x fixed-rate compression of 1M doubles\n");
+  exit(EXIT_FAILURE);
+}
+
+int main(int argc, char* argv[])
+{
+  /* default settings */
+  zfp_type type = zfp_type_none;
+  size_t typesize = 0;
+  uint dims = 0;
+  uint nx = 0;
+  uint ny = 0;
+  uint nz = 0;
+  double rate = 0;
+  uint precision = 0;
+  double tolerance = 0;
+  uint minbits = ZFP_MIN_BITS;
+  uint maxbits = ZFP_MAX_BITS;
+  uint maxprec = ZFP_MAX_PREC;
+  int minexp = ZFP_MIN_EXP;
+  int header = 0;
+  int quiet = 0;
+  int stats = 0;
+  char* inpath = 0;
+  char* zfppath = 0;
+  char* outpath = 0;
+  char mode = 0;
+
+  /* local variables */
+  int i;
+  zfp_field* field = NULL;
+  zfp_stream* zfp = NULL;
+  bitstream* stream = NULL;
+  void* fi = NULL;
+  void* fo = NULL;
+  void* buffer = NULL;
+  size_t rawsize = 0;
+  size_t zfpsize = 0;
+  size_t bufsize = 0;
+
+  /* parse command-line arguments */
+  for (i = 1; i < argc; i++) {
+    if (argv[i][0] != '-' || argv[i][2])
+      usage();
+    switch (argv[i][1]) {
+      case '1':
+        if (++i == argc || sscanf(argv[i], "%u", &nx) != 1)
+          usage();
+        ny = nz = 1;
+        dims = 1;
+        break;
+      case '2':
+        if (++i == argc || sscanf(argv[i], "%u", &nx) != 1 ||
+            ++i == argc || sscanf(argv[i], "%u", &ny) != 1)
+          usage();
+        nz = 1;
+        dims = 2;
+        break;
+      case '3':
+        if (++i == argc || sscanf(argv[i], "%u", &nx) != 1 ||
+            ++i == argc || sscanf(argv[i], "%u", &ny) != 1 ||
+            ++i == argc || sscanf(argv[i], "%u", &nz) != 1)
+          usage();
+        dims = 3;
+        break;
+      case 'a':
+        if (++i == argc || sscanf(argv[i], "%lf", &tolerance) != 1)
+          usage();
+        mode = 'a';
+        break;
+      case 'c':
+        if (++i == argc || sscanf(argv[i], "%u", &minbits) != 1 ||
+            ++i == argc || sscanf(argv[i], "%u", &maxbits) != 1 ||
+            ++i == argc || sscanf(argv[i], "%u", &maxprec) != 1 ||
+            ++i == argc || sscanf(argv[i], "%d", &minexp) != 1)
+          usage();
+        mode = 'c';
+        break;
+      case 'd':
+        type = zfp_type_double;
+        typesize = sizeof(double);
+        break;
+      case 'f':
+        type = zfp_type_float;
+        typesize = sizeof(float);
+        break;
+      case 'h':
+        header = 1;
+        break;
+      case 'i':
+        if (++i == argc)
+          usage();
+        inpath = argv[i];
+        break;
+      case 'o':
+        if (++i == argc)
+          usage();
+        outpath = argv[i];
+        break;
+      case 'p':
+        if (++i == argc || sscanf(argv[i], "%u", &precision) != 1)
+          usage();
+        mode = 'p';
+        break;
+      case 'q':
+        quiet = 1;
+        break;
+      case 'r':
+        if (++i == argc || sscanf(argv[i], "%lf", &rate) != 1)
+          usage();
+        mode = 'r';
+        break;
+      case 's':
+        stats = 1;
+        break;
+      case 'z':
+        if (++i == argc)
+          usage();
+        zfppath = argv[i];
+        break;
+      default:
+        usage();
+        break;
+    }
+  }
+
+  /* make sure we have an input file */
+  if (!inpath && !zfppath) {
+    fprintf(stderr, "must specify uncompressed or compressed input file via -i or -z\n");
+    return EXIT_FAILURE;
+  }
+
+  /* make sure we know floating-point type */
+  if ((inpath || !header) && !typesize) {
+    fprintf(stderr, "must specify scalar type via -f or -d\n");
+    return EXIT_FAILURE;
+  }
+
+  /* make sure we know array dimensions */
+  if ((inpath || !header) && !dims) {
+    fprintf(stderr, "must specify array dimensions via -1, -2, or -3\n");
+    return EXIT_FAILURE;
+  }
+
+  /* make sure we know (de)compression mode and parameters */
+  if ((inpath || !header) && !mode) {
+    fprintf(stderr, "must specify compression parameters via -a, -c, -p, or -r\n");
+    return EXIT_FAILURE;
+  }
+
+  /* make sure we have input file for stats */
+  if (stats && !inpath) {
+    fprintf(stderr, "must specify input file via -i to compute stats\n");
+    return EXIT_FAILURE;
+  }
+
+  /* make sure meta data comes from header or command line, not both */
+  if (!inpath && zfppath && header && (typesize || dims)) {
+    fprintf(stderr, "cannot specify both field type/size and header\n");
+    return EXIT_FAILURE;
+  }
+
+  zfp = zfp_stream_open(NULL);
+  field = zfp_field_alloc();
+
+  /* read uncompressed or compressed file */
+  if (inpath) {
+    /* read uncompressed input file */
+    FILE* file = !strcmp(inpath, "-") ? stdin : fopen(inpath, "rb");
+    if (!file) {
+      fprintf(stderr, "cannot open input file\n");
+      return EXIT_FAILURE;
+    }
+    rawsize = typesize * nx * ny * nz;
+    fi = malloc(rawsize);
+    if (!fi) {
+      fprintf(stderr, "cannot allocate memory\n");
+      return EXIT_FAILURE;
+    }
+    if (fread(fi, typesize, nx * ny * nz, file) != nx * ny * nz) {
+      fprintf(stderr, "cannot read input file\n");
+      return EXIT_FAILURE;
+    }
+    fclose(file);
+    zfp_field_set_pointer(field, fi);
+  }
+  else {
+    /* read compressed input file in increasingly large chunks */
+    FILE* file = !strcmp(zfppath, "-") ? stdin : fopen(zfppath, "rb");
+    if (!file) {
+      fprintf(stderr, "cannot open compressed file\n");
+      return EXIT_FAILURE;
+    }
+    bufsize = 0x100;
+    do {
+      bufsize *= 2;
+      buffer = realloc(buffer, bufsize);
+      if (!buffer) {
+        fprintf(stderr, "cannot allocate memory\n");
+        return EXIT_FAILURE;
+      }
+      zfpsize += fread((uchar*)buffer + zfpsize, 1, bufsize - zfpsize, file);
+    } while (zfpsize == bufsize);
+    if (ferror(file)) {
+      fprintf(stderr, "cannot read compressed file\n");
+      return EXIT_FAILURE;
+    }
+    fclose(file);
+
+    /* associate bit stream with buffer */
+    stream = stream_open(buffer, bufsize);
+    if (!stream) {
+      fprintf(stderr, "cannot open compressed stream\n");
+      return EXIT_FAILURE;
+    }
+    zfp_stream_set_bit_stream(zfp, stream);
+  }
+
+  /* set field dimensions and (de)compression parameters */
+  if (inpath || !header) {
+    /* initialize uncompressed field */
+    zfp_field_set_type(field, type);
+    switch (dims) {
+      case 1:
+        zfp_field_set_size_1d(field, nx);
+        break;
+      case 2:
+        zfp_field_set_size_2d(field, nx, ny);
+        break;
+      case 3:
+        zfp_field_set_size_3d(field, nx, ny, nz);
+        break;
+    }
+
+    /* set (de)compression mode */
+    switch (mode) {
+      case 'a':
+        zfp_stream_set_accuracy(zfp, tolerance, type);
+        break;
+      case 'p':
+        zfp_stream_set_precision(zfp, precision, type);
+        break;
+      case 'r':
+        zfp_stream_set_rate(zfp, rate, type, dims, 0);
+        break;
+      case 'c':
+        if (!maxbits)
+          maxbits = ZFP_MAX_BITS;
+        if (!maxprec)
+          maxprec = zfp_field_precision(field);
+        if (!zfp_stream_set_params(zfp, minbits, maxbits, maxprec, minexp)) {
+          fprintf(stderr, "invalid compression parameters\n");
+          return EXIT_FAILURE;
+        }
+        break;
+    }
+  }
+
+  /* compress input file if provided */
+  if (inpath) {
+    /* allocate buffer for compressed data */
+    bufsize = zfp_stream_maximum_size(zfp, field);
+    if (!bufsize) {
+      fprintf(stderr, "invalid compression parameters\n");
+      return EXIT_FAILURE;
+    }
+    buffer = malloc(bufsize);
+    if (!buffer) {
+      fprintf(stderr, "cannot allocate memory\n");
+      return EXIT_FAILURE;
+    }
+
+    /* associate compressed bit stream with memory buffer */
+    stream = stream_open(buffer, bufsize);
+    if (!stream) {
+      fprintf(stderr, "cannot open compressed stream\n");
+      return EXIT_FAILURE;
+    }
+    zfp_stream_set_bit_stream(zfp, stream);
+
+    /* optionally write header */
+    if (header && !zfp_write_header(zfp, field, ZFP_HEADER_FULL)) {
+      fprintf(stderr, "cannot write header\n");
+      return EXIT_FAILURE;
+    }
+
+    /* compress data */
+    zfpsize = zfp_compress(zfp, field);
+    if (zfpsize == 0) {
+      fprintf(stderr, "compression failed\n");
+      return EXIT_FAILURE;
+    }
+
+    /* optionally write compressed data */
+    if (zfppath) {
+      FILE* file = !strcmp(zfppath, "-") ? stdout : fopen(zfppath, "wb");
+      if (!file) {
+        fprintf(stderr, "cannot create compressed file\n");
+        return EXIT_FAILURE;
+      }
+      if (fwrite(buffer, 1, zfpsize, file) != zfpsize) {
+        fprintf(stderr, "cannot write compressed file\n");
+        return EXIT_FAILURE;
+      }
+      fclose(file);
+    }
+  }
+
+  /* decompress data if necessary */
+  if ((!inpath && zfppath) || outpath || stats) {
+    /* obtain metadata from header when present */
+    zfp_stream_rewind(zfp);
+    if (header) {
+      if (!zfp_read_header(zfp, field, ZFP_HEADER_FULL)) {
+        fprintf(stderr, "incorrect or missing header\n");
+        return EXIT_FAILURE;
+      }
+      type = field->type;
+      switch (type) {
+        case zfp_type_float:
+          typesize = sizeof(float);
+          break;
+        case zfp_type_double:
+          typesize = sizeof(double);
+          break;
+        default:
+          fprintf(stderr, "unsupported type\n");
+          return EXIT_FAILURE;
+      }
+      nx = MAX(field->nx, 1u);
+      ny = MAX(field->ny, 1u);
+      nz = MAX(field->nz, 1u);
+    }
+
+    /* allocate memory for decompressed data */
+    rawsize = typesize * nx * ny * nz;
+    fo = malloc(rawsize);
+    if (!fo) {
+      fprintf(stderr, "cannot allocate memory\n");
+      return EXIT_FAILURE;
+    }
+    zfp_field_set_pointer(field, fo);
+
+    /* decompress data */
+    if (!zfp_decompress(zfp, field)) {
+      fprintf(stderr, "decompression failed\n");
+      return EXIT_FAILURE;
+    }
+
+    /* optionally write reconstructed data */
+    if (outpath) {
+      FILE* file = !strcmp(outpath, "-") ? stdout : fopen(outpath, "wb");
+      if (!file) {
+        fprintf(stderr, "cannot create output file\n");
+        return EXIT_FAILURE;
+      }
+      if (fwrite(fo, typesize, nx * ny * nz, file) != nx * ny * nz) {
+        fprintf(stderr, "cannot write output file\n");
+        return EXIT_FAILURE;
+      }
+      fclose(file);
+    }
+  }
+
+  /* print compression and error statistics */
+  if (!quiet) {
+    fprintf(stderr, "type=%s nx=%u ny=%u nz=%u", type == zfp_type_float ? "float" : "double", nx, ny, nz);
+    fprintf(stderr, " raw=%lu zfp=%lu ratio=%.3g rate=%.4g", (unsigned long)rawsize, (unsigned long)zfpsize, (double)rawsize / zfpsize, CHAR_BIT * (double)zfpsize / (nx * ny * nz));
+    if (stats)
+      print_error(fi, fo, type, nx * ny * nz);
+    fprintf(stderr, "\n");
+  }
+
+  /* free allocated storage */
+  zfp_field_free(field);
+  zfp_stream_close(zfp);
+  stream_close(stream);
+  free(buffer);
+  free(fi);
+  free(fo);
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/zfp/zfp-0.5.0/inc/bitstream.h b/src/zfp/zfp-0.5.0/inc/bitstream.h
new file mode 100644
index 0000000..37380f6
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/inc/bitstream.h
@@ -0,0 +1,87 @@
+#ifndef BITSTREAM_H
+#define BITSTREAM_H
+
+#include <stddef.h>
+#include "types.h"
+
+/* forward declaration of opaque type */
+typedef struct bitstream bitstream;
+
+extern const size_t stream_word_bits; /* bit stream granularity */
+
+#ifndef _inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* allocate and initialize bit stream */
+bitstream* stream_open(void* buffer, size_t bytes);
+
+/* close and deallocate bit stream */
+void stream_close(bitstream* stream);
+
+/* pointer to beginning of stream */
+void* stream_data(const bitstream* stream);
+
+/* current byte size of stream (if flushed) */
+size_t stream_size(const bitstream* stream);
+
+/* byte capacity of stream */
+size_t stream_capacity(const bitstream* stream);
+
+/* number of words per block */
+size_t stream_block(const bitstream* stream);
+
+/* number of blocks between consecutive blocks */
+int stream_delta(const bitstream* stream);
+
+/* read single bit (0 or 1) */
+uint stream_read_bit(bitstream* stream);
+
+/* write single bit */
+uint stream_write_bit(bitstream* stream, uint bit);
+
+/* read 0 <= n <= 64 bits */
+uint64 stream_read_bits(bitstream* stream, uint n);
+
+/* write 0 <= n <= 64 low bits of value and return remaining bits */
+uint64 stream_write_bits(bitstream* stream, uint64 value, uint n);
+
+/* return bit offset to next bit to be read */
+size_t stream_rtell(const bitstream* stream);
+
+/* return bit offset to next bit to be written */
+size_t stream_wtell(const bitstream* stream);
+
+/* rewind stream to beginning */
+void stream_rewind(bitstream* stream);
+
+/* position stream for reading at given bit offset */
+void stream_rseek(bitstream* stream, size_t offset);
+
+/* position stream for writing at given bit offset */
+void stream_wseek(bitstream* stream, size_t offset);
+
+/* skip over the next n bits */
+void stream_skip(bitstream* stream, uint n);
+
+/* append n zero bits to stream */
+void stream_pad(bitstream* stream, uint n);
+
+/* align stream on next word boundary */
+void stream_align(bitstream* stream);
+
+/* flush out any remaining buffered bits */
+void stream_flush(bitstream* stream);
+
+#ifdef BITSTREAM_STRIDED
+/* set block size in number of words and spacing in number of blocks */
+int stream_set_stride(bitstream* stream, uint block, int delta);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !_inline */
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/inc/macros.h b/src/zfp/zfp-0.5.0/inc/macros.h
new file mode 100644
index 0000000..c7d3184
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/inc/macros.h
@@ -0,0 +1,7 @@
+#ifndef MACROS_H
+#define MACROS_H
+
+#define MIN(x, y) ((x) < (y) ? (x) : (y))
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/inc/system.h b/src/zfp/zfp-0.5.0/inc/system.h
new file mode 100644
index 0000000..1cf387e
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/inc/system.h
@@ -0,0 +1,20 @@
+#ifndef SYSTEM_H
+#define SYSTEM_H
+
+#if __STDC_VERSION__ >= 199901L
+  #define _restrict restrict
+#else
+  #define _restrict
+#endif
+
+#ifdef __GNUC__
+  #ifndef CACHE_LINE_SIZE
+    #define CACHE_LINE_SIZE 0x100
+  #endif
+  #define _align(n) __attribute__((aligned(n)))
+  #define _cache_align(x) x _align(CACHE_LINE_SIZE)
+#else
+  #define _cache_align(x) x
+#endif
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/inc/types.h b/src/zfp/zfp-0.5.0/inc/types.h
new file mode 100644
index 0000000..a1361a3
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/inc/types.h
@@ -0,0 +1,30 @@
+#ifndef TYPES_H
+#define TYPES_H
+
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+
+#if __STDC_VERSION__ >= 199901L
+  #include <stdint.h>
+  typedef int8_t int8;
+  typedef uint8_t uint8;
+  typedef int16_t int16;
+  typedef uint16_t uint16;
+  typedef int32_t int32;
+  typedef uint32_t uint32;
+  typedef int64_t int64;
+  typedef uint64_t uint64;
+#else
+  /* assume common integer types in C89 */
+  typedef signed char int8;
+  typedef unsigned char uint8;
+  typedef signed short int16;
+  typedef unsigned short uint16;
+  typedef signed int int32;
+  typedef unsigned int uint32;
+  typedef signed long long int64; /* not ANSI C89 compliant */
+  typedef unsigned long long uint64; /* not ANSI C89 compliant */
+#endif
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/inc/zfp.h b/src/zfp/zfp-0.5.0/inc/zfp.h
new file mode 100644
index 0000000..ae9f0b2
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/inc/zfp.h
@@ -0,0 +1,549 @@
+/*
+** Copyright (c) 2014-2015, Lawrence Livermore National Security, LLC.
+** Produced at the Lawrence Livermore National Laboratory.
+** Written by Peter Lindstrom.
+** LLNL-CODE-663824.
+** All rights reserved.
+**
+** This file is part of the zfp library.
+** For details, see http://computation.llnl.gov/casc/zfp/.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** 1. Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the disclaimer below.
+**
+** 2. Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the disclaimer (as noted below) in the
+** documentation and/or other materials provided with the distribution.
+**
+** 3. Neither the name of the LLNS/LLNL nor the names of its contributors may
+** be used to endorse or promote products derived from this software without
+** specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+** ARE DISCLAIMED.  IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
+** LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+** INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Additional BSD Notice
+**
+** 1. This notice is required to be provided under our contract with the U.S.
+** Department of Energy (DOE).  This work was produced at Lawrence Livermore
+** National Laboratory under Contract No. DE-AC52-07NA27344 with the DOE.
+
+** 2. Neither the United States Government nor Lawrence Livermore National
+** Security, LLC nor any of their employees, makes any warranty, express or
+** implied, or assumes any liability or responsibility for the accuracy,
+** completeness, or usefulness of any information, apparatus, product, or
+** process disclosed, or represents that its use would not infringe
+** privately-owned rights.
+**
+** 3. Also, reference herein to any specific commercial products, process, or
+** services by trade name, trademark, manufacturer or otherwise does not
+** necessarily constitute or imply its endorsement, recommendation, or
+** favoring by the United States Government or Lawrence Livermore National
+** Security, LLC.  The views and opinions of authors expressed herein do not
+** necessarily state or reflect those of the United States Government or
+** Lawrence Livermore National Security, LLC, and shall not be used for
+** advertising or product endorsement purposes.
+*/
+
+#ifndef ZFP_H
+#define ZFP_H
+
+#include "types.h"
+#include "system.h"
+#include "bitstream.h"
+
+/* macros ------------------------------------------------------------------ */
+
+/* library version information */
+#define ZFP_VERSION 0x0050    /* library version number: 0.5.0 */
+#define ZFP_VERSION_MAJOR 0   /* library major version number */
+#define ZFP_VERSION_MINOR 5   /* library minor version number */
+#define ZFP_VERSION_RELEASE 0 /* library release version number */
+
+/* default compression parameters */
+#define ZFP_MIN_BITS     0 /* minimum number of bits per block */
+#define ZFP_MAX_BITS  4171 /* maximum number of bits per block */
+#define ZFP_MAX_PREC    64 /* maximum precision supported */
+#define ZFP_MIN_EXP  -1074 /* minimum floating-point base-2 exponent */
+
+/* header masks (enable via bitwise or; reader must use same mask) */
+#define ZFP_HEADER_MAGIC  0x1u /* embed 32-bit magic */
+#define ZFP_HEADER_FIELD  0x2u /* embed 52-bit field type and dimensions */
+#define ZFP_HEADER_PARAMS 0x4u /* embed 12- or 64-bit compression parameters */
+#define ZFP_HEADER_FULL   0x7u /* embed all of the above */
+
+/* number of bits per header entry */
+#define ZFP_MAGIC_BITS       32 /* number of magic word bits */
+#define ZFP_META_BITS        52 /* number of field metadata bits */
+#define ZFP_MODE_SHORT_BITS  12 /* number of mode bits in short format */
+#define ZFP_MODE_LONG_BITS   64 /* number of mode bits in long format */
+#define ZFP_HEADER_BITS     148 /* max number of header bits */
+#define ZFP_MODE_SHORT_MAX  ((1u << ZFP_MODE_SHORT_BITS) - 2)
+
+/* types ------------------------------------------------------------------- */
+
+/* compressed stream; use accessors to get/set members */
+typedef struct {
+  uint minbits;      /* minimum number of bits to store per block */
+  uint maxbits;      /* maximum number of bits to store per block */
+  uint maxprec;      /* maximum number of bit planes to store */
+  int minexp;        /* minimum floating point bit plane number to store */
+  bitstream* stream; /* compressed bit stream */
+} zfp_stream;
+
+/* scalar type */
+typedef enum {
+  zfp_type_none   = 0, /* unspecified type */
+  zfp_type_int32  = 1, /* 32-bit signed integer */
+  zfp_type_int64  = 2, /* 64-bit signed integer */
+  zfp_type_float  = 3, /* single precision floating point */
+  zfp_type_double = 4  /* double precision floating point */
+} zfp_type;
+
+/* uncompressed array; use accessors to get/set members */
+typedef struct {
+  zfp_type type;   /* scalar type (e.g. int32, double) */
+  uint nx, ny, nz; /* sizes (zero for unused dimensions) */
+  int sx, sy, sz;  /* strides (zero for contiguous array a[nz][ny][nx]) */
+  void* data;      /* pointer to array data */
+} zfp_field;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* high-level API: compressed stream construction/destruction -------------- */
+
+/* open compressed stream and associate with bit stream */
+zfp_stream*         /* allocated compressed stream */
+zfp_stream_open(
+  bitstream* stream /* bit stream to read from and write to (may be NULL) */
+);
+
+/* close and deallocate compressed stream (does not affect bit stream) */
+void
+zfp_stream_close(
+  zfp_stream* stream /* compressed stream */
+);
+
+/* high-level API: compressed stream inspectors ---------------------------- */
+
+/* bit stream associated with compressed stream */
+bitstream*                 /* bit stream associated with compressed stream */
+zfp_stream_bit_stream(
+  const zfp_stream* stream /* compressed stream */
+);
+
+/* get all compression parameters in a compact representation */
+uint64                     /* 12- or 64-bit encoding of parameters */
+zfp_stream_mode(
+  const zfp_stream* zfp    /* compressed stream */
+);
+
+/* get all compression parameters (pointers may be NULL) */
+void
+zfp_stream_params(
+  const zfp_stream* stream, /* compressed stream */
+  uint* minbits,            /* minimum number of bits per 4^d block */
+  uint* maxbits,            /* maximum number of bits per 4^d block */
+  uint* maxprec,            /* maximum precision (# bit planes coded) */
+  int* minexp               /* minimum base-2 exponent; error <= 2^minexp */
+);
+
+/* byte size of sequentially compressed stream (call after compression) */
+size_t                     /* actual number of bytes of compressed storage */
+zfp_stream_compressed_size(
+  const zfp_stream* stream /* compressed stream */
+);
+
+/* conservative estimate of compressed size in bytes */
+size_t                      /* maximum number of bytes of compressed storage */
+zfp_stream_maximum_size(
+  const zfp_stream* stream, /* compressed stream */
+  const zfp_field* field    /* array to compress */
+);
+
+/* high-level API: initialization of compressed stream parameters ---------- */
+
+/* associate bit stream with compressed stream */
+void
+zfp_stream_set_bit_stream(
+  zfp_stream* stream, /* compressed stream */
+  bitstream* bs       /* bit stream to read from and write to */
+);
+
+/* set size in compressed bits/scalar (fixed-rate mode) */
+double                /* actual rate in compressed bits/scalar */
+zfp_stream_set_rate(
+  zfp_stream* stream, /* compressed stream */
+  double rate,        /* desired rate in compressed bits/scalar */
+  zfp_type type,      /* scalar type to compress */
+  uint dims,          /* array dimensionality (1, 2, or 3) */
+  int wra             /* nonzero if write random access is needed */
+);
+
+/* set precision in uncompressed bits/scalar (fixed-precision mode) */
+uint                  /* actual precision */
+zfp_stream_set_precision(
+  zfp_stream* stream, /* compressed stream */
+  uint precision,     /* desired precision in uncompressed bits/scalar */
+  zfp_type type       /* scalar type to compress */
+);
+
+/* set accuracy as absolute error tolerance (fixed-accuracy mode) */
+double                /* actual error tolerance */
+zfp_stream_set_accuracy(
+  zfp_stream* stream, /* compressed stream */
+  double tolerance,   /* desired error tolerance */
+  zfp_type type       /* scalar type to compress */
+);
+
+/* set all compression parameters from compact representation (expert mode) */
+int                   /* nonzero upon success */
+zfp_stream_set_mode(
+  zfp_stream* stream, /* compressed stream */
+  uint64 mode         /* 12- or 64-bit encoding of parameters */
+);
+
+/* set all compression parameters (expert mode) */
+int                   /* nonzero upon success */
+zfp_stream_set_params(
+  zfp_stream* stream, /* compressed stream */
+  uint minbits,       /* minimum number of bits per 4^d block */
+  uint maxbits,       /* maximum number of bits per 4^d block */
+  uint maxprec,       /* maximum precision (# bit planes coded) */
+  int minexp          /* minimum base-2 exponent; error <= 2^minexp */
+);
+
+/* high-level API: uncompressed array construction/destruction ------------- */
+
+/* allocate field struct */
+zfp_field* /* pointer to default initialized field */
+zfp_field_alloc();
+
+/* allocate metadata for 1D field f[nx] */
+zfp_field*       /* allocated field metadata */
+zfp_field_1d(
+  void* pointer, /* pointer to uncompressed scalars (may be NULL) */
+  zfp_type type, /* scalar type */
+  uint nx        /* number of scalars */
+);
+
+/* allocate metadata for 2D field f[ny][nx] */
+zfp_field*       /* allocated field metadata */
+zfp_field_2d(
+  void* pointer, /* pointer to uncompressed scalars (may be NULL) */
+  zfp_type type, /* scalar type */
+  uint nx,       /* number of scalars in x dimension */
+  uint ny        /* number of scalars in y dimension */
+);
+
+/* allocate metadata for 3D field f[nz][ny][nx] */
+zfp_field*       /* allocated field metadata */
+zfp_field_3d(
+  void* pointer, /* pointer to uncompressed scalars (may be NULL) */
+  zfp_type type, /* scalar type */
+  uint nx,       /* number of scalars in x dimension */
+  uint ny,       /* number of scalars in y dimension */
+  uint nz        /* number of scalars in z dimension */
+);
+
+/* deallocate field metadata */
+void
+zfp_field_free(
+  zfp_field* field /* field metadata */
+);
+
+/* high-level API: uncompressed array inspectors --------------------------- */
+
+/* pointer to first element of field */
+void*                    /* array pointer */
+zfp_field_pointer(
+  const zfp_field* field /* field metadata */
+);
+
+/* field scalar type */
+zfp_type                 /* scalar type */
+zfp_field_type(
+  const zfp_field* field /* field metadata */
+);
+
+/* precision of field scalar type */
+uint                     /* scalar type precision in number of bits */
+zfp_field_precision(
+  const zfp_field* field /* field metadata */
+);
+
+/* field dimensionality (1, 2, or 3) */
+uint                     /* number of dimensions */
+zfp_field_dimensionality(
+  const zfp_field* field /* field metadata */
+);
+
+/* field size in number of array elements */
+size_t                    /* total number of scalars */
+zfp_field_size(
+  const zfp_field* field, /* field metadata */
+  uint* size              /* number of elements per dimension (may be NULL) */
+);
+
+/* field strides per dimension */
+int                       /* zero if array is contiguous */
+zfp_field_stride(
+  const zfp_field* field, /* field metadata */
+  int* stride             /* stride in elements per dimension (may be NULL) */
+);
+
+/* field scalar type and dimensions */
+uint64                   /* compact 52-bit encoding of metadata */
+zfp_field_metadata(
+  const zfp_field* field /* field metadata */
+);
+
+/* high-level API: uncompressed array specification ------------------------ */
+
+/* set pointer to first scalar in field */
+void
+zfp_field_set_pointer(
+  zfp_field* field, /* field metadata */
+  void* pointer     /* pointer to first scalar */
+);
+
+/* set field scalar type */
+zfp_type            /* actual scalar type */
+zfp_field_set_type(
+  zfp_field* field, /* field metadata */
+  zfp_type type     /* desired scalar type */
+);
+
+/* set 1D field size */
+void
+zfp_field_set_size_1d(
+  zfp_field* field, /* field metadata */
+  uint nx           /* number of scalars */
+);
+
+/* set 2D field size */
+void
+zfp_field_set_size_2d(
+  zfp_field* field, /* field metadata */
+  uint nx,          /* number of scalars in x dimension */
+  uint ny           /* number of scalars in y dimension */
+);
+
+/* set 3D field size */
+void
+zfp_field_set_size_3d(
+  zfp_field* field, /* field metadata */
+  uint nx,          /* number of scalars in x dimension */
+  uint ny,          /* number of scalars in y dimension */
+  uint nz           /* number of scalars in z dimension */
+);
+
+/* set 1D field stride in number of scalars */
+void
+zfp_field_set_stride_1d(
+  zfp_field* field, /* field metadata */
+  int sx            /* stride in number of scalars: &f[1] - &f[0] */
+);
+
+/* set 2D field strides in number of scalars */
+void
+zfp_field_set_stride_2d(
+  zfp_field* field, /* field metadata */
+  int sx,           /* stride in x dimension: &f[0][1] - &f[0][0] */
+  int sy            /* stride in y dimension: &f[1][0] - &f[0][0] */
+);
+
+/* set 3D field strides in number of scalars */
+void
+zfp_field_set_stride_3d(
+  zfp_field* field, /* field metadata */
+  int sx,           /* stride in x dimension: &f[0][0][1] - &f[0][0][0] */
+  int sy,           /* stride in y dimension: &f[0][1][0] - &f[0][0][0] */
+  int sz            /* stride in z dimension: &f[1][0][0] - &f[0][0][0] */
+);
+
+/* set field scalar type and dimensions */
+int                 /* nonzero upon success */
+zfp_field_set_metadata(
+  zfp_field* field, /* field metadata */
+  uint64 meta       /* compact 52-bit encoding of metadata */
+);
+
+/* high-level API: compression and decompression --------------------------- */
+
+/* compress entire field (nonzero return value upon success) */
+size_t                   /* actual number of bytes of compressed storage */
+zfp_compress(
+  zfp_stream* stream,    /* compressed stream */
+  const zfp_field* field /* field metadata */
+);
+
+/* decompress entire field (nonzero return value upon success) */
+int                   /* nonzero upon success */
+zfp_decompress(
+  zfp_stream* stream, /* compressed stream */
+  zfp_field* field    /* field metadata */
+);
+
+/* write compression parameters and field metadata (optional) */
+size_t                    /* number of bits written or zero upon failure */
+zfp_write_header(
+  zfp_stream* stream,     /* compressed stream */
+  const zfp_field* field, /* field metadata */
+  uint mask               /* information to write */
+);
+
+/* read compression parameters and field metadata when previously written */
+size_t                /* number of bits read or zero upon failure */
+zfp_read_header(
+  zfp_stream* stream, /* compressed stream */
+  zfp_field* field,   /* field metadata */
+  uint mask           /* information to read */
+);
+
+/* low-level API: stream manipulation -------------------------------------- */
+
+/* flush bit stream--must be called after last encode call or between seeks */
+void
+zfp_stream_flush(
+  zfp_stream* stream /* compressed bit stream */
+);
+
+/* align bit stream on next word boundary (decoding analogy to flush) */
+void
+zfp_stream_align(
+  zfp_stream* stream /* compressed bit stream */
+);
+
+/* rewind bit stream to beginning for compression or decompression */
+void
+zfp_stream_rewind(
+  zfp_stream* stream /* compressed bit stream */
+);
+
+/* low-level API: encoder -------------------------------------------------- */
+
+/*
+The functions below all compress either a complete contiguous d-dimensional
+block of 4^d scalars or a complete or partial block assembled from a strided
+array.  In the latter case, p points to the first scalar; (nx, ny, nz) specify
+the size of the block, with 1 <= nx, ny, nz <= 4; and (sx, sy, sz) specify the
+strides, i.e. the number of scalars to advance to get to the next scalar along
+each dimension.  The functions return the number of bits of compressed storage
+needed for the compressed block.
+*/
+
+/* encode 1D contiguous block of 4 values */
+uint zfp_encode_block_int32_1(zfp_stream* stream, const int32* block);
+uint zfp_encode_block_int64_1(zfp_stream* stream, const int64* block);
+uint zfp_encode_block_float_1(zfp_stream* stream, const float* block);
+uint zfp_encode_block_double_1(zfp_stream* stream, const double* block);
+
+/* encode 1D complete or partial block from strided array */
+uint zfp_encode_block_strided_float_1(zfp_stream* stream, const float* p, int sx);
+uint zfp_encode_block_strided_double_1(zfp_stream* stream, const double* p, int sx);
+uint zfp_encode_partial_block_strided_float_1(zfp_stream* stream, const float* p, uint nx, int sx);
+uint zfp_encode_partial_block_strided_double_1(zfp_stream* stream, const double* p, uint nx, int sx);
+
+/* encode 2D contiguous block of 4x4 values */
+uint zfp_encode_block_int32_2(zfp_stream* stream, const int32* block);
+uint zfp_encode_block_int64_2(zfp_stream* stream, const int64* block);
+uint zfp_encode_block_float_2(zfp_stream* stream, const float* block);
+uint zfp_encode_block_double_2(zfp_stream* stream, const double* block);
+
+/* encode 2D complete or partial block from strided array */
+uint zfp_encode_partial_block_strided_float_2(zfp_stream* stream, const float* p, uint nx, uint ny, int sx, int sy);
+uint zfp_encode_partial_block_strided_double_2(zfp_stream* stream, const double* p, uint nx, uint ny, int sx, int sy);
+uint zfp_encode_block_strided_float_2(zfp_stream* stream, const float* p, int sx, int sy);
+uint zfp_encode_block_strided_double_2(zfp_stream* stream, const double* p, int sx, int sy);
+
+/* encode 3D contiguous block of 4x4x4 values */
+uint zfp_encode_block_int32_3(zfp_stream* stream, const int32* block);
+uint zfp_encode_block_int64_3(zfp_stream* stream, const int64* block);
+uint zfp_encode_block_float_3(zfp_stream* stream, const float* block);
+uint zfp_encode_block_double_3(zfp_stream* stream, const double* block);
+
+/* encode 3D complete or partial block from strided array */
+uint zfp_encode_block_strided_float_3(zfp_stream* stream, const float* p, int sx, int sy, int sz);
+uint zfp_encode_block_strided_double_3(zfp_stream* stream, const double* p, int sx, int sy, int sz);
+uint zfp_encode_partial_block_strided_float_3(zfp_stream* stream, const float* p, uint nx, uint ny, uint nz, int sx, int sy, int sz);
+uint zfp_encode_partial_block_strided_double_3(zfp_stream* stream, const double* p, uint nx, uint ny, uint nz, int sx, int sy, int sz);
+
+/* low-level API: decoder -------------------------------------------------- */
+
+/*
+Each function below decompresses a single block and returns the number of bits
+of compressed storage consumed.  See corresponding encoder functions above for
+further details.
+*/
+
+/* decode 1D contiguous block of 4 values */
+uint zfp_decode_block_int32_1(zfp_stream* stream, int32* block);
+uint zfp_decode_block_int64_1(zfp_stream* stream, int64* block);
+uint zfp_decode_block_float_1(zfp_stream* stream, float* block);
+uint zfp_decode_block_double_1(zfp_stream* stream, double* block);
+
+/* decode 1D complete or partial block from strided array */
+uint zfp_decode_block_strided_float_1(zfp_stream* stream, float* p, int sx);
+uint zfp_decode_block_strided_double_1(zfp_stream* stream, double* p, int sx);
+uint zfp_decode_partial_block_strided_float_1(zfp_stream* stream, float* p, uint nx, int sx);
+uint zfp_decode_partial_block_strided_double_1(zfp_stream* stream, double* p, uint nx, int sx);
+
+/* decode 2D contiguous block of 4x4 values */
+uint zfp_decode_block_int32_2(zfp_stream* stream, int32* block);
+uint zfp_decode_block_int64_2(zfp_stream* stream, int64* block);
+uint zfp_decode_block_float_2(zfp_stream* stream, float* block);
+uint zfp_decode_block_double_2(zfp_stream* stream, double* block);
+
+/* decode 2D complete or partial block from strided array */
+uint zfp_decode_block_strided_float_2(zfp_stream* stream, float* p, int sx, int sy);
+uint zfp_decode_block_strided_double_2(zfp_stream* stream, double* p, int sx, int sy);
+uint zfp_decode_partial_block_strided_float_2(zfp_stream* stream, float* p, uint nx, uint ny, int sx, int sy);
+uint zfp_decode_partial_block_strided_double_2(zfp_stream* stream, double* p, uint nx, uint ny, int sx, int sy);
+
+/* decode 3D contiguous block of 4x4x4 values */
+uint zfp_decode_block_int32_3(zfp_stream* stream, int32* block);
+uint zfp_decode_block_int64_3(zfp_stream* stream, int64* block);
+uint zfp_decode_block_float_3(zfp_stream* stream, float* block);
+uint zfp_decode_block_double_3(zfp_stream* stream, double* block);
+
+/* decode 3D complete or partial block from strided array */
+uint zfp_decode_block_strided_float_3(zfp_stream* stream, float* p, int sx, int sy, int sz);
+uint zfp_decode_block_strided_double_3(zfp_stream* stream, double* p, int sx, int sy, int sz);
+uint zfp_decode_partial_block_strided_float_3(zfp_stream* stream, float* p, uint nx, uint ny, uint nz, int sx, int sy, int sz);
+uint zfp_decode_partial_block_strided_double_3(zfp_stream* stream, double* p, uint nx, uint ny, uint nz, int sx, int sy, int sz);
+
+/* low-level API: utility functions ---------------------------------------- */
+
+/* convert dims-dimensional contiguous block to 32-bit integer type */
+void zfp_promote_int8_to_int32(int32* oblock, const int8* iblock, uint dims);
+void zfp_promote_uint8_to_int32(int32* oblock, const uint8* iblock, uint dims);
+void zfp_promote_int16_to_int32(int32* oblock, const int16* iblock, uint dims);
+void zfp_promote_uint16_to_int32(int32* oblock, const uint16* iblock, uint dims);
+
+/* convert dims-dimensional contiguous block from 32-bit integer type */
+void zfp_demote_int32_to_int8(int8* oblock, const int32* iblock, uint dims);
+void zfp_demote_int32_to_uint8(uint8* oblock, const int32* iblock, uint dims);
+void zfp_demote_int32_to_int16(int16* oblock, const int32* iblock, uint dims);
+void zfp_demote_int32_to_uint16(uint16* oblock, const int32* iblock, uint dims);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/src/Makefile b/src/zfp/zfp-0.5.0/src/Makefile
new file mode 100644
index 0000000..b056161
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/Makefile
@@ -0,0 +1,21 @@
+include ../Config
+
+TARGETS = ../lib/libzfp.a ../lib/libzfp.so
+OBJECTS = bitstream.o decode1f.o decode1d.o encode1f.o encode1d.o decode2f.o decode2d.o encode2f.o encode2d.o decode3f.o decode3d.o encode3f.o encode3d.o zfp.o
+
+../lib/libzfp.a: $(OBJECTS)
+	rm -f $@
+	ar rc $@ $^
+
+../lib/libzfp.so: $(OBJECTS)
+	$(CC) $(CFLAGS) -shared $^ -o $@
+
+.c.o:
+	$(CC) $(CFLAGS) -c $<
+
+static: ../lib/libzfp.a
+
+shared: ../lib/libzfp.so
+
+clean:
+	rm -f $(TARGETS) $(OBJECTS)
diff --git a/src/zfp/zfp-0.5.0/src/bitstream.c b/src/zfp/zfp-0.5.0/src/bitstream.c
new file mode 100644
index 0000000..3a74766
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/bitstream.c
@@ -0,0 +1,4 @@
+#include "bitstream.h"
+#include "inline/bitstream.c"
+
+const size_t stream_word_bits = wsize;
diff --git a/src/zfp/zfp-0.5.0/src/block1.h b/src/zfp/zfp-0.5.0/src/block1.h
new file mode 100644
index 0000000..035d9c9
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/block1.h
@@ -0,0 +1 @@
+#define DIMS 1
diff --git a/src/zfp/zfp-0.5.0/src/block2.h b/src/zfp/zfp-0.5.0/src/block2.h
new file mode 100644
index 0000000..e87ab62
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/block2.h
@@ -0,0 +1 @@
+#define DIMS 2
diff --git a/src/zfp/zfp-0.5.0/src/block3.h b/src/zfp/zfp-0.5.0/src/block3.h
new file mode 100644
index 0000000..a683568
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/block3.h
@@ -0,0 +1 @@
+#define DIMS 3
diff --git a/src/zfp/zfp-0.5.0/src/decode1d.c b/src/zfp/zfp-0.5.0/src/decode1d.c
new file mode 100644
index 0000000..3cb3d1a
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/decode1d.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block1.h"
+#include "traitsd.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec1.c"
+#include "template/decode1.c"
+#include "template/decode.c"
diff --git a/src/zfp/zfp-0.5.0/src/decode1f.c b/src/zfp/zfp-0.5.0/src/decode1f.c
new file mode 100644
index 0000000..0d69982
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/decode1f.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block1.h"
+#include "traitsf.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec1.c"
+#include "template/decode1.c"
+#include "template/decode.c"
diff --git a/src/zfp/zfp-0.5.0/src/decode2d.c b/src/zfp/zfp-0.5.0/src/decode2d.c
new file mode 100644
index 0000000..358d256
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/decode2d.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block2.h"
+#include "traitsd.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec2.c"
+#include "template/decode2.c"
+#include "template/decode.c"
diff --git a/src/zfp/zfp-0.5.0/src/decode2f.c b/src/zfp/zfp-0.5.0/src/decode2f.c
new file mode 100644
index 0000000..1f45b1c
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/decode2f.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block2.h"
+#include "traitsf.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec2.c"
+#include "template/decode2.c"
+#include "template/decode.c"
diff --git a/src/zfp/zfp-0.5.0/src/decode3d.c b/src/zfp/zfp-0.5.0/src/decode3d.c
new file mode 100644
index 0000000..22df744
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/decode3d.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block3.h"
+#include "traitsd.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec3.c"
+#include "template/decode3.c"
+#include "template/decode.c"
diff --git a/src/zfp/zfp-0.5.0/src/decode3f.c b/src/zfp/zfp-0.5.0/src/decode3f.c
new file mode 100644
index 0000000..ca5030c
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/decode3f.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block3.h"
+#include "traitsf.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec3.c"
+#include "template/decode3.c"
+#include "template/decode.c"
diff --git a/src/zfp/zfp-0.5.0/src/encode1d.c b/src/zfp/zfp-0.5.0/src/encode1d.c
new file mode 100644
index 0000000..e4a356c
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/encode1d.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block1.h"
+#include "traitsd.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec1.c"
+#include "template/encode1.c"
+#include "template/encode.c"
diff --git a/src/zfp/zfp-0.5.0/src/encode1f.c b/src/zfp/zfp-0.5.0/src/encode1f.c
new file mode 100644
index 0000000..cd29b49
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/encode1f.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block1.h"
+#include "traitsf.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec1.c"
+#include "template/encode1.c"
+#include "template/encode.c"
diff --git a/src/zfp/zfp-0.5.0/src/encode2d.c b/src/zfp/zfp-0.5.0/src/encode2d.c
new file mode 100644
index 0000000..ccf6a72
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/encode2d.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block2.h"
+#include "traitsd.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec2.c"
+#include "template/encode2.c"
+#include "template/encode.c"
diff --git a/src/zfp/zfp-0.5.0/src/encode2f.c b/src/zfp/zfp-0.5.0/src/encode2f.c
new file mode 100644
index 0000000..3c95e36
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/encode2f.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block2.h"
+#include "traitsf.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec2.c"
+#include "template/encode2.c"
+#include "template/encode.c"
diff --git a/src/zfp/zfp-0.5.0/src/encode3d.c b/src/zfp/zfp-0.5.0/src/encode3d.c
new file mode 100644
index 0000000..a455cb0
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/encode3d.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block3.h"
+#include "traitsd.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec3.c"
+#include "template/encode3.c"
+#include "template/encode.c"
diff --git a/src/zfp/zfp-0.5.0/src/encode3f.c b/src/zfp/zfp-0.5.0/src/encode3f.c
new file mode 100644
index 0000000..c59ce91
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/encode3f.c
@@ -0,0 +1,10 @@
+#include "inline/inline.h"
+#include "zfp.h"
+#include "macros.h"
+#include "block3.h"
+#include "traitsf.h"
+#include "template/template.h"
+#include "template/codec.h"
+#include "template/codec3.c"
+#include "template/encode3.c"
+#include "template/encode.c"
diff --git a/src/zfp/zfp-0.5.0/src/inline/bitstream.c b/src/zfp/zfp-0.5.0/src/inline/bitstream.c
new file mode 100644
index 0000000..5d7846c
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/inline/bitstream.c
@@ -0,0 +1,410 @@
+/*
+High-speed in-memory bit stream I/O that supports reading and writing between
+0 and 64 bits at a time.  The implementation, which relies heavily on bit
+shifts, has been carefully written to ensure that all shifts are between
+zero and one less the width of the type being shifted to avoid undefined
+behavior.  This occasionally causes somewhat convoluted code.
+
+The following assumptions and restrictions apply:
+
+1. The user must allocate a memory buffer large enough to hold the bit stream,
+   whether for reading, writing, or both.  This buffer is associated with the
+   bit stream via stream_open(buffer, bytes), which allocates and returns a
+   pointer to an opaque bit stream struct.  Call stream_close(stream) to
+   deallocate this struct.
+
+2. The stream is either in a read or write state (or, initially, in both
+   states).  When done writing, call stream_flush(stream) before entering
+   read mode to ensure any buffered bits are output.  To enter read mode,
+   call stream_rewind(stream) or stream_rseek(stream, offset) to position
+   the stream at the beginning or at a particular bit offset.  Conversely,
+   stream_rewind(stream) or stream_wseek(stream, offset) positions the
+   stream for writing.  In read mode, the following functions may be called:
+
+     size_t stream_size(stream);
+     size_t stream_rtell(stream);
+     void stream_rewind(stream);
+     void stream_rseek(stream, offset);
+     void stream_skip(stream, uint n);
+     void stream_align(stream);
+     uint stream_read_bit(stream);
+     uint64 stream_read_bits(stream, n);
+
+   Each of these read calls has a corresponding write call:
+
+     size_t stream_size(stream);
+     size_t stream_wtell(stream);
+     void stream_rewind(stream);
+     void stream_wseek(stream, offset);
+     void stream_pad(stream, n);
+     void stream_flush(stream);
+     uint stream_write_bit(stream, bit);
+     uint64 stream_write_bits(stream, value, n);
+
+3. The stream buffer is an unsigned integer of a user-specified type given
+   by the BIT_STREAM_WORD_TYPE macro.  Bits are read and written in units of
+   this integer word type.  Supported types are 8, 16, 32, or 64 bits wide.
+   The bit width of the buffer is denoted by 'wsize' and can be accessed via
+   the global variable stream_word_bits.  A small wsize allows for fine
+   granularity reads and writes, and may be preferable when working with many
+   small blocks of data that require non-sequential access.  The default
+   maximum size of 64 bits ensures maximum speed.  Note that even when
+   wsize < 64, it is still possible to read and write up to 64 bits at a time
+   using stream_read_bits() and stream_write_bits().
+
+4. If BIT_STREAM_STRIDED is defined, words read from or written to the stream
+   may be accessed noncontiguously by setting a power-of-two block size (which
+   by default is one word) and a block stride (defaults to zero blocks).  The
+   word pointer is always incremented by one word each time a word is accessed.
+   Once advanced past a block boundary, the word pointer is also advanced by
+   the stride to the next block.  This feature may be used to store blocks of
+   data interleaved, e.g. for progressive coding or for noncontiguous parallel
+   access to the bit stream  Note that the block size is measured in words,
+   while the stride is measured in multiples of the block size.  Strided access
+   can have a significant performance penalty.
+
+5. Multiple bits are read and written in order of least to most significant
+   bit.  Thus, the statement
+
+       value = stream_write_bits(stream, value, n);
+
+   is essentially equivalent to (but faster than)
+
+       for (i = 0; i < n; i++, value >>= 1)
+         stream_write_bit(value & 1);
+
+   when 0 <= n <= 64.  The same holds for read calls, and thus
+
+       value = stream_read_bits(stream, n);
+
+   is essentially equivalent to
+
+       for (i = 0, value = 0; i < n; i++)
+         value += (uint64)stream_read_bit() << i;
+
+   Note that it is possible to write fewer bits than the argument 'value'
+   holds (possibly even zero bits), in which case any unwritten bits are
+   returned.
+
+6. Although the stream_wseek(stream, offset) call allows positioning the
+   stream for writing at any bit offset without any data loss (i.e. all
+   previously written bits preceding the offset remain valid), for efficiency
+   the stream_flush(stream) operation will zero all bits up to the next
+   multiple of wsize bits, thus overwriting bits that were previously stored
+   at that location.  Consequently, random write access is effectively
+   supported only at wsize granularity.  For sequential access, the largest
+   possible wsize is preferred due to higher speed.
+
+7. It is up to the user to adhere to these rules.  For performance reasons,
+   no error checking is done, and in particular buffer overruns are not
+   caught.
+*/
+
+#include <limits.h>
+#include <stdlib.h>
+
+#ifndef _inline
+  #define _inline
+#endif
+
+/* bit stream word/buffer type; granularity of stream I/O operations */
+#ifdef BIT_STREAM_WORD_TYPE
+  /* may be 8-, 16-, 32-, or 64-bit unsigned integer type */
+  typedef BIT_STREAM_WORD_TYPE word;
+#else
+  /* use maximum word size by default for highest speed */
+  typedef uint64 word;
+#endif
+
+/* number of bits in a buffered word */
+#define wsize ((uint)(CHAR_BIT * sizeof(word)))
+
+/* bit stream structure (opaque to caller) */
+struct bitstream {
+  uint bits;   /* number of buffered bits (0 <= bits < wsize) */
+  word buffer; /* buffer for incoming/outgoing bits (buffer < 2^bits) */
+  word* ptr;   /* pointer to next word to be read/written */
+  word* begin; /* beginning of stream */
+  word* end;   /* end of stream (currently unused) */
+#ifdef BIT_STREAM_STRIDED
+  uint mask;   /* one less the block size in number of words  */
+  int delta;   /* number of words between consecutive blocks */
+#endif
+};
+
+/* private functions ------------------------------------------------------- */
+
+/* read a single word from memory */
+static word
+stream_read_word(bitstream* s)
+{
+  word w = *s->ptr++;
+#ifdef BIT_STREAM_STRIDED
+  if (!((s->ptr - s->begin) & s->mask))
+    s->ptr += s->delta;
+#endif
+  return w;
+}
+
+/* write a single word to memory */
+static void
+stream_write_word(bitstream* s, word value)
+{
+  *s->ptr++ = value;
+#ifdef BIT_STREAM_STRIDED
+  if (!((s->ptr - s->begin) & s->mask))
+    s->ptr += s->delta;
+#endif
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* pointer to beginning of stream */
+_inline void*
+stream_data(const bitstream* s)
+{
+  return s->begin;
+}
+
+/* current byte size of stream (if flushed) */
+_inline size_t
+stream_size(const bitstream* s)
+{
+  return sizeof(word) * (s->ptr - s->begin);
+}
+
+/* byte capacity of stream */
+_inline size_t
+stream_capacity(const bitstream* s)
+{
+  return sizeof(word) * (s->end - s->begin);
+}
+
+/* number of blocks between consecutive stream blocks */
+_inline int
+stream_delta(const bitstream* s)
+{
+#ifdef BIT_STREAM_STRIDED
+  return s->delta / (s->mask + 1);
+#else
+  return 0;
+#endif
+}
+
+/* read single bit (0 or 1) */
+_inline uint
+stream_read_bit(bitstream* s)
+{
+  uint bit;
+  if (!s->bits) {
+    s->buffer = stream_read_word(s);
+    s->bits = wsize;
+  }
+  s->bits--;
+  bit = (uint)s->buffer & 1u;
+  s->buffer >>= 1;
+  return bit;
+}
+
+/* write single bit (must be 0 or 1) */
+_inline uint
+stream_write_bit(bitstream* s, uint bit)
+{
+  s->buffer += (word)bit << s->bits;
+  if (++s->bits == wsize) {
+    stream_write_word(s, s->buffer);
+    s->buffer = 0;
+    s->bits = 0;
+  }
+  return bit;
+}
+
+/* read 0 <= n <= 64 bits */
+_inline uint64
+stream_read_bits(bitstream* s, uint n)
+{
+  uint64 value = s->buffer;
+  if (s->bits < n) {
+    /* keep fetching wsize bits until enough bits are buffered */
+    do {
+      /* assert: 0 <= s->bits < n <= 64 */
+      s->buffer = stream_read_word(s);
+      value += (uint64)s->buffer << s->bits;
+      s->bits += wsize;
+    } while (sizeof(s->buffer) < sizeof(value) && s->bits < n);
+    /* assert: 1 <= n <= s->bits < n + wsize */
+    s->bits -= n;
+    if (!s->bits) {
+      /* value holds exactly n bits; no need for masking */
+      s->buffer = 0;
+    }
+    else {
+      /* assert: 1 <= s->bits < wsize */
+      s->buffer >>= wsize - s->bits;
+      /* assert: 1 <= n <= 64 */
+      value &= ((uint64)2 << (n - 1)) - 1;
+    }
+  }
+  else {
+    /* assert: 0 <= n <= s->bits < wsize <= 64 */
+    s->bits -= n;
+    s->buffer >>= n;
+    value &= ((uint64)1 << n) - 1;
+  }
+  return value;
+}
+
+/* write 0 <= n <= 64 low bits of value and return remaining bits */
+_inline uint64
+stream_write_bits(bitstream* s, uint64 value, uint n)
+{
+  /* append bit string to buffer */
+  s->buffer += value << s->bits;
+  s->bits += n;
+  /* is buffer full? */
+  if (s->bits >= wsize) {
+    /* 1 <= n <= 64; decrement n to ensure valid right shifts below */
+    value >>= 1;
+    n--;
+    /* assert: 0 <= n < 64; wsize <= s->bits <= wsize + n */
+    do {
+      /* output wsize bits while buffer is full */
+      s->bits -= wsize;
+      /* assert: 0 <= s->bits <= n */
+      stream_write_word(s, s->buffer);
+      /* assert: 0 <= n - s->bits < 64 */
+      s->buffer = value >> (n - s->bits);
+    } while (sizeof(s->buffer) < sizeof(value) && s->bits >= wsize);
+  }
+  /* assert: 0 <= s->bits < wsize */
+  s->buffer &= ((word)1 << s->bits) - 1;
+  /* assert: 0 <= n < 64 */
+  return value >> n;
+}
+
+/* return bit offset to next bit to be read */
+_inline size_t
+stream_rtell(const bitstream* s)
+{
+  return wsize * (s->ptr - s->begin) - s->bits;
+}
+
+/* return bit offset to next bit to be written */
+_inline size_t
+stream_wtell(const bitstream* s)
+{
+  return wsize * (s->ptr - s->begin) + s->bits;
+}
+
+/* position stream for reading or writing at beginning */
+_inline void
+stream_rewind(bitstream* s)
+{
+  s->ptr = s->begin;
+  s->buffer = 0;
+  s->bits = 0;
+}
+
+/* position stream for reading at given bit offset */
+_inline void
+stream_rseek(bitstream* s, size_t offset)
+{
+  uint n = offset % wsize;
+  s->ptr = s->begin + offset / wsize;
+  if (n) {
+    s->buffer = stream_read_word(s) >> n;
+    s->bits = wsize - n;
+  }
+  else {
+    s->buffer = 0;
+    s->bits = 0;
+  }
+}
+
+/* position stream for writing at given bit offset */
+_inline void
+stream_wseek(bitstream* s, size_t offset)
+{
+  uint n = offset % wsize;
+  s->ptr = s->begin + offset / wsize;
+  if (n) {
+    word buffer = *s->ptr;
+    buffer &= ((word)1 << n) - 1;
+    s->buffer = buffer;
+    s->bits = n;
+  }
+  else {
+    s->buffer = 0;
+    s->bits = 0;
+  }
+}
+
+/* skip over the next n bits (n >= 0) */
+_inline void
+stream_skip(bitstream* s, uint n)
+{
+  stream_rseek(s, stream_rtell(s) + n);
+}
+
+/* append n zero bits to stream (n >= 0) */
+_inline void
+stream_pad(bitstream* s, uint n)
+{
+  for (s->bits += n; s->bits >= wsize; s->bits -= wsize) {
+    stream_write_word(s, s->buffer);
+    s->buffer = 0;
+  }
+}
+
+/* align stream on next word boundary */
+_inline void
+stream_align(bitstream* s)
+{
+  if (s->bits)
+    stream_skip(s, s->bits);
+}
+
+/* write any remaining buffered bits and align stream on next word boundary */
+_inline void
+stream_flush(bitstream* s)
+{
+  if (s->bits)
+    stream_pad(s, wsize - s->bits);
+}
+
+#ifdef BIT_STREAM_STRIDED
+/* set block size in number of words and spacing in number of blocks */
+_inline int
+stream_set_stride(bitstream* s, uint block, int delta)
+{
+  /* ensure block size is a power of two */
+  if (block & (block - 1))
+    return 0;
+  s->mask = block - 1;
+  s->delta = delta * block;
+  return 1;
+}
+#endif
+
+/* allocate and initialize bit stream to user-allocated buffer */
+_inline bitstream*
+stream_open(void* buffer, size_t bytes)
+{
+  bitstream* s = malloc(sizeof(bitstream));
+  if (s) {
+    s->begin = buffer;
+    s->end = s->begin + bytes / sizeof(word);
+#ifdef BIT_STREAM_STRIDED
+    stream_set_stride(s, 0, 0);
+#endif
+    stream_rewind(s);
+  }
+  return s;
+}
+
+/* close and deallocate bit stream */
+_inline void
+stream_close(bitstream* s)
+{
+  free(s);
+}
diff --git a/src/zfp/zfp-0.5.0/src/inline/inline.h b/src/zfp/zfp-0.5.0/src/inline/inline.h
new file mode 100644
index 0000000..50a847f
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/inline/inline.h
@@ -0,0 +1,12 @@
+#ifndef INLINE_H
+#define INLINE_H
+
+#ifndef _inline
+  #if __STDC_VERSION__ >= 199901L
+    #define _inline static inline
+  #else
+    #define _inline static
+  #endif
+#endif
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/src/template/codec.h b/src/zfp/zfp-0.5.0/src/template/codec.h
new file mode 100644
index 0000000..e7149a9
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/codec.h
@@ -0,0 +1,3 @@
+#define PERM _t1(perm, DIMS)           /* coefficient order */
+#define BLOCK_SIZE (1 << (2 * DIMS))   /* values per block */
+#define EBIAS ((1 << (EBITS - 1)) - 1) /* exponent bias */
diff --git a/src/zfp/zfp-0.5.0/src/template/codec1.c b/src/zfp/zfp-0.5.0/src/template/codec1.c
new file mode 100644
index 0000000..f391832
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/codec1.c
@@ -0,0 +1,11 @@
+/* order coefficients by polynomial degree/frequency */
+_cache_align(static const uchar perm_1[4]) = {
+  0, 1, 2, 3
+};
+
+/* maximum number of bit planes to encode */
+static uint
+_t2(precision, Scalar, 1)(int maxexp, uint maxprec, int minexp)
+{
+  return MIN(maxprec, MAX(0, maxexp - minexp + 4));
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/codec2.c b/src/zfp/zfp-0.5.0/src/template/codec2.c
new file mode 100644
index 0000000..1215642
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/codec2.c
@@ -0,0 +1,39 @@
+#define index(i, j) ((i) + 4 * (j))
+
+/* order coefficients (i, j) by i + j, then i^2 + j^2 */
+_cache_align(static const uchar perm_2[16]) = {
+  index(0, 0), /*  0 : 0 */
+
+  index(1, 0), /*  1 : 1 */
+  index(0, 1), /*  2 : 1 */
+
+  index(1, 1), /*  3 : 2 */
+
+  index(2, 0), /*  4 : 2 */
+  index(0, 2), /*  5 : 2 */
+
+  index(2, 1), /*  6 : 3 */
+  index(1, 2), /*  7 : 3 */
+
+  index(3, 0), /*  8 : 3 */
+  index(0, 3), /*  9 : 3 */
+
+  index(2, 2), /* 10 : 4 */
+
+  index(3, 1), /* 11 : 4 */
+  index(1, 3), /* 12 : 4 */
+
+  index(3, 2), /* 13 : 5 */
+  index(2, 3), /* 14 : 5 */
+
+  index(3, 3), /* 15 : 6 */
+};
+
+#undef index
+
+/* maximum number of bit planes to encode */
+static uint
+_t2(precision, Scalar, 2)(int maxexp, uint maxprec, int minexp)
+{
+  return MIN(maxprec, MAX(0, maxexp - minexp + 6));
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/codec3.c b/src/zfp/zfp-0.5.0/src/template/codec3.c
new file mode 100644
index 0000000..72d9d9c
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/codec3.c
@@ -0,0 +1,97 @@
+#define index(i, j, k) ((i) + 4 * ((j) + 4 * (k)))
+
+/* order coefficients (i, j, k) by i + j + k, then i^2 + j^2 + k^2 */
+_cache_align(static const uchar perm_3[64]) = {
+  index(0, 0, 0), /*  0 : 0 */
+
+  index(1, 0, 0), /*  1 : 1 */
+  index(0, 1, 0), /*  2 : 1 */
+  index(0, 0, 1), /*  3 : 1 */
+
+  index(0, 1, 1), /*  4 : 2 */
+  index(1, 0, 1), /*  5 : 2 */
+  index(1, 1, 0), /*  6 : 2 */
+
+  index(2, 0, 0), /*  7 : 2 */
+  index(0, 2, 0), /*  8 : 2 */
+  index(0, 0, 2), /*  9 : 2 */
+
+  index(1, 1, 1), /* 10 : 3 */
+
+  index(2, 1, 0), /* 11 : 3 */
+  index(2, 0, 1), /* 12 : 3 */
+  index(0, 2, 1), /* 13 : 3 */
+  index(1, 2, 0), /* 14 : 3 */
+  index(1, 0, 2), /* 15 : 3 */
+  index(0, 1, 2), /* 16 : 3 */
+
+  index(3, 0, 0), /* 17 : 3 */
+  index(0, 3, 0), /* 18 : 3 */
+  index(0, 0, 3), /* 19 : 3 */
+
+  index(2, 1, 1), /* 20 : 4 */
+  index(1, 2, 1), /* 21 : 4 */
+  index(1, 1, 2), /* 22 : 4 */
+
+  index(0, 2, 2), /* 23 : 4 */
+  index(2, 0, 2), /* 24 : 4 */
+  index(2, 2, 0), /* 25 : 4 */
+
+  index(3, 1, 0), /* 26 : 4 */
+  index(3, 0, 1), /* 27 : 4 */
+  index(0, 3, 1), /* 28 : 4 */
+  index(1, 3, 0), /* 29 : 4 */
+  index(1, 0, 3), /* 30 : 4 */
+  index(0, 1, 3), /* 31 : 4 */
+
+  index(1, 2, 2), /* 32 : 5 */
+  index(2, 1, 2), /* 33 : 5 */
+  index(2, 2, 1), /* 34 : 5 */
+
+  index(3, 1, 1), /* 35 : 5 */
+  index(1, 3, 1), /* 36 : 5 */
+  index(1, 1, 3), /* 37 : 5 */
+
+  index(3, 2, 0), /* 38 : 5 */
+  index(3, 0, 2), /* 39 : 5 */
+  index(0, 3, 2), /* 40 : 5 */
+  index(2, 3, 0), /* 41 : 5 */
+  index(2, 0, 3), /* 42 : 5 */
+  index(0, 2, 3), /* 43 : 5 */
+
+  index(2, 2, 2), /* 44 : 6 */
+
+  index(3, 2, 1), /* 45 : 6 */
+  index(3, 1, 2), /* 46 : 6 */
+  index(1, 3, 2), /* 47 : 6 */
+  index(2, 3, 1), /* 48 : 6 */
+  index(2, 1, 3), /* 49 : 6 */
+  index(1, 2, 3), /* 50 : 6 */
+
+  index(0, 3, 3), /* 51 : 6 */
+  index(3, 0, 3), /* 52 : 6 */
+  index(3, 3, 0), /* 53 : 6 */
+
+  index(3, 2, 2), /* 54 : 7 */
+  index(2, 3, 2), /* 55 : 7 */
+  index(2, 2, 3), /* 56 : 7 */
+
+  index(1, 3, 3), /* 57 : 7 */
+  index(3, 1, 3), /* 58 : 7 */
+  index(3, 3, 1), /* 59 : 7 */
+
+  index(2, 3, 3), /* 60 : 8 */
+  index(3, 2, 3), /* 61 : 8 */
+  index(3, 3, 2), /* 62 : 8 */
+
+  index(3, 3, 3), /* 63 : 9 */
+};
+
+#undef index
+
+/* maximum number of bit planes to encode */
+static uint
+_t2(precision, Scalar, 3)(int maxexp, uint maxprec, int minexp)
+{
+  return MIN(maxprec, MAX(0, maxexp - minexp + 8));
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/compress.c b/src/zfp/zfp-0.5.0/src/template/compress.c
new file mode 100644
index 0000000..af89ef0
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/compress.c
@@ -0,0 +1,104 @@
+/* compress 1d contiguous array */
+static void
+_t2(compress, Scalar, 1)(zfp_stream* stream, const zfp_field* field)
+{
+  const Scalar* data = field->data;
+  uint nx = field->nx;
+  uint mx = nx & ~3u;
+  uint x;
+
+  for (x = 0; x < mx; x += 4, data += 4)
+    _t2(zfp_encode_block, Scalar, 1)(stream, data);
+  if (x < nx)
+    _t2(zfp_encode_partial_block_strided, Scalar, 1)(stream, data, nx - x, 1);
+}
+
+/* compress 1d strided array */
+static void
+_t2(compress_strided, Scalar, 1)(zfp_stream* stream, const zfp_field* field)
+{
+  const Scalar* data = field->data;
+  uint nx = field->nx;
+  uint mx = nx & ~3u;
+  int sx = field->sx ? field->sx : 1;
+  uint x;
+
+  for (x = 0; x < mx; x += 4, data += 4 * sx)
+    _t2(zfp_encode_block_strided, Scalar, 1)(stream, data, sx);
+  if (x < nx)
+    _t2(zfp_encode_partial_block_strided, Scalar, 1)(stream, data, nx - x, sx);
+}
+
+/* compress 2d strided array */
+static void
+_t2(compress_strided, Scalar, 2)(zfp_stream* stream, const zfp_field* field)
+{
+  const Scalar* data = field->data;
+  uint nx = field->nx;
+  uint ny = field->ny;
+  uint mx = nx & ~3u;
+  uint my = ny & ~3u;
+  int sx = field->sx ? field->sx : 1;
+  int sy = field->sy ? field->sy : nx;
+  uint x, y;
+
+  for (y = 0; y < my; y += 4, data += 4 * sy - mx * sx) {
+    for (x = 0; x < mx; x += 4, data += 4 * sx)
+      _t2(zfp_encode_block_strided, Scalar, 2)(stream, data, sx, sy);
+    if (x < nx)
+      _t2(zfp_encode_partial_block_strided, Scalar, 2)(stream, data, nx - x, 4, sx, sy);
+  }
+  if (y < ny) {
+    for (x = 0; x < mx; x += 4, data += 4 * sx)
+      _t2(zfp_encode_partial_block_strided, Scalar, 2)(stream, data, 4, ny - y, sx, sy);
+    if (x < nx)
+      _t2(zfp_encode_partial_block_strided, Scalar, 2)(stream, data, nx - x, ny - y, sx, sy);
+  }
+}
+
+/* compress 3d strided array */
+static void
+_t2(compress_strided, Scalar, 3)(zfp_stream* stream, const zfp_field* field)
+{
+  const Scalar* data = field->data;
+  uint nx = field->nx;
+  uint ny = field->ny;
+  uint nz = field->nz;
+  uint mx = nx & ~3u;
+  uint my = ny & ~3u;
+  uint mz = nz & ~3u;
+  int sx = field->sx ? field->sx : 1;
+  int sy = field->sy ? field->sy : nx;
+  int sz = field->sz ? field->sz : nx * ny;
+  uint x, y, z;
+
+  for (z = 0; z < mz; z += 4, data += 4 * sz - my * sy) {
+    for (y = 0; y < my; y += 4, data += 4 * sy - mx * sx) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_encode_block_strided, Scalar, 3)(stream, data, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, nx - x, 4, 4, sx, sy, sz);
+    }
+    if (y < ny) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, 4, ny - y, 4, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, nx - x, ny - y, 4, sx, sy, sz);
+      data -= mx * sx;
+    }
+  }
+  if (z < nz) {
+    for (y = 0; y < my; y += 4, data += 4 * sy - mx * sx) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, 4, 4, nz - z, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, nx - x, 4, nz - z, sx, sy, sz);
+    }
+    if (y < ny) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, 4, ny - y, nz - z, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_encode_partial_block_strided, Scalar, 3)(stream, data, nx - x, ny - y, nz - z, sx, sy, sz);
+    }
+  }
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/decode.c b/src/zfp/zfp-0.5.0/src/template/decode.c
new file mode 100644
index 0000000..f7b6a14
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/decode.c
@@ -0,0 +1,165 @@
+#include <limits.h>
+#include <math.h>
+#include "../inline/inline.h"
+#include "../inline/bitstream.c"
+
+/* private functions ------------------------------------------------------- */
+
+/* map integer x relative to exponent e to floating-point number */
+static Scalar
+_t1(dequantize, Scalar)(Int x, int e)
+{
+  return LDEXP(x, e - (CHAR_BIT * (int)sizeof(Scalar) - 2));
+}
+
+/* inverse block-floating-point transform from signed integers */
+static void
+_t1(inv_cast, Scalar)(const Int* iblock, Scalar* fblock, uint n, int emax)
+{
+  /* compute power-of-two scale factor s */
+  Scalar s = _t1(dequantize, Scalar)(1, emax);
+  /* compute p-bit float x = s*y where |y| <= 2^(p-2) - 1 */
+  do
+    *fblock++ = (Scalar)(s * *iblock++);
+  while (--n);
+}
+
+/* inverse lifting transform of 4-vector */
+static void
+_t1(inv_lift, Int)(Int* p, uint s)
+{
+  Int x, y, z, w;
+  x = *p; p += s;
+  y = *p; p += s;
+  z = *p; p += s;
+  w = *p; p += s;
+
+  /*
+  ** non-orthogonal transform
+  **       ( 4  6 -4 -1) (x)
+  ** 1/4 * ( 4  2  4  5) (y)
+  **       ( 4 -2  4 -5) (z)
+  **       ( 4 -6 -4  1) (w)
+  */
+  y += w >> 1; w -= y >> 1;
+  y += w; w <<= 1; w -= y;
+  z += x; x <<= 1; x -= z;
+  y += z; z <<= 1; z -= y;
+  w += x; x <<= 1; x -= w;
+
+  p -= s; *p = w;
+  p -= s; *p = z;
+  p -= s; *p = y;
+  p -= s; *p = x;
+}
+
+/* map two's complement signed integer to negabinary unsigned integer */
+static Int
+_t1(uint2int, UInt)(UInt x)
+{
+  return (Int)((x ^ NBMASK) - NBMASK);
+}
+
+/* reorder unsigned coefficients and convert to signed integer */
+static void
+_t1(inv_order, Int)(const UInt* ublock, Int* iblock, const uchar* perm, uint n)
+{
+  do
+    iblock[*perm++] = _t1(uint2int, UInt)(*ublock++);
+  while (--n);
+}
+
+/* decompress sequence of size unsigned integers */
+static uint
+_t1(decode_ints, UInt)(bitstream* _restrict stream, uint maxbits, uint maxprec, UInt* _restrict data, uint size)
+{
+  /* make a copy of bit stream to avoid aliasing */
+  bitstream s = *stream;
+  uint intprec = CHAR_BIT * (uint)sizeof(UInt);
+  uint kmin = intprec > maxprec ? intprec - maxprec : 0;
+  uint bits = maxbits;
+  uint i, k, m, n;
+  uint64 x;
+
+  /* initialize data array to all zeros */
+  for (i = 0; i < size; i++)
+    data[i] = 0;
+
+  /* decode one bit plane at a time from MSB to LSB */
+  for (k = intprec, n = 0; bits && k-- > kmin;) {
+    /* decode first n bits of bit plane #k */
+    m = MIN(n, bits);
+    bits -= m;
+    x = stream_read_bits(&s, m);
+    /* unary run-length decode remainder of bit plane */
+    for (; n < size && bits && (bits--, stream_read_bit(&s)); x += (uint64)1 << n++)
+      for (; n < size - 1 && bits && (bits--, !stream_read_bit(&s)); n++)
+        ;
+    /* deposit bit plane from x */
+    for (i = 0; x; i++, x >>= 1)
+      data[i] += (UInt)(x & 1u) << k;
+  }
+
+  *stream = s;
+  return maxbits - bits;
+}
+
+/* decode block of integers */
+uint
+_t2(decode_block, Int, DIMS)(bitstream* stream, int minbits, int maxbits, int maxprec, Int* iblock)
+{
+  int bits;
+  _cache_align(UInt ublock[BLOCK_SIZE]);
+  /* decode integer coefficients */
+  bits = _t1(decode_ints, UInt)(stream, maxbits, maxprec, ublock, BLOCK_SIZE);
+  /* read at least minbits bits */
+  if (bits < minbits) {
+    stream_skip(stream, minbits - bits);
+    bits = minbits;
+  }
+  /* reorder unsigned coefficients and convert to signed integer */
+  _t1(inv_order, Int)(ublock, iblock, PERM, BLOCK_SIZE);
+  /* perform decorrelating transform */
+  _t2(inv_xform, Int, DIMS)(iblock);
+  return bits;
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* decode contiguous floating-point block */
+uint
+_t2(zfp_decode_block, Int, DIMS)(zfp_stream* zfp, Int* iblock)
+{
+  return _t2(decode_block, Int, DIMS)(zfp->stream, zfp->minbits, zfp->maxbits, zfp->maxprec, iblock);
+}
+
+/* decode contiguous floating-point block */
+uint
+_t2(zfp_decode_block, Scalar, DIMS)(zfp_stream* zfp, Scalar* fblock)
+{
+  /* test if block has nonzero values */
+  if (stream_read_bit(zfp->stream)) {
+    _cache_align(Int iblock[BLOCK_SIZE]);
+    /* decode common exponent */
+    uint ebits = EBITS + 1;
+    int emax = stream_read_bits(zfp->stream, ebits - 1) - EBIAS;
+    int maxprec = _t2(precision, Scalar, DIMS)(emax, zfp->maxprec, zfp->minexp);
+    /* decode integer block */
+    uint bits = _t2(decode_block, Int, DIMS)(zfp->stream, zfp->minbits - ebits, zfp->maxbits - ebits, maxprec, iblock);
+    /* perform inverse block-floating-point transform */
+    _t1(inv_cast, Scalar)(iblock, fblock, BLOCK_SIZE, emax);
+    return ebits + bits;
+  }
+  else {
+    /* set all values to zero */
+    uint i;
+    for (i = 0; i < BLOCK_SIZE; i++)
+      *fblock++ = 0;
+    if (zfp->minbits > 1) {
+      stream_skip(zfp->stream, zfp->minbits - 1);
+      return zfp->minbits;
+    }
+    else
+      return 1;
+  }
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/decode1.c b/src/zfp/zfp-0.5.0/src/template/decode1.c
new file mode 100644
index 0000000..c6c6cb0
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/decode1.c
@@ -0,0 +1,55 @@
+static void _t1(inv_lift, Int)(Int* p, uint s);
+
+/* private functions ------------------------------------------------------- */
+
+/* scatter 4-value block to strided array */
+static void
+_t2(scatter, Scalar, 1)(const Scalar* q, Scalar* p, int sx)
+{
+  uint x;
+  for (x = 0; x < 4; x++, p += sx)
+    *p = *q++;
+}
+
+/* scatter nx-value block to strided array */
+static void
+_t2(scatter_partial, Scalar, 1)(const Scalar* q, Scalar* p, uint nx, int sx)
+{
+  uint x;
+  for (x = 0; x < nx; x++, p += sx)
+   *p = *q++;
+}
+
+/* inverse decorrelating 1D transform */
+static void
+_t2(inv_xform, Int, 1)(Int* p)
+{
+  /* transform along x */
+  _t1(inv_lift, Int)(p, 1);
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* decode 4-value floating-point block and store at p using stride sx */
+uint
+_t2(zfp_decode_block_strided, Scalar, 1)(zfp_stream* stream, Scalar* p, int sx)
+{
+  /* decode contiguous block */
+  _cache_align(Scalar fblock[4]);
+  uint bits = _t2(zfp_decode_block, Scalar, 1)(stream, fblock);
+  /* scatter block to strided array */
+  _t2(scatter, Scalar, 1)(fblock, p, sx);
+  return bits;
+}
+
+/* decode nx-value floating-point block and store at p using stride sx */
+uint
+_t2(zfp_decode_partial_block_strided, Scalar, 1)(zfp_stream* stream, Scalar* p, uint nx, int sx)
+{
+  /* decode contiguous block */
+  _cache_align(Scalar fblock[4]);
+  uint bits = _t2(zfp_decode_block, Scalar, 1)(stream, fblock);
+  /* scatter block to strided array */
+  _t2(scatter_partial, Scalar, 1)(fblock, p, nx, sx);
+  return bits;
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/decode2.c b/src/zfp/zfp-0.5.0/src/template/decode2.c
new file mode 100644
index 0000000..34626dd
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/decode2.c
@@ -0,0 +1,62 @@
+static void _t1(inv_lift, Int)(Int* p, uint s);
+
+/* private functions ------------------------------------------------------- */
+
+/* scatter 4*4 block to strided array */
+static void
+_t2(scatter, Scalar, 2)(const Scalar* q, Scalar* p, int sx, int sy)
+{
+  uint x, y;
+  for (y = 0; y < 4; y++, p += sy - 4 * sx)
+    for (x = 0; x < 4; x++, p += sx)
+      *p = *q++;
+}
+
+/* scatter nx*ny block to strided array */
+static void
+_t2(scatter_partial, Scalar, 2)(const Scalar* q, Scalar* p, uint nx, uint ny, int sx, int sy)
+{
+  uint x, y;
+  for (y = 0; y < ny; y++, p += sy - nx * sx, q += 4 - nx)
+    for (x = 0; x < nx; x++, p += sx, q++)
+      *p = *q;
+}
+
+/* inverse decorrelating 2D transform */
+static void
+_t2(inv_xform, Int, 2)(Int* p)
+{
+  uint x, y;
+  /* transform along y */
+  for (x = 0; x < 4; x++)
+    _t1(inv_lift, Int)(p + 1 * x, 4);
+  /* transform along x */
+  for (y = 0; y < 4; y++)
+    _t1(inv_lift, Int)(p + 4 * y, 1);
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* decode 4*4 floating-point block and store at p using strides (sx, sy) */
+uint
+_t2(zfp_decode_block_strided, Scalar, 2)(zfp_stream* stream, Scalar* p, int sx, int sy)
+{
+  /* decode contiguous block */
+  _cache_align(Scalar fblock[16]);
+  uint bits = _t2(zfp_decode_block, Scalar, 2)(stream, fblock);
+  /* scatter block to strided array */
+  _t2(scatter, Scalar, 2)(fblock, p, sx, sy);
+  return bits;
+}
+
+/* decode nx*ny floating-point block and store at p using strides (sx, sy) */
+uint
+_t2(zfp_decode_partial_block_strided, Scalar, 2)(zfp_stream* stream, Scalar* p, uint nx, uint ny, int sx, int sy)
+{
+  /* decode contiguous block */
+  _cache_align(Scalar fblock[16]);
+  uint bits = _t2(zfp_decode_block, Scalar, 2)(stream, fblock);
+  /* scatter block to strided array */
+  _t2(scatter_partial, Scalar, 2)(fblock, p, nx, ny, sx, sy);
+  return bits;
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/decode3.c b/src/zfp/zfp-0.5.0/src/template/decode3.c
new file mode 100644
index 0000000..b69fb2d
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/decode3.c
@@ -0,0 +1,70 @@
+static void _t1(inv_lift, Int)(Int* p, uint s);
+
+/* private functions ------------------------------------------------------- */
+
+/* scatter 4*4*4 block to strided array */
+static void
+_t2(scatter, Scalar, 3)(const Scalar* q, Scalar* p, int sx, int sy, int sz)
+{
+  uint x, y, z;
+  for (z = 0; z < 4; z++, p += sz - 4 * sy)
+    for (y = 0; y < 4; y++, p += sy - 4 * sx)
+      for (x = 0; x < 4; x++, p += sx)
+        *p = *q++;
+}
+
+/* scatter nx*ny*nz block to strided array */
+static void
+_t2(scatter_partial, Scalar, 3)(const Scalar* q, Scalar* p, uint nx, uint ny, uint nz, int sx, int sy, int sz)
+{
+  uint x, y, z;
+  for (z = 0; z < nz; z++, p += sz - ny * sy, q += 4 * (4 - ny))
+    for (y = 0; y < ny; y++, p += sy - nx * sx, q += 4 - nx)
+      for (x = 0; x < nx; x++, p += sx, q++)
+        *p = *q;
+}
+
+/* inverse decorrelating 3D transform */
+static void
+_t2(inv_xform, Int, 3)(Int* p)
+{
+  uint x, y, z;
+  /* transform along z */
+  for (y = 0; y < 4; y++)
+    for (x = 0; x < 4; x++)
+      _t1(inv_lift, Int)(p + 1 * x + 4 * y, 16);
+  /* transform along y */
+  for (x = 0; x < 4; x++)
+    for (z = 0; z < 4; z++)
+      _t1(inv_lift, Int)(p + 16 * z + 1 * x, 4);
+  /* transform along x */
+  for (z = 0; z < 4; z++)
+    for (y = 0; y < 4; y++)
+      _t1(inv_lift, Int)(p + 4 * y + 16 * z, 1);
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* decode 4*4*4 floating-point block and store at p using strides (sx, sy, sz) */
+uint
+_t2(zfp_decode_block_strided, Scalar, 3)(zfp_stream* stream, Scalar* p, int sx, int sy, int sz)
+{
+  /* decode contiguous block */
+  _cache_align(Scalar fblock[64]);
+  uint bits = _t2(zfp_decode_block, Scalar, 3)(stream, fblock);
+  /* scatter block to strided array */
+  _t2(scatter, Scalar, 3)(fblock, p, sx, sy, sz);
+  return bits;
+}
+
+/* decode nx*ny*nz floating-point block and store at p using strides (sx, sy, sz) */
+uint
+_t2(zfp_decode_partial_block_strided, Scalar, 3)(zfp_stream* stream, Scalar* p, uint nx, uint ny, uint nz, int sx, int sy, int sz)
+{
+  /* decode contiguous block */
+  _cache_align(Scalar fblock[64]);
+  uint bits = _t2(zfp_decode_block, Scalar, 3)(stream, fblock);
+  /* scatter block to strided array */
+  _t2(scatter_partial, Scalar, 3)(fblock, p, nx, ny, nz, sx, sy, sz);
+  return bits;
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/decompress.c b/src/zfp/zfp-0.5.0/src/template/decompress.c
new file mode 100644
index 0000000..b3702d3
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/decompress.c
@@ -0,0 +1,104 @@
+/* decompress 1d contiguous array */
+static void
+_t2(decompress, Scalar, 1)(zfp_stream* stream, zfp_field* field)
+{
+  Scalar* data = field->data;
+  uint nx = field->nx;
+  uint mx = nx & ~3u;
+  uint x;
+
+  for (x = 0; x < mx; x += 4, data += 4)
+    _t2(zfp_decode_block, Scalar, 1)(stream, data);
+  if (x < nx)
+    _t2(zfp_decode_partial_block_strided, Scalar, 1)(stream, data, nx - x, 1);
+}
+
+/* decompress 1d strided array */
+static void
+_t2(decompress_strided, Scalar, 1)(zfp_stream* stream, zfp_field* field)
+{
+  Scalar* data = field->data;
+  uint nx = field->nx;
+  uint mx = nx & ~3u;
+  int sx = field->sx;
+  uint x;
+
+  for (x = 0; x < mx; x += 4, data += 4 * sx)
+    _t2(zfp_decode_block_strided, Scalar, 1)(stream, data, sx);
+  if (x < nx)
+    _t2(zfp_decode_partial_block_strided, Scalar, 1)(stream, data, nx - x, sx);
+}
+
+/* decompress 2d strided array */
+static void
+_t2(decompress_strided, Scalar, 2)(zfp_stream* stream, zfp_field* field)
+{
+  Scalar* data = field->data;
+  uint nx = field->nx;
+  uint ny = field->ny;
+  uint mx = nx & ~3u;
+  uint my = ny & ~3u;
+  int sx = field->sx ? field->sx : 1;
+  int sy = field->sy ? field->sy : nx;
+  uint x, y;
+
+  for (y = 0; y < my; y += 4, data += 4 * sy - mx * sx) {
+    for (x = 0; x < mx; x += 4, data += 4 * sx)
+      _t2(zfp_decode_block_strided, Scalar, 2)(stream, data, sx, sy);
+    if (x < nx)
+      _t2(zfp_decode_partial_block_strided, Scalar, 2)(stream, data, nx - x, 4, sx, sy);
+  }
+  if (y < ny) {
+    for (x = 0; x < mx; x += 4, data += 4 * sx)
+      _t2(zfp_decode_partial_block_strided, Scalar, 2)(stream, data, 4, ny - y, sx, sy);
+    if (x < nx)
+      _t2(zfp_decode_partial_block_strided, Scalar, 2)(stream, data, nx - x, ny - y, sx, sy);
+  }
+}
+
+/* decompress 3d strided array */
+static void
+_t2(decompress_strided, Scalar, 3)(zfp_stream* stream, zfp_field* field)
+{
+  Scalar* data = field->data;
+  uint nx = field->nx;
+  uint ny = field->ny;
+  uint nz = field->nz;
+  uint mx = nx & ~3u;
+  uint my = ny & ~3u;
+  uint mz = nz & ~3u;
+  int sx = field->sx ? field->sx : 1;
+  int sy = field->sy ? field->sy : nx;
+  int sz = field->sz ? field->sz : nx * ny;
+  uint x, y, z;
+
+  for (z = 0; z < mz; z += 4, data += 4 * sz - my * sy) {
+    for (y = 0; y < my; y += 4, data += 4 * sy - mx * sx) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_decode_block_strided, Scalar, 3)(stream, data, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, nx - x, 4, 4, sx, sy, sz);
+    }
+    if (y < ny) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, 4, ny - y, 4, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, nx - x, ny - y, 4, sx, sy, sz);
+      data -= mx * sx;
+    }
+  }
+  if (z < nz) {
+    for (y = 0; y < my; y += 4, data += 4 * sy - mx * sx) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, 4, 4, nz - z, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, nx - x, 4, nz - z, sx, sy, sz);
+    }
+    if (y < ny) {
+      for (x = 0; x < mx; x += 4, data += 4 * sx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, 4, ny - y, nz - z, sx, sy, sz);
+      if (x < nx)
+        _t2(zfp_decode_partial_block_strided, Scalar, 3)(stream, data, nx - x, ny - y, nz - z, sx, sy, sz);
+    }
+  }
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/encode.c b/src/zfp/zfp-0.5.0/src/template/encode.c
new file mode 100644
index 0000000..0221254
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/encode.c
@@ -0,0 +1,216 @@
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include "../inline/inline.h"
+#include "../inline/bitstream.c"
+
+/* private functions ------------------------------------------------------- */
+
+/* return normalized floating-point exponent for x >= 0 */
+static int
+_t1(exponent, Scalar)(Scalar x)
+{
+  if (x > 0) {
+    int e;
+    FREXP(x, &e);
+    /* clamp exponent in case x is denormal */
+    return MAX(e, 1 - EBIAS);
+  }
+  return -EBIAS;
+}
+
+/* compute maximum exponent in block of n values */
+static int
+_t1(exponent_block, Scalar)(const Scalar* p, uint n)
+{
+  Scalar max = 0;
+  do {
+    Scalar f = FABS(*p++);
+    if (max < f)
+      max = f;
+  } while (--n);
+  return _t1(exponent, Scalar)(max);
+}
+
+/* map floating-point number x to integer relative to exponent e */
+static Scalar
+_t1(quantize, Scalar)(Scalar x, int e)
+{
+  return LDEXP(x, (CHAR_BIT * (int)sizeof(Scalar) - 2) - e);
+}
+
+/* forward block-floating-point transform to signed integers */
+static void
+_t1(fwd_cast, Scalar)(Int* iblock, const Scalar* fblock, uint n, int emax)
+{
+  /* compute power-of-two scale factor s */
+  Scalar s = _t1(quantize, Scalar)(1, emax);
+  /* compute p-bit int y = s*x where x is floating and |y| <= 2^(p-2) - 1 */
+  do
+    *iblock++ = (Int)(s * *fblock++);
+  while (--n);
+}
+
+/* pad partial block of width n <= 4 and stride s */
+static void
+_t1(pad_block, Scalar)(Scalar* p, uint n, uint s)
+{
+  switch (n) {
+    case 0:
+      p[0 * s] = 0;
+      /* FALLTHROUGH */
+    case 1:
+      p[1 * s] = p[0 * s];
+      /* FALLTHROUGH */
+    case 2:
+      p[2 * s] = p[1 * s];
+      /* FALLTHROUGH */
+    case 3:
+      p[3 * s] = p[0 * s];
+      /* FALLTHROUGH */
+    default:
+      break;
+  }
+}
+
+/* forward lifting transform of 4-vector */
+static void
+_t1(fwd_lift, Int)(Int* p, uint s)
+{
+  Int x, y, z, w;
+  x = *p; p += s;
+  y = *p; p += s;
+  z = *p; p += s;
+  w = *p; p += s;
+
+  /*
+  ** non-orthogonal transform
+  **        ( 4  4  4  4) (x)
+  ** 1/16 * ( 5  1 -1 -5) (y)
+  **        (-4  4  4 -4) (z)
+  **        (-2  6 -6  2) (w)
+  */
+  x += w; x >>= 1; w -= x;
+  z += y; z >>= 1; y -= z;
+  x += z; x >>= 1; z -= x;
+  w += y; w >>= 1; y -= w;
+  w += y >> 1; y -= w >> 1;
+
+  p -= s; *p = w;
+  p -= s; *p = z;
+  p -= s; *p = y;
+  p -= s; *p = x;
+}
+
+/* map two's complement signed integer to negabinary unsigned integer */
+static UInt
+_t1(int2uint, Int)(Int x)
+{
+  return ((UInt)x + NBMASK) ^ NBMASK;
+}
+
+/* reorder signed coefficients and convert to unsigned integer */
+static void
+_t1(fwd_order, Int)(UInt* ublock, const Int* iblock, const uchar* perm, uint n)
+{
+  do
+    *ublock++ = _t1(int2uint, Int)(iblock[*perm++]);
+  while (--n);
+}
+
+/* compress sequence of size unsigned integers */
+static uint
+_t1(encode_ints, UInt)(bitstream* _restrict stream, uint maxbits, uint maxprec, const UInt* _restrict data, uint size)
+{
+  /* make a copy of bit stream to avoid aliasing */
+  bitstream s = *stream;
+  uint intprec = CHAR_BIT * (uint)sizeof(UInt);
+  uint kmin = intprec > maxprec ? intprec - maxprec : 0;
+  uint bits = maxbits;
+  uint i, k, m, n;
+  uint64 x;
+
+  /* encode one bit plane at a time from MSB to LSB */
+  for (k = intprec, n = 0; bits && k-- > kmin;) {
+    /* step 1: extract bit plane #k to x */
+    x = 0;
+    for (i = 0; i < size; i++)
+      x += (uint64)((data[i] >> k) & 1u) << i;
+    /* step 2: encode first n bits of bit plane */
+    m = MIN(n, bits);
+    bits -= m;
+    x = stream_write_bits(&s, x, m);
+    /* step 3: unary run-length encode remainder of bit plane */
+    for (; n < size && bits && (bits--, stream_write_bit(&s, !!x)); x >>= 1, n++)
+      for (; n < size - 1 && bits && (bits--, !stream_write_bit(&s, x & 1u)); x >>= 1, n++)
+        ;
+  }
+
+  *stream = s;
+  return maxbits - bits;
+}
+
+/* encode block of integers */
+static uint
+_t2(encode_block, Int, DIMS)(bitstream* stream, int minbits, int maxbits, int maxprec, Int* iblock)
+{
+  int bits;
+  _cache_align(UInt ublock[BLOCK_SIZE]);
+  /* perform decorrelating transform */
+  _t2(fwd_xform, Int, DIMS)(iblock);
+  /* reorder signed coefficients and convert to unsigned integer */
+  _t1(fwd_order, Int)(ublock, iblock, PERM, BLOCK_SIZE);
+  /* encode integer coefficients */
+  bits = _t1(encode_ints, UInt)(stream, maxbits, maxprec, ublock, BLOCK_SIZE);
+  /* write at least minbits bits by padding with zeros */
+  if (bits < minbits) {
+    stream_pad(stream, minbits - bits);
+    bits = minbits;
+  }
+  return bits;
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* encode contiguous integer block */
+uint
+_t2(zfp_encode_block, Int, DIMS)(zfp_stream* zfp, const Int* iblock)
+{
+  _cache_align(Int block[BLOCK_SIZE]);
+  uint i;
+  /* copy block */
+  for (i = 0; i < BLOCK_SIZE; i++)
+    block[i] = iblock[i];
+  return _t2(encode_block, Int, DIMS)(zfp->stream, zfp->minbits, zfp->maxbits, zfp->maxprec, block);
+}
+
+/* encode contiguous floating-point block */
+uint
+_t2(zfp_encode_block, Scalar, DIMS)(zfp_stream* zfp, const Scalar* fblock)
+{
+  /* compute maximum exponent */
+  int emax = _t1(exponent_block, Scalar)(fblock, BLOCK_SIZE);
+  int maxprec = _t2(precision, Scalar, DIMS)(emax, zfp->maxprec, zfp->minexp);
+  uint e = maxprec ? emax + EBIAS : 0;
+  /* encode block only if biased exponent is nonzero */
+  if (e) {
+    _cache_align(Int iblock[BLOCK_SIZE]);
+    /* encode common exponent; LSB indicates that exponent is nonzero */
+    int ebits = EBITS + 1;
+    stream_write_bits(zfp->stream, 2 * e + 1, ebits);
+    /* perform forward block-floating-point transform */
+    _t1(fwd_cast, Scalar)(iblock, fblock, BLOCK_SIZE, emax);
+    /* encode integer block */
+    return ebits + _t2(encode_block, Int, DIMS)(zfp->stream, zfp->minbits - ebits, zfp->maxbits - ebits, maxprec, iblock);
+  }
+  else {
+    /* write single zero-bit to indicate that all values are zero */
+    stream_write_bit(zfp->stream, 0);
+    if (zfp->minbits > 1) {
+      stream_pad(zfp->stream, zfp->minbits - 1);
+      return zfp->minbits;
+    }
+    else
+      return 1;
+  }
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/encode1.c b/src/zfp/zfp-0.5.0/src/template/encode1.c
new file mode 100644
index 0000000..0d5d979
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/encode1.c
@@ -0,0 +1,55 @@
+static void _t1(pad_block, Scalar)(Scalar* p, uint n, uint s);
+static void _t1(fwd_lift, Int)(Int* p, uint s);
+
+/* private functions ------------------------------------------------------- */
+
+/* gather 4-value block from strided array */
+static void
+_t2(gather, Scalar, 1)(Scalar* q, const Scalar* p, int sx)
+{
+  uint x;
+  for (x = 0; x < 4; x++, p += sx)
+    *q++ = *p;
+}
+
+/* gather nx-value block from strided array */
+static void
+_t2(gather_partial, Scalar, 1)(Scalar* q, const Scalar* p, uint nx, int sx)
+{
+  uint x;
+  for (x = 0; x < nx; x++, p += sx)
+    q[x] = *p;
+  _t1(pad_block, Scalar)(q, nx, 1);
+}
+
+/* forward decorrelating 1D transform */
+static void
+_t2(fwd_xform, Int, 1)(Int* p)
+{
+  /* transform along x */
+  _t1(fwd_lift, Int)(p, 1);
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* encode 4-value floating-point block stored at p using stride sx */
+uint
+_t2(zfp_encode_block_strided, Scalar, 1)(zfp_stream* stream, const Scalar* p, int sx)
+{
+  /* gather block from strided array */
+  _cache_align(Scalar fblock[4]);
+  _t2(gather, Scalar, 1)(fblock, p, sx);
+  /* encode floating-point block */
+  return _t2(zfp_encode_block, Scalar, 1)(stream, fblock);
+}
+
+/* encode nx-value floating-point block stored at p using stride sx */
+uint
+_t2(zfp_encode_partial_block_strided, Scalar, 1)(zfp_stream* stream, const Scalar* p, uint nx, int sx)
+{
+  /* gather block from strided array */
+  _cache_align(Scalar fblock[4]);
+  _t2(gather_partial, Scalar, 1)(fblock, p, nx, sx);
+  /* encode floating-point block */
+  return _t2(zfp_encode_block, Scalar, 1)(stream, fblock);
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/encode2.c b/src/zfp/zfp-0.5.0/src/template/encode2.c
new file mode 100644
index 0000000..36661e3
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/encode2.c
@@ -0,0 +1,65 @@
+static void _t1(pad_block, Scalar)(Scalar* p, uint n, uint s);
+static void _t1(fwd_lift, Int)(Int* p, uint s);
+
+/* private functions ------------------------------------------------------- */
+
+/* gather 4*4 block from strided array */
+static void
+_t2(gather, Scalar, 2)(Scalar* q, const Scalar* p, int sx, int sy)
+{
+  uint x, y;
+  for (y = 0; y < 4; y++, p += sy - 4 * sx)
+    for (x = 0; x < 4; x++, p += sx)
+      *q++ = *p;
+}
+
+/* gather nx*ny block from strided array */
+static void
+_t2(gather_partial, Scalar, 2)(Scalar* q, const Scalar* p, uint nx, uint ny, int sx, int sy)
+{
+  uint x, y;
+  for (y = 0; y < ny; y++, p += sy - nx * sx) {
+    for (x = 0; x < nx; x++, p += sx)
+      q[4 * y + x] = *p;
+    _t1(pad_block, Scalar)(q + 4 * y, nx, 1);
+  }
+  for (x = 0; x < 4; x++)
+    _t1(pad_block, Scalar)(q + x, ny, 4);
+}
+
+/* forward decorrelating 2D transform */
+static void
+_t2(fwd_xform, Int, 2)(Int* p)
+{
+  uint x, y;
+  /* transform along x */
+  for (y = 0; y < 4; y++)
+    _t1(fwd_lift, Int)(p + 4 * y, 1);
+  /* transform along y */
+  for (x = 0; x < 4; x++)
+    _t1(fwd_lift, Int)(p + 1 * x, 4);
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* encode 4*4 floating-point block stored at p using strides (sx, sy) */
+uint
+_t2(zfp_encode_block_strided, Scalar, 2)(zfp_stream* stream, const Scalar* p, int sx, int sy)
+{
+  /* gather block from strided array */
+  _cache_align(Scalar fblock[16]);
+  _t2(gather, Scalar, 2)(fblock, p, sx, sy);
+  /* encode floating-point block */
+  return _t2(zfp_encode_block, Scalar, 2)(stream, fblock);
+}
+
+/* encode nx*ny floating-point block stored at p using strides (sx, sy) */
+uint
+_t2(zfp_encode_partial_block_strided, Scalar, 2)(zfp_stream* stream, const Scalar* p, uint nx, uint ny, int sx, int sy)
+{
+  /* gather block from strided array */
+  _cache_align(Scalar fblock[16]);
+  _t2(gather_partial, Scalar, 2)(fblock, p, nx, ny, sx, sy);
+  /* encode floating-point block */
+  return _t2(zfp_encode_block, Scalar, 2)(stream, fblock);
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/encode3.c b/src/zfp/zfp-0.5.0/src/template/encode3.c
new file mode 100644
index 0000000..25f0d7f
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/encode3.c
@@ -0,0 +1,77 @@
+static void _t1(pad_block, Scalar)(Scalar* p, uint n, uint s);
+static void _t1(fwd_lift, Int)(Int* p, uint s);
+
+/* private functions ------------------------------------------------------- */
+
+/* gather 4*4*4 block from strided array */
+static void
+_t2(gather, Scalar, 3)(Scalar* q, const Scalar* p, int sx, int sy, int sz)
+{
+  uint x, y, z;
+  for (z = 0; z < 4; z++, p += sz - 4 * sy)
+    for (y = 0; y < 4; y++, p += sy - 4 * sx)
+      for (x = 0; x < 4; x++, p += sx)
+        *q++ = *p;
+}
+
+/* gather nx*ny*nz block from strided array */
+static void
+_t2(gather_partial, Scalar, 3)(Scalar* q, const Scalar* p, uint nx, uint ny, uint nz, int sx, int sy, int sz)
+{
+  uint x, y, z;
+  for (z = 0; z < nz; z++, p += sz - ny * sy) {
+    for (y = 0; y < ny; y++, p += sy - nx * sx) {
+      for (x = 0; x < nx; x++, p += sx)
+        q[16 * z + 4 * y + x] = *p; 
+      _t1(pad_block, Scalar)(q + 16 * z + 4 * y, nx, 1);
+    }
+    for (x = 0; x < 4; x++)
+      _t1(pad_block, Scalar)(q + 16 * z + x, ny, 4);
+  }
+  for (y = 0; y < 4; y++)
+    for (x = 0; x < 4; x++)
+      _t1(pad_block, Scalar)(q + 4 * y + x, nz, 16);
+}
+
+/* forward decorrelating 3D transform */
+static void
+_t2(fwd_xform, Int, 3)(Int* p)
+{
+  uint x, y, z;
+  /* transform along x */
+  for (z = 0; z < 4; z++)
+    for (y = 0; y < 4; y++)
+      _t1(fwd_lift, Int)(p + 4 * y + 16 * z, 1);
+  /* transform along y */
+  for (x = 0; x < 4; x++)
+    for (z = 0; z < 4; z++)
+      _t1(fwd_lift, Int)(p + 16 * z + 1 * x, 4);
+  /* transform along z */
+  for (y = 0; y < 4; y++)
+    for (x = 0; x < 4; x++)
+      _t1(fwd_lift, Int)(p + 1 * x + 4 * y, 16);
+}
+
+/* public functions -------------------------------------------------------- */
+
+/* encode 4*4*4 floating-point block stored at p using strides (sx, sy, sz) */
+uint
+_t2(zfp_encode_block_strided, Scalar, 3)(zfp_stream* stream, const Scalar* p, int sx, int sy, int sz)
+{
+  /* gather block from strided array */
+  _cache_align(Scalar fblock[64]);
+  _t2(gather, Scalar, 3)(fblock, p, sx, sy, sz);
+  /* encode floating-point block */
+  return _t2(zfp_encode_block, Scalar, 3)(stream, fblock);
+}
+
+/* encode nx*ny*nz floating-point block stored at p using strides (sx, sy, sz) */
+uint
+_t2(zfp_encode_partial_block_strided, Scalar, 3)(zfp_stream* stream, const Scalar* p, uint nx, uint ny, uint nz, int sx, int sy, int sz)
+{
+  /* gather block from strided array */
+  _cache_align(Scalar fblock[64]);
+  _t2(gather_partial, Scalar, 3)(fblock, p, nx, ny, nz, sx, sy, sz);
+  /* encode floating-point block */
+  return _t2(zfp_encode_block, Scalar, 3)(stream, fblock);
+}
diff --git a/src/zfp/zfp-0.5.0/src/template/template.h b/src/zfp/zfp-0.5.0/src/template/template.h
new file mode 100644
index 0000000..fd5becf
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/template/template.h
@@ -0,0 +1,12 @@
+#ifndef TEMPLATE_H
+#define TEMPLATE_H
+
+/* concatenation */
+#define _cat2(x, y)    x ## _ ## y
+#define _cat3(x, y, z) x ## _ ## y ## _ ## z
+
+/* 1- and 2-argument function templates */
+#define _t1(function, arg)        _cat2(function, arg)
+#define _t2(function, type, dims) _cat3(function, type, dims)
+
+#endif
diff --git a/src/zfp/zfp-0.5.0/src/traitsd.h b/src/zfp/zfp-0.5.0/src/traitsd.h
new file mode 100644
index 0000000..a9767ef
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/traitsd.h
@@ -0,0 +1,11 @@
+/* double-precision floating-point traits */
+
+#define Scalar double                /* floating-point type */
+#define Int int64                    /* corresponding signed integer type */
+#define UInt uint64                  /* corresponding unsigned integer type */
+#define EBITS 11                     /* number of exponent bits */
+#define NBMASK 0xaaaaaaaaaaaaaaaaull /* negabinary mask */
+
+#define FABS(x) fabs(x)
+#define FREXP(x, e) frexp(x, e)
+#define LDEXP(x, e) ldexp(x, e)
diff --git a/src/zfp/zfp-0.5.0/src/traitsf.h b/src/zfp/zfp-0.5.0/src/traitsf.h
new file mode 100644
index 0000000..ba262ac
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/traitsf.h
@@ -0,0 +1,17 @@
+/* single-precision floating-point traits */
+
+#define Scalar float       /* floating-point type */
+#define Int int32          /* corresponding signed integer type */
+#define UInt uint32        /* corresponding unsigned integer type */
+#define EBITS 8            /* number of exponent bits */
+#define NBMASK 0xaaaaaaaau /* negabinary mask */
+
+#if __STDC_VERSION__ >= 199901L
+  #define FABS(x)     fabsf(x)
+  #define FREXP(x, e) frexpf(x, e)
+  #define LDEXP(x, e) ldexpf(x, e)
+#else
+  #define FABS(x)     (float)fabs(x)
+  #define FREXP(x, e) (void)frexp(x, e)
+  #define LDEXP(x, e) (float)ldexp(x, e)
+#endif
diff --git a/src/zfp/zfp-0.5.0/src/zfp.c b/src/zfp/zfp-0.5.0/src/zfp.c
new file mode 100644
index 0000000..79fc9e8
--- /dev/null
+++ b/src/zfp/zfp-0.5.0/src/zfp.c
@@ -0,0 +1,719 @@
+#include <limits.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "zfp.h"
+#include "macros.h"
+#include "template/template.h"
+
+#define Scalar float
+#include "template/compress.c"
+#include "template/decompress.c"
+#undef Scalar
+
+#define Scalar double
+#include "template/compress.c"
+#include "template/decompress.c"
+#undef Scalar
+
+/* private functions ------------------------------------------------------- */
+
+static uint
+type_precision(zfp_type type)
+{
+  switch (type) {
+    case zfp_type_int32:
+      return CHAR_BIT * (uint)sizeof(int32);
+    case zfp_type_int64:
+      return CHAR_BIT * (uint)sizeof(int64);
+    case zfp_type_float:
+      return CHAR_BIT * (uint)sizeof(float);
+    case zfp_type_double:
+      return CHAR_BIT * (uint)sizeof(double);
+    default:
+      return 0;
+  }
+}
+
+/* public functions: fields ------------------------------------------------ */
+
+zfp_field*
+zfp_field_alloc()
+{
+  zfp_field* field = malloc(sizeof(zfp_field));
+  if (field) {
+    field->type = zfp_type_none;
+    field->nx = field->ny = field->nz = 0;
+    field->sx = field->sy = field->sz = 0;
+    field->data = 0;
+  }
+  return field;
+}
+
+zfp_field*
+zfp_field_1d(void* data, zfp_type type, uint nx)
+{
+  zfp_field* field = zfp_field_alloc();
+  if (field) {
+    field->type = type;
+    field->nx = nx;
+    field->data = data;
+  }
+  return field;
+}
+
+zfp_field*
+zfp_field_2d(void* data, zfp_type type, uint nx, uint ny)
+{
+  zfp_field* field = zfp_field_alloc();
+  if (field) {
+    field->type = type;
+    field->nx = nx;
+    field->ny = ny;
+    field->data = data;
+  }
+  return field;
+}
+
+zfp_field*
+zfp_field_3d(void* data, zfp_type type, uint nx, uint ny, uint nz)
+{
+  zfp_field* field = zfp_field_alloc();
+  if (field) {
+    field->type = type;
+    field->nx = nx;
+    field->ny = ny;
+    field->nz = nz;
+    field->data = data;
+  }
+  return field;
+}
+
+void
+zfp_field_free(zfp_field* field)
+{
+  free(field);
+}
+
+void*
+zfp_field_pointer(const zfp_field* field)
+{
+  return field->data;
+}
+
+zfp_type
+zfp_field_type(const zfp_field* field)
+{
+  return field->type;
+}
+
+uint
+zfp_field_precision(const zfp_field* field)
+{
+  return type_precision(field->type);
+}
+
+uint
+zfp_field_dimensionality(const zfp_field* field)
+{
+  return field->nx ? field->ny ? field->nz ? 3 : 2 : 1 : 0;
+}
+
+size_t
+zfp_field_size(const zfp_field* field, uint* size)
+{
+  if (size)
+    switch (zfp_field_dimensionality(field)) {
+      case 3:
+        size[2] = field->sz;
+        /* FALLTHROUGH */
+      case 2:
+        size[1] = field->sy;
+        /* FALLTHROUGH */
+      case 1:
+        size[0] = field->sx;
+        break;
+    }
+  return (size_t)MAX(field->nx, 1u) * (size_t)MAX(field->ny, 1u) * (size_t)MAX(field->nz, 1u);
+}
+
+int
+zfp_field_stride(const zfp_field* field, int* stride)
+{
+  if (stride)
+    switch (zfp_field_dimensionality(field)) {
+      case 3:
+        stride[2] = field->sz ? field->sz : field->nx * field->ny;
+        /* FALLTHROUGH */
+      case 2:
+        stride[1] = field->sy ? field->sy : field->nx;
+        /* FALLTHROUGH */
+      case 1:
+        stride[0] = field->sx ? field->sx : 1;
+        break;
+    }
+  return field->sx || field->sy || field->sz;
+}
+
+uint64
+zfp_field_metadata(const zfp_field* field)
+{
+  uint64 meta = 0;
+  /* 48 bits for dimensions */
+  switch (zfp_field_dimensionality(field)) {
+    case 1:
+      meta <<= 48; meta += field->nx - 1;
+      break;
+    case 2:
+      meta <<= 24; meta += field->ny - 1;
+      meta <<= 24; meta += field->nx - 1;
+      break;
+    case 3:
+      meta <<= 16; meta += field->nz - 1;
+      meta <<= 16; meta += field->ny - 1;
+      meta <<= 16; meta += field->nx - 1;
+      break;
+  }
+  /* 2 bits for dimensionality (1D, 2D, 3D, 4D) */
+  meta <<= 2; meta += zfp_field_dimensionality(field) - 1;
+  /* 2 bits for scalar type */
+  meta <<= 2; meta += field->type - 1;
+  return meta;
+}
+
+void
+zfp_field_set_pointer(zfp_field* field, void* data)
+{
+  field->data = data;
+}
+
+zfp_type
+zfp_field_set_type(zfp_field* field, zfp_type type)
+{
+  switch (type) {
+    case zfp_type_int32:
+    case zfp_type_int64:
+    case zfp_type_float:
+    case zfp_type_double:
+      field->type = type;
+      return type;
+    default:
+      return zfp_type_none;
+  }
+}
+
+void
+zfp_field_set_size_1d(zfp_field* field, uint n)
+{
+  field->nx = n;
+  field->ny = 0;
+  field->nz = 0;
+}
+
+void
+zfp_field_set_size_2d(zfp_field* field, uint nx, uint ny)
+{
+  field->nx = nx;
+  field->ny = ny;
+  field->nz = 0;
+}
+
+void
+zfp_field_set_size_3d(zfp_field* field, uint nx, uint ny, uint nz)
+{
+  field->nx = nx;
+  field->ny = ny;
+  field->nz = nz;
+}
+
+void
+zfp_field_set_stride_1d(zfp_field* field, int sx)
+{
+  field->sx = sx;
+  field->sy = 0;
+  field->sz = 0;
+}
+
+void
+zfp_field_set_stride_2d(zfp_field* field, int sx, int sy)
+{
+  field->sx = sx;
+  field->sy = sy;
+  field->sz = 0;
+}
+
+void
+zfp_field_set_stride_3d(zfp_field* field, int sx, int sy, int sz)
+{
+  field->sx = sx;
+  field->sy = sy;
+  field->sz = sz;
+}
+
+int
+zfp_field_set_metadata(zfp_field* field, uint64 meta)
+{
+  uint dims;
+  field->type = (zfp_type)((meta & 0x3u) + 1); meta >>= 2;
+  dims = (meta & 0x3u) + 1; meta >>= 2;
+  switch (dims) {
+    case 1:
+      field->nx = (meta & 0xffffffffffffull) + 1; meta >>= 48;
+      break;
+    case 2:
+      field->nx = (meta & 0xffffffull) + 1; meta >>= 24;
+      field->ny = (meta & 0xffffffull) + 1; meta >>= 24;
+      break;
+    case 3:
+      field->nx = (meta & 0xffffull) + 1; meta >>= 16;
+      field->ny = (meta & 0xffffull) + 1; meta >>= 16;
+      field->nz = (meta & 0xffffull) + 1; meta >>= 16;
+      break;
+  }
+  field->sx = field->sy = field->sz = 0;
+  return 1;
+}
+
+/* public functions: zfp compressed stream --------------------------------- */
+
+zfp_stream*
+zfp_stream_open(bitstream* stream)
+{
+  zfp_stream* zfp = malloc(sizeof(zfp_stream));
+  if (zfp) {
+    zfp->stream = stream;
+    zfp->minbits = ZFP_MIN_BITS;
+    zfp->maxbits = ZFP_MAX_BITS;
+    zfp->maxprec = ZFP_MAX_PREC;
+    zfp->minexp = ZFP_MIN_EXP;
+  }
+  return zfp;
+}
+
+void
+zfp_stream_close(zfp_stream* zfp)
+{
+  free(zfp);
+}
+
+bitstream*
+zfp_stream_bit_stream(const zfp_stream* zfp)
+{
+  return zfp->stream;
+}
+
+uint64
+zfp_stream_mode(const zfp_stream* zfp)
+{
+  uint64 mode = 0;
+  uint minbits;
+  uint maxbits;
+  uint maxprec;
+  uint minexp;
+
+  /* fixed rate? */
+  if (zfp->minbits == zfp->maxbits &&
+      1 <= zfp->maxbits && zfp->maxbits <= 2048 &&
+      zfp->maxprec >= ZFP_MAX_PREC &&
+      zfp->minexp <= ZFP_MIN_EXP)
+    return zfp->maxbits - 1;
+
+  /* fixed precision? */
+  if (zfp->minbits <= ZFP_MIN_BITS &&
+      zfp->maxbits >= ZFP_MAX_BITS &&
+      1 <= zfp->maxprec && zfp->maxprec <= 128 &&
+      zfp->minexp <= ZFP_MIN_EXP)
+    return zfp->maxprec + 2047;
+
+  /* fixed accuracy? */
+  if (zfp->minbits <= ZFP_MIN_BITS &&
+      zfp->maxbits >= ZFP_MAX_BITS &&
+      zfp->maxprec >= ZFP_MAX_PREC &&
+      -1074 <= zfp->minexp && zfp->minexp <= 843)
+    return zfp->minexp + 3251;
+
+  /* encode each parameter separately */
+  minbits = MAX(1, MIN(zfp->minbits, 0x8000u)) - 1;
+  maxbits = MAX(1, MIN(zfp->maxbits, 0x8000u)) - 1;
+  maxprec = MAX(1, MIN(zfp->maxprec, 0x0080u)) - 1;
+  minexp = MAX(0, MIN(zfp->minexp + 16495, 0x7fff));
+  mode <<= 15; mode += minexp;
+  mode <<=  7; mode += maxprec;
+  mode <<= 15; mode += maxbits;
+  mode <<= 15; mode += minbits;
+  mode <<= 12; mode += 0xfffu;
+
+  return mode;
+}
+
+void
+zfp_stream_params(const zfp_stream* zfp, uint* minbits, uint* maxbits, uint* maxprec, int* minexp)
+{
+  if (minbits)
+    *minbits = zfp->minbits;
+  if (maxbits)
+    *maxbits = zfp->maxbits;
+  if (maxprec)
+    *maxprec = zfp->maxprec;
+  if (minexp)
+    *minexp = zfp->minexp;
+}
+
+size_t
+zfp_stream_compressed_size(const zfp_stream* zfp)
+{
+  return stream_size(zfp->stream);
+}
+
+size_t
+zfp_stream_maximum_size(const zfp_stream* zfp, const zfp_field* field)
+{
+  uint dims = zfp_field_dimensionality(field);
+  uint mx = (MAX(field->nx, 1u) + 3) / 4;
+  uint my = (MAX(field->ny, 1u) + 3) / 4;
+  uint mz = (MAX(field->nz, 1u) + 3) / 4;
+  size_t blocks = (size_t)mx * (size_t)my * (size_t)mz;
+  uint values = 1u << (2 * dims);
+  uint maxbits = 1;
+
+  if (!dims)
+    return 0;
+  switch (field->type) {
+    case zfp_type_none:
+      return 0;
+    case zfp_type_float:
+      maxbits += 8;
+      break;
+    case zfp_type_double:
+      maxbits += 11;
+      break;
+    default:
+      break;
+  }
+  maxbits += values - 1 + values * MIN(zfp->maxprec, type_precision(field->type));
+  maxbits = MIN(maxbits, zfp->maxbits);
+  maxbits = MAX(maxbits, zfp->minbits);
+  return ((ZFP_HEADER_BITS + blocks * maxbits + stream_word_bits - 1) & ~(stream_word_bits - 1)) / CHAR_BIT;
+}
+
+void
+zfp_stream_set_bit_stream(zfp_stream* zfp, bitstream* stream)
+{
+  zfp->stream = stream;
+}
+
+double
+zfp_stream_set_rate(zfp_stream* zfp, double rate, zfp_type type, uint dims, int wra)
+{
+  uint n = 1u << (2 * dims);
+  uint bits = (uint)floor(n * rate + 0.5);
+  switch (type) {
+    case zfp_type_float:
+      bits = MAX(bits, 1 + 8u);
+      break;
+    case zfp_type_double:
+      bits = MAX(bits, 1 + 11u);
+      break;
+    default:
+      break;
+  }
+  if (wra) {
+    /* for write random access, round up to next multiple of stream word size */
+    bits += stream_word_bits - 1;
+    bits &= ~(stream_word_bits - 1);
+  }
+  zfp->minbits = bits;
+  zfp->maxbits = bits;
+  zfp->maxprec = type_precision(type);
+  zfp->minexp = ZFP_MIN_EXP;
+  return (double)bits / n;
+}
+
+uint
+zfp_stream_set_precision(zfp_stream* zfp, uint precision, zfp_type type)
+{
+  uint maxprec = type_precision(type);
+  zfp->minbits = ZFP_MIN_BITS;
+  zfp->maxbits = ZFP_MAX_BITS;
+  zfp->maxprec = precision ? MIN(maxprec, precision) : maxprec;
+  zfp->minexp = ZFP_MIN_EXP;
+  return zfp->maxprec;
+}
+
+double
+zfp_stream_set_accuracy(zfp_stream* zfp, double tolerance, zfp_type type)
+{
+  int emin = ZFP_MIN_EXP;
+  if (tolerance > 0) {
+    /* tolerance = x * 2^emin, with 0.5 <= x < 1 */
+    frexp(tolerance, &emin);
+    emin--;
+    /* assert: 2^emin <= tolerance < 2^(emin+1) */
+  }
+  zfp->minbits = ZFP_MIN_BITS;
+  zfp->maxbits = ZFP_MAX_BITS;
+  zfp->maxprec = type_precision(type);
+  zfp->minexp = emin;
+  return tolerance > 0 ? ldexp(1.0, emin) : 0;
+}
+
+int
+zfp_stream_set_mode(zfp_stream* zfp, uint64 mode)
+{
+  if (mode <= ZFP_MODE_SHORT_MAX) {
+    /* 12-bit encoding of one of three modes */
+    if (mode < 2048) {
+      /* fixed rate */
+      zfp->minbits = zfp->maxbits = (uint)mode + 1;
+      zfp->maxprec = ZFP_MAX_PREC;
+      zfp->minexp = ZFP_MIN_EXP;
+    }
+    else if (mode < 2176) {
+      /* fixed precision */
+      zfp->minbits = ZFP_MIN_BITS;
+      zfp->maxbits = ZFP_MAX_BITS;
+      zfp->maxprec = (uint)mode - 2047;
+      zfp->minexp = ZFP_MIN_EXP;
+    }
+    else {
+      /* fixed accuracy */
+      zfp->minbits = ZFP_MIN_BITS;
+      zfp->maxbits = ZFP_MAX_BITS;
+      zfp->maxprec = ZFP_MAX_PREC;
+      zfp->minexp = (uint)mode - 3251;
+    }
+  }
+  else {
+    /* 64-bit encoding */
+    mode >>= 12; zfp->minbits = ((uint)mode & 0x7fffu) + 1;
+    mode >>= 15; zfp->maxbits = ((uint)mode & 0x7fffu) + 1;
+    mode >>= 15; zfp->maxprec = ((uint)mode & 0x007fu) + 1;
+    mode >>=  7; zfp->minexp  = ((uint)mode & 0x7fffu) - 16495;
+  }
+
+  return 1;
+}
+
+int
+zfp_stream_set_params(zfp_stream* zfp, uint minbits, uint maxbits, uint maxprec, int minexp)
+{
+  if (minbits > maxbits || !(0 < maxprec && maxprec <= 64))
+    return 0;
+  zfp->minbits = minbits;
+  zfp->maxbits = maxbits;
+  zfp->maxprec = maxprec;
+  zfp->minexp = minexp;
+  return 1;
+}
+
+void
+zfp_stream_flush(zfp_stream* zfp)
+{
+  stream_flush(zfp->stream);
+}
+
+void
+zfp_stream_align(zfp_stream* zfp)
+{
+  stream_align(zfp->stream);
+}
+
+void
+zfp_stream_rewind(zfp_stream* zfp)
+{
+  stream_rewind(zfp->stream);
+}
+
+/* public functions: utility functions --------------------------------------*/
+
+void
+zfp_promote_int8_to_int32(int32* oblock, const int8* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--)
+    *oblock++ = (int32)*iblock++ << 23;
+}
+
+void
+zfp_promote_uint8_to_int32(int32* oblock, const uint8* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--)
+    *oblock++ = ((int32)*iblock++ - 0x80) << 23;
+}
+
+void
+zfp_promote_int16_to_int32(int32* oblock, const int16* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--)
+    *oblock++ = (int32)*iblock++ << 15;
+}
+
+void
+zfp_promote_uint16_to_int32(int32* oblock, const uint16* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--)
+    *oblock++ = ((int32)*iblock++ - 0x8000) << 15;
+}
+
+void
+zfp_demote_int32_to_int8(int8* oblock, const int32* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--) {
+    int32 i = *iblock++ >> 23;
+    *oblock++ = MAX(-0x80, MIN(i, 0x7f));
+  }
+}
+
+void
+zfp_demote_int32_to_uint8(uint8* oblock, const int32* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--) {
+    int32 i = (*iblock++ >> 23) + 0x80;
+    *oblock++ = MAX(0x00, MIN(i, 0xff));
+  }
+}
+
+void
+zfp_demote_int32_to_int16(int16* oblock, const int32* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--) {
+    int32 i = *iblock++ >> 15;
+    *oblock++ = MAX(-0x8000, MIN(i, 0x7fff));
+  }
+}
+
+void
+zfp_demote_int32_to_uint16(uint16* oblock, const int32* iblock, uint dims)
+{
+  uint count = 1u << (2 * dims);
+  while (count--) {
+    int32 i = (*iblock++ >> 15) + 0x8000;
+    *oblock++ = MAX(0x0000, MIN(i, 0xffff));
+  }
+}
+
+/* public functions: compression and decompression --------------------------*/
+
+size_t
+zfp_compress(zfp_stream* zfp, const zfp_field* field)
+{
+  void (*compress[2][3][2])(zfp_stream*, const zfp_field*) = {
+    {{ compress_float_1,         compress_double_1 },
+     { compress_strided_float_2, compress_strided_double_2 },
+     { compress_strided_float_3, compress_strided_double_3 }},
+    {{ compress_strided_float_1, compress_strided_double_1 },
+     { compress_strided_float_2, compress_strided_double_2 },
+     { compress_strided_float_3, compress_strided_double_3 }},
+  };
+  uint dims = zfp_field_dimensionality(field);
+  uint type = field->type;
+  uint strided = zfp_field_stride(field, NULL);
+
+  switch (type) {
+    case zfp_type_float:
+    case zfp_type_double:
+      break;
+    default:
+      return 0;
+  }
+
+  compress[strided][dims - 1][type - zfp_type_float](zfp, field);
+  stream_flush(zfp->stream);
+
+  return stream_size(zfp->stream);
+}
+
+int
+zfp_decompress(zfp_stream* zfp, zfp_field* field)
+{
+  void (*decompress[2][3][2])(zfp_stream*, zfp_field*) = {
+    {{ decompress_float_1,         decompress_double_1 },
+     { decompress_strided_float_2, decompress_strided_double_2 },
+     { decompress_strided_float_3, decompress_strided_double_3 }},
+    {{ decompress_strided_float_1, decompress_strided_double_1 },
+     { decompress_strided_float_2, decompress_strided_double_2 },
+     { decompress_strided_float_3, decompress_strided_double_3 }},
+  };
+  uint dims = zfp_field_dimensionality(field);
+  uint type = field->type;
+  uint strided = zfp_field_stride(field, NULL);
+
+  switch (type) {
+    case zfp_type_float:
+    case zfp_type_double:
+      break;
+    default:
+      return 0;
+  }
+
+  decompress[strided][dims - 1][type - zfp_type_float](zfp, field);
+  stream_align(zfp->stream);
+
+  return 1;
+}
+
+size_t
+zfp_write_header(zfp_stream* zfp, const zfp_field* field, uint mask)
+{
+  size_t bits = 0;
+  /* 32-bit magic */
+  if (mask & ZFP_HEADER_MAGIC) {
+    stream_write_bits(zfp->stream, 'z', 8);
+    stream_write_bits(zfp->stream, 'f', 8);
+    stream_write_bits(zfp->stream, 'p', 8);
+    stream_write_bits(zfp->stream, ZFP_VERSION >> 4, 8);
+    bits += ZFP_MAGIC_BITS;
+  }
+  /* 52-bit field metadata */
+  if (mask & ZFP_HEADER_FIELD) {
+    uint64 meta = zfp_field_metadata(field);
+    stream_write_bits(zfp->stream, meta, ZFP_META_BITS);
+    bits += ZFP_META_BITS;
+  }
+  /* 12- or 64-bit compression parameters */
+  if (mask & ZFP_HEADER_PARAMS) {
+    uint64 mode = zfp_stream_mode(zfp);
+    uint size = mode > ZFP_MODE_SHORT_MAX ? ZFP_MODE_LONG_BITS : ZFP_MODE_SHORT_BITS;
+    stream_write_bits(zfp->stream, mode, size);
+    bits += size;
+  }
+  return bits;
+}
+
+size_t
+zfp_read_header(zfp_stream* zfp, zfp_field* field, uint mask)
+{
+  size_t bits = 0;
+  if (mask & ZFP_HEADER_MAGIC) {
+    if (stream_read_bits(zfp->stream, 8) != 'z' ||
+        stream_read_bits(zfp->stream, 8) != 'f' ||
+        stream_read_bits(zfp->stream, 8) != 'p' ||
+        stream_read_bits(zfp->stream, 8) != (ZFP_VERSION >> 4))
+      return 0;
+    bits += ZFP_MAGIC_BITS;
+  }
+  if (mask & ZFP_HEADER_FIELD) {
+    uint64 meta = stream_read_bits(zfp->stream, ZFP_META_BITS);
+    if (!zfp_field_set_metadata(field, meta))
+      return 0;
+    bits += ZFP_META_BITS;
+  }
+  if (mask & ZFP_HEADER_PARAMS) {
+    uint64 mode = stream_read_bits(zfp->stream, ZFP_MODE_SHORT_BITS);
+    bits += ZFP_MODE_SHORT_BITS;
+    if (mode > ZFP_MODE_SHORT_MAX) {
+      uint size = ZFP_MODE_LONG_BITS - ZFP_MODE_SHORT_BITS;
+      mode += stream_read_bits(zfp->stream, size) << ZFP_MODE_SHORT_BITS;
+      bits += size;
+    }
+    if (!zfp_stream_set_mode(zfp, mode))
+      return 0;
+  }
+  return bits;
+}
diff --git a/tests/C/Makefile.in b/tests/C/Makefile.in
index 8a580e6..6eaa73f 100644
--- a/tests/C/Makefile.in
+++ b/tests/C/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -449,6 +449,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/fgr_tests/Makefile.in b/tests/C/fgr_tests/Makefile.in
index e8d7f49..8795cf4 100644
--- a/tests/C/fgr_tests/Makefile.in
+++ b/tests/C/fgr_tests/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -407,6 +407,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/1D_arr_global/Makefile.in b/tests/C/flexpath_tests/1D_arr_global/Makefile.in
index f4cac27..2a55814 100644
--- a/tests/C/flexpath_tests/1D_arr_global/Makefile.in
+++ b/tests/C/flexpath_tests/1D_arr_global/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -415,6 +415,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/1D_arr_global/reader.c b/tests/C/flexpath_tests/1D_arr_global/reader.c
index 0dcfe25..e67cb0a 100644
--- a/tests/C/flexpath_tests/1D_arr_global/reader.c
+++ b/tests/C/flexpath_tests/1D_arr_global/reader.c
@@ -152,17 +152,15 @@ int main (int argc, char **argv){
 	    p_test_failed("%s: rank %d\n", test_result.name, rank);
 
 
-#ifdef FLEXPATH_METHOD
-	adios_release_step(adios_handler);
+	adios_release_step(adios_handle);
 	// 0 - next available step, block for max 30 seconds until the next step
 	// is available
-	adios_advance_step(adios_handler, 0, 30);
+	adios_advance_step(adios_handle, 0, 30);
 	if (0 == adios_errno){
 		printf("Rank %d: proceeding to the next step ...\n", rank);
 	} else {
 		printf("ERROR: adios_advance_step(); anyway Quitting ... Rank %d: (%d) %s\n", rank, adios_errno, adios_errmsg());
 	}
-#endif
 
 
 just_clean:
diff --git a/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.in b/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.in
index f1fba39..8f11e6a 100644
--- a/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.in
+++ b/tests/C/flexpath_tests/1D_arr_global_noxml/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -422,6 +422,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/1D_arr_global_noxml/writer.c b/tests/C/flexpath_tests/1D_arr_global_noxml/writer.c
index e87224b..fab08c6 100644
--- a/tests/C/flexpath_tests/1D_arr_global_noxml/writer.c
+++ b/tests/C/flexpath_tests/1D_arr_global_noxml/writer.c
@@ -66,9 +66,9 @@ int main(int argc, char ** argv){
 	int64_t	adios_grp;
 
 	// now declare a group
-	adios_declare_group(&adios_grp, "temperature", "iter", adios_flag_yes);
+	adios_declare_group(&adios_grp, "temperature", "iter", adios_stat_default);
 
-	SET_ERROR_IF_ZERO(adios_select_method(adios_grp, adios_opts.transport, "", ""), err_count);
+	SET_ERROR_IF_NOT_ZERO(adios_select_method(adios_grp, adios_opts.transport, "", ""), err_count);
 	RET_IF_ERROR(err_count, rank);
 
 
diff --git a/tests/C/flexpath_tests/Makefile.in b/tests/C/flexpath_tests/Makefile.in
index af7cf17..dddcd69 100644
--- a/tests/C/flexpath_tests/Makefile.in
+++ b/tests/C/flexpath_tests/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/global_range_select/Makefile.in b/tests/C/flexpath_tests/global_range_select/Makefile.in
index c05d198..bcde1a9 100644
--- a/tests/C/flexpath_tests/global_range_select/Makefile.in
+++ b/tests/C/flexpath_tests/global_range_select/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/maya_append/Makefile.in b/tests/C/flexpath_tests/maya_append/Makefile.in
index e0b5051..12544b8 100644
--- a/tests/C/flexpath_tests/maya_append/Makefile.in
+++ b/tests/C/flexpath_tests/maya_append/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -415,6 +415,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/maya_append/writer.c b/tests/C/flexpath_tests/maya_append/writer.c
index a5aaa2d..f562c33 100644
--- a/tests/C/flexpath_tests/maya_append/writer.c
+++ b/tests/C/flexpath_tests/maya_append/writer.c
@@ -66,7 +66,7 @@ int main(int argc, char ** argv){
 	int64_t	adios_grp = 0;
 
 	// now declare a group and variables you will have in the group
-	adios_declare_group(&adios_grp, GRP_NAME, "", adios_flag_no);
+	adios_declare_group(&adios_grp, GRP_NAME, "", adios_stat_default);
 
 	uint64_t adios_groupsize = 0;
 
diff --git a/tests/C/flexpath_tests/maya_noxml/Makefile.in b/tests/C/flexpath_tests/maya_noxml/Makefile.in
index e07a53d..3ae1812 100644
--- a/tests/C/flexpath_tests/maya_noxml/Makefile.in
+++ b/tests/C/flexpath_tests/maya_noxml/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -421,6 +421,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/maya_noxml/writer.c b/tests/C/flexpath_tests/maya_noxml/writer.c
index d2c07b4..8e1b990 100644
--- a/tests/C/flexpath_tests/maya_noxml/writer.c
+++ b/tests/C/flexpath_tests/maya_noxml/writer.c
@@ -67,7 +67,7 @@ int main(int argc, char ** argv){
 	int64_t	adios_grp = 0;
 
 	// now declare a group
-	adios_declare_group(&adios_grp, "carpet_checkpoint", "", adios_flag_no);
+	adios_declare_group(&adios_grp, "carpet_checkpoint", "", adios_stat_default);
 
 	uint64_t adios_groupsize = 0;
 
diff --git a/tests/C/flexpath_tests/scalar/Makefile.in b/tests/C/flexpath_tests/scalar/Makefile.in
index 6675732..fe81a63 100644
--- a/tests/C/flexpath_tests/scalar/Makefile.in
+++ b/tests/C/flexpath_tests/scalar/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -415,6 +415,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/flexpath_tests/scalar/writer.c b/tests/C/flexpath_tests/scalar/writer.c
index 9c29390..17d2e61 100644
--- a/tests/C/flexpath_tests/scalar/writer.c
+++ b/tests/C/flexpath_tests/scalar/writer.c
@@ -44,7 +44,7 @@ int main(int argc, char ** argv){
 	MPI_Comm_rank (comm, &rank);
 	MPI_Comm_size (comm, &size);
 
-	SET_ERROR_IF_ZERO(adios_init(adios_opts.xml_adios_init_filename, comm), err_count);
+	SET_ERROR_IF_NOT_ZERO(adios_init(adios_opts.xml_adios_init_filename, comm), err_count);
 	RET_IF_ERROR(err_count, rank);
 
 	uint64_t adios_groupsize, adios_totalsize;
diff --git a/tests/C/query/Makefile.in b/tests/C/query/Makefile.in
index a5d1d2a..feef088 100644
--- a/tests/C/query/Makefile.in
+++ b/tests/C/query/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -415,6 +415,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/query/alacrity/Makefile.in b/tests/C/query/alacrity/Makefile.in
index f95074f..f099486 100644
--- a/tests/C/query/alacrity/Makefile.in
+++ b/tests/C/query/alacrity/Makefile.in
@@ -113,7 +113,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -459,6 +459,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/query/common/Makefile.in b/tests/C/query/common/Makefile.in
index 15c8e2c..8dcd42a 100644
--- a/tests/C/query/common/Makefile.in
+++ b/tests/C/query/common/Makefile.in
@@ -111,7 +111,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -439,6 +439,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/C/query/fastbit/Makefile.in b/tests/C/query/fastbit/Makefile.in
index 6c29c80..ac21b1e 100644
--- a/tests/C/query/fastbit/Makefile.in
+++ b/tests/C/query/fastbit/Makefile.in
@@ -112,7 +112,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -414,6 +414,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/Fortran/Makefile.in b/tests/Fortran/Makefile.in
index 94e243f..e4d50c8 100644
--- a/tests/Fortran/Makefile.in
+++ b/tests/Fortran/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -404,6 +404,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 0fbd754..4fcdd2d 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -416,6 +416,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/bp_read/Makefile.in b/tests/bp_read/Makefile.in
index 7dcf363..7b4cfef 100644
--- a/tests/bp_read/Makefile.in
+++ b/tests/bp_read/Makefile.in
@@ -113,7 +113,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -455,6 +455,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/genarray/Makefile.in b/tests/genarray/Makefile.in
index 90902cd..5a37f21 100644
--- a/tests/genarray/Makefile.in
+++ b/tests/genarray/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -428,6 +428,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/Makefile.in b/tests/suite/Makefile.in
index 3d55113..241a952 100644
--- a/tests/suite/Makefile.in
+++ b/tests/suite/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/Makefile.in b/tests/suite/programs/Makefile.in
index db0518d..4297e96 100644
--- a/tests/suite/programs/Makefile.in
+++ b/tests/suite/programs/Makefile.in
@@ -111,7 +111,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -903,6 +903,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/big_file.c b/tests/suite/programs/big_file.c
index 874347b..88cde53 100644
--- a/tests/suite/programs/big_file.c
+++ b/tests/suite/programs/big_file.c
@@ -125,7 +125,7 @@ int main (int argc, char ** argv)
         printE ("%s\n", adios_errmsg());
     }
 
-    adios_declare_group (&m_adios_group, "bigdata", "iter", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "bigdata", "iter", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
 
diff --git a/tests/suite/programs/blocks.c b/tests/suite/programs/blocks.c
index 0920033..5000130 100644
--- a/tests/suite/programs/blocks.c
+++ b/tests/suite/programs/blocks.c
@@ -95,7 +95,7 @@ int write_blocks ()
     int64_t       m_adios_group;
     int64_t       m_adios_file;
 
-    adios_declare_group (&m_adios_group, "restart", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "restart", "", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
     adios_define_var (m_adios_group, "NX"
diff --git a/tests/suite/programs/connect_to_space_subset.c b/tests/suite/programs/connect_to_space_subset.c
index 85699d8..36a2205 100644
--- a/tests/suite/programs/connect_to_space_subset.c
+++ b/tests/suite/programs/connect_to_space_subset.c
@@ -121,7 +121,7 @@ int main (int argc, char ** argv)
 
     if (iconnect) 
     {
-        adios_declare_group (&m_adios_group, "connect", "iter", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "connect", "iter", adios_stat_default);
         adios_select_method (m_adios_group, "DATASPACES", "verbose=4", "");
         adios_define_var (m_adios_group, "ldim1", "", adios_integer, 0, 0, 0);
         adios_define_var (m_adios_group, "gdim1", "", adios_integer, 0, 0, 0);
diff --git a/tests/suite/programs/examples/Makefile.in b/tests/suite/programs/examples/Makefile.in
index 6741230..7d9f693 100644
--- a/tests/suite/programs/examples/Makefile.in
+++ b/tests/suite/programs/examples/Makefile.in
@@ -107,7 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -413,6 +413,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/examples/attributes/Makefile.in b/tests/suite/programs/examples/attributes/Makefile.in
index 436c430..b775687 100644
--- a/tests/suite/programs/examples/attributes/Makefile.in
+++ b/tests/suite/programs/examples/attributes/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -416,6 +416,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/examples/global_array/Makefile.in b/tests/suite/programs/examples/global_array/Makefile.in
index bf6b386..72729db 100644
--- a/tests/suite/programs/examples/global_array/Makefile.in
+++ b/tests/suite/programs/examples/global_array/Makefile.in
@@ -115,7 +115,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -544,6 +544,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/examples/global_array/global_array_F.xml b/tests/suite/programs/examples/global_array/global_array_F.xml
index cb368c6..9922d88 100644
--- a/tests/suite/programs/examples/global_array/global_array_F.xml
+++ b/tests/suite/programs/examples/global_array/global_array_F.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <adios-config host-language="Fortran">
-  <adios-group name="temperature">
+  <adios-group name="temperature" stats="On">
     <var name="NX" type="integer"/>
     <var name="size" type="integer"/>
     <var name="rank" type="integer"/>
diff --git a/tests/suite/programs/examples/global_array/global_array_aggregate_by_color_C.c b/tests/suite/programs/examples/global_array/global_array_aggregate_by_color_C.c
index 29f504e..1d9ce01 100644
--- a/tests/suite/programs/examples/global_array/global_array_aggregate_by_color_C.c
+++ b/tests/suite/programs/examples/global_array/global_array_aggregate_by_color_C.c
@@ -55,7 +55,7 @@ int main (int argc, char ** argv)
         int64_t       m_adios_group;
         int64_t       m_adios_file;
 
-        adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
 
         // split into 2 groups 
         color = (rank % 2 == 0 ? 0 : 1);
diff --git a/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_C.c b/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_C.c
index 5c17e29..044829b 100644
--- a/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_C.c
+++ b/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_C.c
@@ -62,7 +62,7 @@ int main (int argc, char ** argv)
         int64_t       m_adios_file;
         int64_t       var_ids[nblocks];
 
-        adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
         adios_select_method (m_adios_group, "MPI", "", "");
 
         for (i = 0; i < nblocks; i++) 
diff --git a/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_F.F90 b/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_F.F90
index 9e51cf4..5f57248 100644
--- a/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_F.F90
+++ b/tests/suite/programs/examples/global_array/global_array_write_byid_noxml_F.F90
@@ -43,7 +43,7 @@ program no_xml_write_byid
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (10) 
 
-    call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
+    call adios_declare_group (m_adios_group, "restart", "iter", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     G = 2 * NX * size
diff --git a/tests/suite/programs/examples/global_array/global_array_write_noxml_C.c b/tests/suite/programs/examples/global_array/global_array_write_noxml_C.c
index 88c86f4..a7bafe2 100644
--- a/tests/suite/programs/examples/global_array/global_array_write_noxml_C.c
+++ b/tests/suite/programs/examples/global_array/global_array_write_noxml_C.c
@@ -55,7 +55,7 @@ int main (int argc, char ** argv)
         int64_t       m_adios_group;
         int64_t       m_adios_file;
 
-        adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
         adios_select_method (m_adios_group, "MPI", "", "");
 
 
diff --git a/tests/suite/programs/examples/global_array/global_array_write_noxml_F.F90 b/tests/suite/programs/examples/global_array/global_array_write_noxml_F.F90
index 8ec3c01..74d65f2 100644
--- a/tests/suite/programs/examples/global_array/global_array_write_noxml_F.F90
+++ b/tests/suite/programs/examples/global_array/global_array_write_noxml_F.F90
@@ -37,7 +37,7 @@ program adios_global
     call adios_init_noxml (comm, adios_err)
     call adios_set_max_buffer_size (10) 
 
-    call adios_declare_group (m_adios_group, "restart", "iter", 1, adios_err)
+    call adios_declare_group (m_adios_group, "restart", "iter", ADIOS_STAT_DEFAULT, adios_err)
     call adios_select_method (m_adios_group, "MPI", "", "", adios_err)
 
     ! This example doesn't use varid during writing.
diff --git a/tests/suite/programs/examples/global_array_time/Makefile.am b/tests/suite/programs/examples/global_array_time/Makefile.am
index 73b0fde..cafa035 100644
--- a/tests/suite/programs/examples/global_array_time/Makefile.am
+++ b/tests/suite/programs/examples/global_array_time/Makefile.am
@@ -28,7 +28,7 @@ global_array_time_read_as_stream_C_LDADD += $(ADIOSREADLIB_LDADD)
 
 CLEANFILES = *.bp *.ch *.fh
 CC=$(MPICC)
-EXTRA_DIST = global_array_time_C.xml global_array_time_F.xml
+EXTRA_DIST = global_array_time_C.xml global_array_time_F.xml global_array_time_aggr_C.xml
 
 if BUILD_FORTRAN
 check_PROGRAMS += global_array_time_write_F
diff --git a/tests/suite/programs/examples/global_array_time/Makefile.in b/tests/suite/programs/examples/global_array_time/Makefile.in
index ec95d33..eeec105 100644
--- a/tests/suite/programs/examples/global_array_time/Makefile.in
+++ b/tests/suite/programs/examples/global_array_time/Makefile.in
@@ -111,7 +111,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -466,6 +466,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -544,7 +547,7 @@ global_array_time_read_as_stream_C_LDADD =  \
 	$(top_builddir)/src/libadiosread.a $(ADIOSREADLIB_LDADD)
 global_array_time_read_as_stream_C_LDFLAGS = $(ADIOSREADLIB_LDFLAGS)
 CLEANFILES = *.bp *.ch *.fh
-EXTRA_DIST = global_array_time_C.xml global_array_time_F.xml
+EXTRA_DIST = global_array_time_C.xml global_array_time_F.xml global_array_time_aggr_C.xml
 @BUILD_FORTRAN_TRUE at global_array_time_write_F_SOURCES = global_array_time_write_F.F90
 @BUILD_FORTRAN_TRUE at global_array_time_write_F_LDADD =  \
 @BUILD_FORTRAN_TRUE@	$(top_builddir)/src/libadiosf.a \
diff --git a/examples/C/global-array-time/adios_globaltime.xml b/tests/suite/programs/examples/global_array_time/global_array_time_aggr_C.xml
similarity index 90%
copy from examples/C/global-array-time/adios_globaltime.xml
copy to tests/suite/programs/examples/global_array_time/global_array_time_aggr_C.xml
index a0d308d..ff4e6a8 100644
--- a/examples/C/global-array-time/adios_globaltime.xml
+++ b/tests/suite/programs/examples/global_array_time/global_array_time_aggr_C.xml
@@ -20,8 +20,9 @@
   </adios-group>
 
   <method group="restart" method="MPI"/>
+  <time-aggregation group="restart" buffer-size=3000/>
 
-  <buffer max-size-MB="1"/>
+  <buffer max-size-MB="5"/>
 
 </adios-config>
 
diff --git a/tests/suite/programs/examples/global_array_time/global_array_time_write_C.c b/tests/suite/programs/examples/global_array_time/global_array_time_write_C.c
index 4485352..fb4e037 100644
--- a/tests/suite/programs/examples/global_array_time/global_array_time_write_C.c
+++ b/tests/suite/programs/examples/global_array_time/global_array_time_write_C.c
@@ -11,48 +11,48 @@
 #include "adios.h"
 int main (int argc, char ** argv) 
 {
-	char        filename [256];
-	int         rank, size, i, it;
-	int         NX = 10;
+    char        filename [256];
+    int         rank, size, i, it;
+    int         NX = 10;
         // NY = 1 for testing purpose
-	int         NY = 1; 
-	double      t[NX];
-	double      p[NY];
-
-	/* ADIOS variables declarations for matching gwrite_temperature.ch */
-	uint64_t    adios_groupsize, adios_totalsize;
-	int64_t     adios_handle;
-	MPI_Comm    comm=MPI_COMM_WORLD;
+    int         NY = 1; 
+    double      t[NX];
+    double      p[NY];
+
+    /* ADIOS variables declarations for matching gwrite_temperature.ch */
+    uint64_t    adios_groupsize, adios_totalsize;
+    int64_t     adios_handle;
+    MPI_Comm    comm=MPI_COMM_WORLD;
  
-	MPI_Init (&argc, &argv);
-	MPI_Comm_rank (MPI_COMM_WORLD, &rank);
-	MPI_Comm_size (comm, &size);
-
-	adios_init ("global_array_time_C.xml", comm);
-    	strcpy (filename, "global_array_time_C.bp");
-    	for (it =1; it <= 13; it++) {
-
-        	for (i = 0; i < NX; i++)
-            		t[i] = it*100.0 + rank*NX + i;
-
-        	for (i = 0; i < NY; i++)
-            		p[i] = it*1000.0 + rank*NY + i;
-		
-                if (it==1)
-		    adios_open (&adios_handle, "restart", filename, "w", comm);
-                else
-		    adios_open (&adios_handle, "restart", filename, "a", comm);
-
-        	#include "gwrite_restart.ch"
-        	adios_close (adios_handle);
-		MPI_Barrier (comm);
-                //if (rank==0) printf("Timestep %d written\n", it+1);
- 	}
-	MPI_Barrier (comm);
-        //if (rank==0) printf("Finalize adios\n");
-    	adios_finalize (rank);
-
-        //if (rank==0) printf("Finalize MPI\n");
-    	MPI_Finalize ();
-	return 0;
+    MPI_Init (&argc, &argv);
+    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
+    MPI_Comm_size (comm, &size);
+
+    adios_init ("global_array_time_C.xml", comm);
+    strcpy (filename, "global_array_time_C.bp");
+    for (it =1; it <= 13; it++) {
+
+        for (i = 0; i < NX; i++)
+            t[i] = it*100.0 + rank*NX + i;
+
+        for (i = 0; i < NY; i++)
+            p[i] = it*1000.0 + rank*NY + i;
+
+        if (it==1)
+            adios_open (&adios_handle, "restart", filename, "w", comm);
+        else
+            adios_open (&adios_handle, "restart", filename, "a", comm);
+
+#       include "gwrite_restart.ch"
+        adios_close (adios_handle);
+        MPI_Barrier (comm);
+        //if (rank==0) printf("Timestep %d written\n", it+1);
+    }
+    MPI_Barrier (comm);
+    //if (rank==0) printf("Finalize adios\n");
+    adios_finalize (rank);
+
+    //if (rank==0) printf("Finalize MPI\n");
+    MPI_Finalize ();
+    return 0;
 }
diff --git a/tests/suite/programs/examples/local_array/Makefile.in b/tests/suite/programs/examples/local_array/Makefile.in
index 3b734b3..71a4362 100644
--- a/tests/suite/programs/examples/local_array/Makefile.in
+++ b/tests/suite/programs/examples/local_array/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -416,6 +416,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/examples/scalars/Makefile.in b/tests/suite/programs/examples/scalars/Makefile.in
index f52834f..d11ba96 100644
--- a/tests/suite/programs/examples/scalars/Makefile.in
+++ b/tests/suite/programs/examples/scalars/Makefile.in
@@ -110,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -458,6 +458,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/tests/suite/programs/examples/scalars/scalars_read_C.c b/tests/suite/programs/examples/scalars/scalars_read_C.c
index dca789d..3ae4764 100644
--- a/tests/suite/programs/examples/scalars/scalars_read_C.c
+++ b/tests/suite/programs/examples/scalars/scalars_read_C.c
@@ -60,6 +60,7 @@ int main (int argc, char ** argv)
     MPI_Init (&argc, &argv);
     MPI_Comm_rank (comm, &rank);
 
+    FILE* outf = fopen ("c_read.txt", "w");
     strcpy (filename, "scalars_C.bp");
 
     adios_read_init_method (method, comm, "verbose=3");
@@ -83,28 +84,29 @@ int main (int argc, char ** argv)
     adios_perform_reads (f,1);
 
     if (rank == 0) {
-        printf("byte        v1  = %d\n", v1);
-        printf("short       v2  = %d\n", v2);
-        printf("integer     v3  = %d\n", v3);
-        printf("long        v4  = %lld\n", v4);
+        fprintf (outf, "byte        v1  = %d\n", v1);
+        fprintf (outf, "short       v2  = %d\n", v2);
+        fprintf (outf, "integer     v3  = %d\n", v3);
+        fprintf (outf, "long        v4  = %lld\n", v4);
 
-        printf("uns.byte    v5  = %u\n", v5);
-        printf("uns.short   v6  = %u\n", v6);
-        printf("uns.int     v7  = %u\n", v7);
-        printf("uns.long    v8  = %llu\n", v8);
+        fprintf (outf, "uns.byte    v5  = %u\n", v5);
+        fprintf (outf, "uns.short   v6  = %u\n", v6);
+        fprintf (outf, "uns.int     v7  = %u\n", v7);
+        fprintf (outf, "uns.long    v8  = %llu\n", v8);
 
-        printf("float       v9  = %g\n", v9);
-        printf("double      v10 = %g\n", v10);
+        fprintf (outf, "float       v9  = %g\n", v9);
+        fprintf (outf, "double      v10 = %g\n", v10);
 
-        printf("string      v11 = %s\n", v11);
+        fprintf (outf, "string      v11 = %s\n", v11);
 
-        printf("complex     v12 = (%g, i%g)\n", v12.r, v12.i);
-        printf("dbl-complex v13 = (%g, i%g)\n", v13.r, v13.i);
+        fprintf (outf, "complex     v12 = (%g, i%g)\n", v12.r, v12.i);
+        fprintf (outf, "dbl-complex v13 = (%g, i%g)\n", v13.r, v13.i);
     }
 
     adios_read_close (f);
     MPI_Barrier (comm);
     adios_read_finalize_method (ADIOS_READ_METHOD_BP);
+    fclose (outf);
     MPI_Finalize ();
 
     return 0;
diff --git a/tests/suite/programs/examples/scalars/scalars_read_F.F90 b/tests/suite/programs/examples/scalars/scalars_read_F.F90
index 3c4bb83..46e094e 100644
--- a/tests/suite/programs/examples/scalars/scalars_read_F.F90
+++ b/tests/suite/programs/examples/scalars/scalars_read_F.F90
@@ -46,6 +46,8 @@ program scalars_read
     call MPI_Comm_rank (comm, rank, ierr)
     call MPI_Comm_size (comm, size, ierr);
 
+    OPEN(1,FILE="f_read.txt",FORM="FORMATTED",STATUS="REPLACE",ACTION="WRITE")
+
     call adios_read_init_method (method, comm, "verbose=3", ierr);
 
     call adios_read_open (f, filename, method, comm, ADIOS_LOCKMODE_NONE, 1.0, ierr);
@@ -74,23 +76,23 @@ program scalars_read
     ! the above variables contain the value only at this point
 
     if (rank == 0) then
-        write (*, '("int*1      v1  = ",i3)') v1
-        write (*, '("int*2      v2  = ",i3)') v2
-        write (*, '("int*4      v3  = ",i3)') v3
-        write (*, '("int*8      v4  = ",i3)') v4
+        write (1, '("int*1      v1  = ",i3)') v1
+        write (1, '("int*2      v2  = ",i3)') v2
+        write (1, '("int*4      v3  = ",i3)') v3
+        write (1, '("int*8      v4  = ",i3)') v4
 
-        write (*, '("int*1      v5  = ",i3)') v5
-        write (*, '("int*2      v6  = ",i3)') v6
-        write (*, '("int*4      v7  = ",i3)') v7
-        write (*, '("int*8      v8  = ",i3)') v8
+        write (1, '("int*1      v5  = ",i3)') v5
+        write (1, '("int*2      v6  = ",i3)') v6
+        write (1, '("int*4      v7  = ",i3)') v7
+        write (1, '("int*8      v8  = ",i3)') v8
 
-        write (*, '("real*4     v9  = ",f6.2)') v9
-        write (*, '("real*8     v10 = ",f6.2)') v10
+        write (1, '("real*4     v9  = ",f6.2)') v9
+        write (1, '("real*8     v10 = ",f6.2)') v10
 
-        write (*, '("string     v11 = ",a)') trim(v11)
+        write (1, '("string     v11 = ",a)') trim(v11)
 
-        write (*, '("complex*8  v12 = (",f6.2,", ", f6.2,")")') v12
-        write (*, '("complex*16 v13 = (",f6.2,", ", f6.2,")")') v13
+        write (1, '("complex*8  v12 = (",f6.2,", ", f6.2,")")') v12
+        write (1, '("complex*16 v13 = (",f6.2,", ", f6.2,")")') v13
     endif
 
     call adios_read_close (f, ierr)
@@ -98,5 +100,7 @@ program scalars_read
     call adios_read_finalize_method (method, ierr);
     call MPI_Finalize (ierr);
 
+    CLOSE(UNIT=1)
+
 end program
 
diff --git a/tests/suite/programs/many_vars.c b/tests/suite/programs/many_vars.c
index 21eec35..f8b49c4 100644
--- a/tests/suite/programs/many_vars.c
+++ b/tests/suite/programs/many_vars.c
@@ -173,7 +173,7 @@ int main (int argc, char ** argv)
         printE ("%s\n", adios_errmsg());
     }
 
-    adios_declare_group (&m_adios_group, "multiblock", "iter", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "multiblock", "iter", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "", "");
 
 
diff --git a/tests/suite/programs/reuse_dim.c b/tests/suite/programs/reuse_dim.c
index 05ff720..f3b2648 100755
--- a/tests/suite/programs/reuse_dim.c
+++ b/tests/suite/programs/reuse_dim.c
@@ -101,7 +101,7 @@ int declare_group ()
 
     adios_set_max_buffer_size (10);
 
-    adios_declare_group (&m_adios_group, "restart", "iter", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "restart", "iter", adios_stat_default);
     adios_select_method (m_adios_group, "MPI", "verbose=2", "");
 
     adios_define_var (m_adios_group, "NX"
diff --git a/tests/suite/programs/selections.c b/tests/suite/programs/selections.c
index 9f3adda..db8ec35 100644
--- a/tests/suite/programs/selections.c
+++ b/tests/suite/programs/selections.c
@@ -182,7 +182,7 @@ int main (int argc, char ** argv)
 
     
     if (do_write) {
-        adios_declare_group (&m_adios_group, "selections", "iter", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "selections", "iter", adios_stat_default);
         adios_select_method (m_adios_group, write_method, "verbose=2", "");
 
         define_vars();
diff --git a/tests/suite/programs/steps_write.c b/tests/suite/programs/steps_write.c
index 938e5aa..2077561 100644
--- a/tests/suite/programs/steps_write.c
+++ b/tests/suite/programs/steps_write.c
@@ -44,7 +44,7 @@ int main (int argc, char ** argv)
         int64_t       m_adios_group;
         int64_t       m_adios_file;
 
-        adios_declare_group (&m_adios_group, "steps", "", adios_flag_yes);
+        adios_declare_group (&m_adios_group, "steps", "", adios_stat_default);
         adios_select_method (m_adios_group, "MPI", "", "");
 
 
diff --git a/tests/suite/reference/attributes_bpls.txt b/tests/suite/reference/attributes_bpls.txt
index d35afc6..8e36b8d 100644
--- a/tests/suite/reference/attributes_bpls.txt
+++ b/tests/suite/reference/attributes_bpls.txt
@@ -12,7 +12,7 @@ File info:
   integer  rank                          scalar = 0
   double   mean                          scalar = 4.5
   string   date                          scalar = "Nov, 2009"
-  double   temperature                   {5, 10} = 0 / 49 / 24.5 / 14.4309
+  double   temperature                   {5, 10} = 0 / 49 / null  / null 
   integer  temperature/number of levels  attr   = 1
   string   temperature/description       attr   = "Global array written from 'size' processes"
   double   temperature/mean value        attr   = 4.5
diff --git a/tests/suite/reference/global_array_no_xml_bpls.txt b/tests/suite/reference/global_array_no_xml_bpls.txt
index 688c7c4..6229a0f 100644
--- a/tests/suite/reference/global_array_no_xml_bpls.txt
+++ b/tests/suite/reference/global_array_no_xml_bpls.txt
@@ -10,7 +10,7 @@ File info:
   integer  NX             scalar = 100
   integer  Global_bounds  scalar = 2100
   integer  Offsets        scalar = 0
-  double   temperature    {2100} = 0 / 2099 / 1049.5 / 606.218
+  double   temperature    {2100} = 0 / 2099 / null  / null 
     (   0)    0 1 2 3 4 5 6 7 8 9
     (  10)    10 11 12 13 14 15 16 17 18 19
     (  20)    20 21 22 23 24 25 26 27 28 29
diff --git a/tests/suite/reference/global_array_no_xml_f_bpls.txt b/tests/suite/reference/global_array_no_xml_f_bpls.txt
index 28e14cb..fd84ffa 100644
--- a/tests/suite/reference/global_array_no_xml_f_bpls.txt
+++ b/tests/suite/reference/global_array_no_xml_f_bpls.txt
@@ -10,7 +10,7 @@ File info:
   integer  NX           scalar = 10
   integer  G            scalar = 140
   integer  O            scalar = 0
-  double   temperature  {140} = 0 / 139 / 69.5 / 40.4135
+  double   temperature  {140} = 0 / 139 / null  / null 
     (  0)    0 1 2 3 4 5 6 7 8 9
     ( 10)    10 11 12 13 14 15 16 17 18 19
     ( 20)    20 21 22 23 24 25 26 27 28 29
diff --git a/tests/suite/reference/global_array_time_bpls.txt b/tests/suite/reference/global_array_time_bpls.txt
index 5409d2c..0274eb7 100644
--- a/tests/suite/reference/global_array_time_bpls.txt
+++ b/tests/suite/reference/global_array_time_bpls.txt
@@ -2,6 +2,6 @@
   integer  NY                       13*scalar = 1 / 1 / 1 / 0
   integer  size                     13*scalar = 9 / 9 / 9 / 0
   integer  rank                     13*scalar = 0 / 8 / 4 / 2.58199
-  double   temperature              13*{9, 10} = 100 / 1389 / 744.5 / 375.067
-  double   pressure                 13*{9, 1} = 1000 / 13008 / 7004 / 3741.66
+  double   temperature              13*{9, 10} = 100 / 1389 / null  / null 
+  double   pressure                 13*{9, 1} = 1000 / 13008 / null  / null 
   string   temperature/description  attr   = "Global array written from 'size' processes over several timesteps"
diff --git a/tests/suite/reference/local_array_C_bpls.txt b/tests/suite/reference/local_array_C_bpls.txt
index 8057cf9..eb8ac1c 100644
--- a/tests/suite/reference/local_array_C_bpls.txt
+++ b/tests/suite/reference/local_array_C_bpls.txt
@@ -9,5 +9,5 @@ File info:
 
   integer  NX                  scalar = 10
   integer  NY                  scalar = 100
-  double   var_double_2Darray  {10, 100} = 0 / 49.99 / 24.995 / 14.4338
-  integer  var_int_1Darray     {10} = 0 / 49 / 24.5 / 14.4309
+  double   var_double_2Darray  {10, 100} = 0 / 49.99 / null  / null 
+  integer  var_int_1Darray     {10} = 0 / 49 / null  / null 
diff --git a/tests/suite/reference/no_xml_write_byid_bpls.txt b/tests/suite/reference/no_xml_write_byid_bpls.txt
index ebd3f35..b21d8dc 100644
--- a/tests/suite/reference/no_xml_write_byid_bpls.txt
+++ b/tests/suite/reference/no_xml_write_byid_bpls.txt
@@ -7,7 +7,7 @@ File info:
   bp version:    3
   statistics:    Min / Max / Avg / Std_dev
 
-  double   temperature    {2100} = 0 / 2099 / 1049.5 / 606.218
+  double   temperature    {2100} = 0 / 2099 / null  / null 
     (   0)    0 1 2 3 4 5 6 7 8 9
     (  10)    10 11 12 13 14 15 16 17 18 19
     (  20)    20 21 22 23 24 25 26 27 28 29
diff --git a/tests/suite/reference/no_xml_write_byid_f_bpls.txt b/tests/suite/reference/no_xml_write_byid_f_bpls.txt
index 1185625..da7098a 100644
--- a/tests/suite/reference/no_xml_write_byid_f_bpls.txt
+++ b/tests/suite/reference/no_xml_write_byid_f_bpls.txt
@@ -7,7 +7,7 @@ File info:
   bp version:    3
   statistics:    Min / Max / Avg / Std_dev
 
-  double   temperature    {140} = 0 / 139 / 69.5 / 40.4135
+  double   temperature    {140} = 0 / 139 / null  / null 
     (  0)    0 1 2 3 4 5 6 7 8 9
     ( 10)    10 11 12 13 14 15 16 17 18 19
     ( 20)    20 21 22 23 24 25 26 27 28 29
diff --git a/tests/suite/test.sh b/tests/suite/test.sh
index 95ff3fe..575d20a 100755
--- a/tests/suite/test.sh
+++ b/tests/suite/test.sh
@@ -75,9 +75,15 @@ do
 done
 shift $(($OPTIND - 1))
 
-# get source path
-SRCDIR=`dirname $0`
+# get source path 
+pushd `dirname $0` >/dev/null
+#SRCDIR=`dirname $0`
+SRCDIR=$PWD
 TRUNKDISTANCE=../..
+pushd $TRUNKDISTANCE >/dev/null
+BUILDTRUNKDIR=$PWD
+popd >/dev/null
+popd >/dev/null
 
 if [ "${SRCDIR:0:1}" != "/" ]; then
     echo "WARNING: Jobs on some systems do not have access to any directory but to "
@@ -88,7 +94,7 @@ if [ "${SRCDIR:0:1}" != "/" ]; then
 fi
 
 # check if Fortran codes were built
-if [ -f $SRCDIR/$TRUNKDISTANCE/src/libadiosf.a ]; then
+if [ -f $BUILDTRUNKDIR/src/libadiosf.a ]; then
     HAVE_FORTRAN=yes
 else
     echo "WARNING: Fortran binaries are not built, so test will not use them"
@@ -97,7 +103,8 @@ fi
 
 # Print info before running tests
 echo "Settings:"
-echo "  Test source directory:  $SRCDIR"
+echo "  Test script directory:  $SRCDIR"
+echo "  Test source trunk dir:  $BUILDTRUNKDIR"
 echo "  Run command:            $MPIRUN"
 echo "  Run command np option:  $NP_MPIRUN"
 echo "  Max. processes to use:  $MAXPROCS"
@@ -140,7 +147,7 @@ for TESTSCRIPT in $TESTS; do
     pushd work.$TEST >/dev/null
     if [ "${SRCDIR:0:1}" == "/" ]; then
         TESTSRCDIR=$SRCDIR       
-        TRUNKDIR=$SRCDIR/$TRUNKDISTANCE
+        TRUNKDIR=$BUILDTRUNKDIR
     else
         # we are one level deeper now
         TESTSRCDIR=../$SRCDIR
diff --git a/tests/suite/tests/01_scalars.sh b/tests/suite/tests/01_scalars.sh
index bd67b7c..044ba13 100755
--- a/tests/suite/tests/01_scalars.sh
+++ b/tests/suite/tests/01_scalars.sh
@@ -46,7 +46,7 @@ if [ $? != 0 ]; then
 fi
 
 echo "Run C scalars_read"
-$MPIRUN $NP_MPIRUN $PROCS $EXEOPT ./scalars_read_C > c_read.txt
+$MPIRUN $NP_MPIRUN $PROCS $EXEOPT ./scalars_read_C  # produces  c_read.txt
 EX=$?
 if [ $? != 0 ]; then
     echo "ERROR: C version of scalars_read failed with exit code $EX"
@@ -90,7 +90,7 @@ if [ $? != 0 ]; then
 fi
 
 echo "Run Fortran scalars_read"
-$MPIRUN $NP_MPIRUN $PROCS $EXEOPT ./scalars_read_F > f_read.txt
+$MPIRUN $NP_MPIRUN $PROCS $EXEOPT ./scalars_read_F  # produces f_read.txt
 EX=$?
 if [ $? != 0 ]; then
     echo "ERROR: Fortran version of scalars_read failed with exit code $EX"
diff --git a/tests/suite/tests/05_global_array_time.sh b/tests/suite/tests/05_global_array_time.sh
index 0227c92..5f1b585 100755
--- a/tests/suite/tests/05_global_array_time.sh
+++ b/tests/suite/tests/05_global_array_time.sh
@@ -23,6 +23,7 @@ cp $SRCDIR/programs/examples/global_array_time/global_array_time_write_C .
 cp $SRCDIR/programs/examples/global_array_time/global_array_time_read_as_file_C .
 cp $SRCDIR/programs/examples/global_array_time/global_array_time_read_as_stream_C .
 cp $SRCDIR/programs/examples/global_array_time/global_array_time_C.xml .
+cp $SRCDIR/programs/examples/global_array_time/global_array_time_aggr_C.xml .
 
 # Insert transform=X if requested by user
 add_transform_to_xmls
@@ -41,6 +42,7 @@ diff -q c_bpls.txt $SRCDIR/reference/global_array_time_bpls.txt
 if [ $? != 0 ]; then
     echo "ERROR: global_array_time_write_C produced a file different from the reference."
     echo "Compare \"bpls -la $PWD/global_array_time_C.bp | grep -v -e endianness -e 'file size'\" to reference $SRCDIR/reference/global_array_time_bpls.txt"
+    exit 1
 fi
 
 ###################################################
@@ -81,12 +83,59 @@ if [ $? != 0 ]; then
     exit 1
 fi
 
+###################################################
+# run the time-aggregation test
+
+echo "Run C global_array_time_write_C with time-aggregation turned on in subdir time_aggr/ with various buffer sizes:"
+mkdir -p time_aggr
+pushd time_aggr >/dev/null
+$TRUNKDIR/utils/bpls/bpls -la ../global_array_time_C.bp -D -d temperature -n 10 > c_bpls_non_aggr.txt
+
+for BUFSIZE in 3000 300000 10000 1000 0 ; do
+            
+    echo "  Run time-aggregation with buffer size = $BUFSIZE"
+    cat ../global_array_time_aggr_C.xml | sed -e "s/buffer-size=[0-9]*/buffer-size=$BUFSIZE/" > global_array_time_C.xml
+    $MPIRUN $NP_MPIRUN $PROCS $EXEOPT ../global_array_time_write_C
+    EX=$?
+    if [ ! -f global_array_time_C.bp ]; then
+        echo "ERROR: global_array_time_write_C failed. No BP file is created. Exit code=$EX"
+        exit 1
+    fi
+
+    mv global_array_time_C.xml global_array_time_C_$BUFSIZE.xml
+    mv global_array_time_C.bp  global_array_time_C_$BUFSIZE.bp
+
+    echo "    Check output with bpls"
+    $TRUNKDIR/utils/bpls/bpls -la global_array_time_C_$BUFSIZE.bp | grep -v -e endianness -e 'file size' > c_bpls_$BUFSIZE.txt
+    diff -q c_bpls_$BUFSIZE.txt $SRCDIR/reference/global_array_time_bpls.txt
+    if [ $? != 0 ]; then
+        echo "ERROR: global_array_time_write_C with time aggregation with buffer size $BUFSIZE produced a file different from the reference."
+        echo "Compare \"bpls -la $PWD/global_array_time_C_$BUFSIZE.bp | grep -v -e endianness -e 'file size'\" to reference $SRCDIR/reference/global_array_time_bpls.txt"
+        exit 1
+    fi
+
+    echo "    Check output with bpls even more. Dump data and compare to non-time-aggregated version"
+    $TRUNKDIR/utils/bpls/bpls -la    global_array_time_C_$BUFSIZE.bp -D -d temperature -n 10 > c_bpls_aggr_$BUFSIZE.txt
+    diff -q c_bpls_non_aggr.txt c_bpls_aggr_$BUFSIZE.txt
+    if [ $? != 0 ]; then
+        echo "ERROR: global_array_time_write_C with time aggregation with buffer size $BUFSIZE produced a file different from the file without time aggregation."
+        echo "Compare \"bpls -la $PWD/global_array_time_C.bp -D -d temperature -n 10\" "
+        echo "to      \"bpls -la $PWD/../global_array_time_C_$BUFSIZE.bp -D -d temperature -n 10\" "
+        exit 1
+    fi
+done
+
+
+popd >/dev/null
+
 
+
+###################################################
+# run the Fortran tests too if available
 if [ $HAVE_FORTRAN != yes ]; then
     exit 0
 fi
-###################################################
-# run the Fortran tests too if available
+
 
 cp $SRCDIR/programs/examples/global_array_time/global_array_time_write_F .
 cp $SRCDIR/programs/examples/global_array_time/global_array_time_F.xml .
diff --git a/tests/suite/tests/19_query.sh b/tests/suite/tests/19_query.sh
index 13c885e..6d87fb2 100755
--- a/tests/suite/tests/19_query.sh
+++ b/tests/suite/tests/19_query.sh
@@ -238,9 +238,11 @@ function query_datasets() {
           echo "====== COMPUTING EXPECTED OUTPUT OF QUERY $QUERY_NAME ON DATASET $DSID IN $FILEMODE MODE ======"
           echo
           set -o xtrace
-          $MPIRUN_SERIAL "$QUERY_SEQSCAN_EXE_LOCAL" "$NOINDEX_DS" "$QUERY_XML_LOCAL" "$FILEMODE" > "$EXPECTED_POINTS_FILE" ||
+          $MPIRUN_SERIAL "$QUERY_SEQSCAN_EXE_LOCAL" "$NOINDEX_DS" "$QUERY_XML_LOCAL" "$FILEMODE" > "$EXPECTED_POINTS_FILE".raw ||
             die "ERROR: $QUERY_SEQSCAN_EXE_LOCAL failed with exit code $?"
           set +o xtrace
+          # filter out job manager's output line at the end of stdout
+          grep -v "^Application" "$EXPECTED_POINTS_FILE".raw > "$EXPECTED_POINTS_FILE"
         
           # NOTE: the sequential scan program produces a point list that is guaranteed to be sorted in C array order, so no need to sort it here
         done
@@ -270,9 +272,12 @@ function query_datasets() {
               echo "====== RUNNING QUERY $QUERY_NAME USING QUERY ENGINE $QUERY_ENGINE ON DATASET $DSID IN $FILEMODE MODE ======"
               echo
               set -o xtrace
-              $MPIRUN_SERIAL "$QUERY_EXE_LOCAL" "$INDEXED_DS" "$QUERY_XML_LOCAL" "$QUERY_ENGINE" "$FILEMODE" > "$OUTPUT_POINTS_FILE" ||
+              $MPIRUN_SERIAL "$QUERY_EXE_LOCAL" "$INDEXED_DS" "$QUERY_XML_LOCAL" "$QUERY_ENGINE" "$FILEMODE" > "$OUTPUT_POINTS_FILE".raw ||
                 die "ERROR: $QUERY_EXE_LOCAL failed with exit code $?"
               set +o xtrace
+              # filter out job manager's output line at the end of stdout
+              grep -v "^Application" "$OUTPUT_POINTS_FILE".raw > "$OUTPUT_POINTS_FILE"
+
 
               # Sort the output points in C array order, since the query engine makes no guarantee as to the ordering of the results
               # Sort file in place (-o FILE) with numerical sort order (-n) on each of the first 9 fields (-k1,1 ...)
diff --git a/tests/test_src/CMakeLists.txt b/tests/test_src/CMakeLists.txt
index 370cab1..6cfe1d6 100644
--- a/tests/test_src/CMakeLists.txt
+++ b/tests/test_src/CMakeLists.txt
@@ -12,7 +12,7 @@ link_directories(${PROJECT_BINARY_DIR}/tests/test_src)
 set(C_PROGS_READONLY hashtest copy_subvolume text_to_pairstruct test_strutil points_1DtoND trim_spaces)
 
 if(BUILD_WRITE)
-    set(C_PROGS_WRITE transforms_specparse group_free_test query_minmax read_points_2d read_points_3d)
+    set(C_PROGS_WRITE transforms_specparse group_free_test query_minmax read_points_2d read_points_3d array_attribute)
 endif(BUILD_WRITE)
 
 if(BUILD_FORTRAN)
diff --git a/tests/test_src/Makefile.am b/tests/test_src/Makefile.am
index 1478a71..036f227 100644
--- a/tests/test_src/Makefile.am
+++ b/tests/test_src/Makefile.am
@@ -12,7 +12,7 @@
 test_C = hashtest copy_subvolume text_to_pairstruct test_strutil points_1DtoND trim_spaces
 
 if BUILD_WRITE
-    test_C += transforms_specparse group_free_test query_minmax read_points_2d read_points_3d
+    test_C += transforms_specparse group_free_test query_minmax read_points_2d array_attribute array_attribute
 endif
 
 if BUILD_FORTRAN
@@ -103,11 +103,11 @@ read_points_2d_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_
 read_points_2d_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
 read_points_2d.o: read_points_2d.c
 
-read_points_3d_SOURCES=read_points_3d.c
-read_points_3d_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-read_points_3d_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
-read_points_3d_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
-read_points_3d.o: read_points_3d.c
+array_attribute_SOURCES=array_attribute.c
+array_attribute_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+array_attribute_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+array_attribute_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+array_attribute.o: array_attribute.c
 
 #
 # FORTRAN Tests
diff --git a/tests/test_src/Makefile.in b/tests/test_src/Makefile.in
index b8fec8e..e396bdb 100644
--- a/tests/test_src/Makefile.in
+++ b/tests/test_src/Makefile.in
@@ -88,7 +88,7 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
- at BUILD_WRITE_TRUE@am__append_1 = transforms_specparse group_free_test query_minmax read_points_2d read_points_3d
+ at BUILD_WRITE_TRUE@am__append_1 = transforms_specparse group_free_test query_minmax read_points_2d array_attribute array_attribute
 check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
 TESTS = $(am__EXEEXT_2) $(am__EXEEXT_3)
 subdir = tests/test_src
@@ -122,7 +122,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -141,20 +141,30 @@ CONFIG_CLEAN_VPATH_FILES =
 @BUILD_WRITE_TRUE@	group_free_test$(EXEEXT) \
 @BUILD_WRITE_TRUE@	query_minmax$(EXEEXT) \
 @BUILD_WRITE_TRUE@	read_points_2d$(EXEEXT) \
- at BUILD_WRITE_TRUE@	read_points_3d$(EXEEXT)
+ at BUILD_WRITE_TRUE@	array_attribute$(EXEEXT) \
+ at BUILD_WRITE_TRUE@	array_attribute$(EXEEXT)
 am__EXEEXT_2 = hashtest$(EXEEXT) copy_subvolume$(EXEEXT) \
 	text_to_pairstruct$(EXEEXT) test_strutil$(EXEEXT) \
 	points_1DtoND$(EXEEXT) trim_spaces$(EXEEXT) $(am__EXEEXT_1)
 @BUILD_FORTRAN_TRUE at am__EXEEXT_3 = selection_api$(EXEEXT)
-am_copy_subvolume_OBJECTS = copy_subvolume-copy_subvolume.$(OBJEXT)
-copy_subvolume_OBJECTS = $(am_copy_subvolume_OBJECTS)
+am_array_attribute_OBJECTS =  \
+	array_attribute-array_attribute.$(OBJEXT)
+array_attribute_OBJECTS = $(am_array_attribute_OBJECTS)
 am__DEPENDENCIES_1 =
-copy_subvolume_DEPENDENCIES =  \
-	$(top_builddir)/src/libadiosread_nompi.a $(am__DEPENDENCIES_1)
+array_attribute_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
+	$(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
+array_attribute_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(AM_CFLAGS) $(CFLAGS) $(array_attribute_LDFLAGS) $(LDFLAGS) \
+	-o $@
+am_copy_subvolume_OBJECTS = copy_subvolume-copy_subvolume.$(OBJEXT)
+copy_subvolume_OBJECTS = $(am_copy_subvolume_OBJECTS)
+copy_subvolume_DEPENDENCIES =  \
+	$(top_builddir)/src/libadiosread_nompi.a $(am__DEPENDENCIES_1)
 copy_subvolume_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(copy_subvolume_LDFLAGS) $(LDFLAGS) -o \
@@ -197,14 +207,6 @@ read_points_2d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(AM_CFLAGS) $(CFLAGS) $(read_points_2d_LDFLAGS) $(LDFLAGS) -o \
 	$@
-am_read_points_3d_OBJECTS = read_points_3d-read_points_3d.$(OBJEXT)
-read_points_3d_OBJECTS = $(am_read_points_3d_OBJECTS)
-read_points_3d_DEPENDENCIES = $(top_builddir)/src/libadios_nompi.a \
-	$(am__DEPENDENCIES_1)
-read_points_3d_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(read_points_3d_LDFLAGS) $(LDFLAGS) -o \
-	$@
 am_selection_api_OBJECTS = selection_api.$(OBJEXT)
 selection_api_OBJECTS = $(am_selection_api_OBJECTS)
 selection_api_DEPENDENCIES =  \
@@ -294,16 +296,16 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(copy_subvolume_SOURCES) $(group_free_test_SOURCES) \
-	$(hashtest_SOURCES) $(points_1DtoND_SOURCES) \
-	$(query_minmax_SOURCES) $(read_points_2d_SOURCES) \
-	$(read_points_3d_SOURCES) $(selection_api_SOURCES) \
+SOURCES = $(array_attribute_SOURCES) $(copy_subvolume_SOURCES) \
+	$(group_free_test_SOURCES) $(hashtest_SOURCES) \
+	$(points_1DtoND_SOURCES) $(query_minmax_SOURCES) \
+	$(read_points_2d_SOURCES) $(selection_api_SOURCES) \
 	$(test_strutil_SOURCES) $(text_to_pairstruct_SOURCES) \
 	$(transforms_specparse_SOURCES) $(trim_spaces_SOURCES)
-DIST_SOURCES = $(copy_subvolume_SOURCES) $(group_free_test_SOURCES) \
-	$(hashtest_SOURCES) $(points_1DtoND_SOURCES) \
-	$(query_minmax_SOURCES) $(read_points_2d_SOURCES) \
-	$(read_points_3d_SOURCES) $(selection_api_SOURCES) \
+DIST_SOURCES = $(array_attribute_SOURCES) $(copy_subvolume_SOURCES) \
+	$(group_free_test_SOURCES) $(hashtest_SOURCES) \
+	$(points_1DtoND_SOURCES) $(query_minmax_SOURCES) \
+	$(read_points_2d_SOURCES) $(selection_api_SOURCES) \
 	$(test_strutil_SOURCES) $(text_to_pairstruct_SOURCES) \
 	$(transforms_specparse_SOURCES) $(trim_spaces_SOURCES)
 am__can_run_installinfo = \
@@ -749,6 +751,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -870,10 +875,10 @@ read_points_2d_SOURCES = read_points_2d.c
 read_points_2d_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
 read_points_2d_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
 read_points_2d_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
-read_points_3d_SOURCES = read_points_3d.c
-read_points_3d_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
-read_points_3d_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
-read_points_3d_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
+array_attribute_SOURCES = array_attribute.c
+array_attribute_LDADD = $(top_builddir)/src/libadios_nompi.a $(ADIOSLIB_SEQ_LDADD)
+array_attribute_LDFLAGS = $(AM_LDFLAGS) $(ADIOSLIB_SEQ_LDFLAGS) $(ADIOSLIB_EXTRA_LDFLAGS)
+array_attribute_CPPFLAGS = -I$(top_srcdir)/src $(ADIOSLIB_SEQ_CPPFLAGS) -I$(top_builddir)/src/public
 selection_api_SOURCES = selection_api.F90
 selection_api_LDADD = $(top_builddir)/src/libadiosreadf_nompi.a $(ADIOSREADLIB_SEQ_LDADD)
 selection_api_LDFLAGS = $(AM_LDFLAGS) $(ADIOSREADLIB_SEQ_LDFLAGS)
@@ -927,6 +932,10 @@ clean-checkPROGRAMS:
 	echo " rm -f" $$list; \
 	rm -f $$list
 
+array_attribute$(EXEEXT): $(array_attribute_OBJECTS) $(array_attribute_DEPENDENCIES) $(EXTRA_array_attribute_DEPENDENCIES) 
+	@rm -f array_attribute$(EXEEXT)
+	$(AM_V_CCLD)$(array_attribute_LINK) $(array_attribute_OBJECTS) $(array_attribute_LDADD) $(LIBS)
+
 copy_subvolume$(EXEEXT): $(copy_subvolume_OBJECTS) $(copy_subvolume_DEPENDENCIES) $(EXTRA_copy_subvolume_DEPENDENCIES) 
 	@rm -f copy_subvolume$(EXEEXT)
 	$(AM_V_CCLD)$(copy_subvolume_LINK) $(copy_subvolume_OBJECTS) $(copy_subvolume_LDADD) $(LIBS)
@@ -951,10 +960,6 @@ read_points_2d$(EXEEXT): $(read_points_2d_OBJECTS) $(read_points_2d_DEPENDENCIES
 	@rm -f read_points_2d$(EXEEXT)
 	$(AM_V_CCLD)$(read_points_2d_LINK) $(read_points_2d_OBJECTS) $(read_points_2d_LDADD) $(LIBS)
 
-read_points_3d$(EXEEXT): $(read_points_3d_OBJECTS) $(read_points_3d_DEPENDENCIES) $(EXTRA_read_points_3d_DEPENDENCIES) 
-	@rm -f read_points_3d$(EXEEXT)
-	$(AM_V_CCLD)$(read_points_3d_LINK) $(read_points_3d_OBJECTS) $(read_points_3d_LDADD) $(LIBS)
-
 selection_api$(EXEEXT): $(selection_api_OBJECTS) $(selection_api_DEPENDENCIES) $(EXTRA_selection_api_DEPENDENCIES) 
 	@rm -f selection_api$(EXEEXT)
 	$(AM_V_FCLD)$(selection_api_LINK) $(selection_api_OBJECTS) $(selection_api_LDADD) $(LIBS)
@@ -981,13 +986,13 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/array_attribute-array_attribute.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/copy_subvolume-copy_subvolume.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/group_free_test-group_free_test.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hashtest-hashtest.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/points_1DtoND-points_1DtoND.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/query_minmax-query_minmax.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/read_points_2d-read_points_2d.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/read_points_3d-read_points_3d.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_strutil-test_strutil.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/text_to_pairstruct-text_to_pairstruct.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/transforms_specparse-transforms_specparse.Po at am__quote@
@@ -1023,6 +1028,20 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
+array_attribute-array_attribute.o: array_attribute.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(array_attribute_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT array_attribute-array_attribute.o -MD -MP -MF $(DEPDIR)/array_attribute-array_attribute.Tpo -c -o array_attribute-array_attribute.o `test -f 'array_attribute.c' || echo '$(srcdir)/'`array_attribute.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/array_attribute-array_attribute.Tpo $(DEPDIR)/array_attribute-array_attribute.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='array_attribute.c' object='array_attribute-array_attribute.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(array_attribute_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o array_attribute-array_attribute.o `test -f 'array_attribute.c' || echo '$(srcdir)/'`array_attribute.c
+
+array_attribute-array_attribute.obj: array_attribute.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(array_attribute_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT array_attribute-array_attribute.obj -MD -MP -MF $(DEPDIR)/array_attribute-array_attribute.Tpo -c -o array_attribute-array_attribute.obj `if test -f 'array_attribute.c'; then $(CYGPATH_W) 'array_attribute.c'; else $(CYGPATH_W) '$(srcdir)/array_attribute.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/array_attribute-array_attribute.Tpo $(DEPDIR)/array_attribute-array_attribute.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='array_attribute.c' object='array_attribute-array_attribute.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(array_attribute_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o array_attribute-array_attribute.obj `if test -f 'array_attribute.c'; then $(CYGPATH_W) 'array_attribute.c'; else $(CYGPATH_W) '$(srcdir)/array_attribute.c'; fi`
+
 copy_subvolume-copy_subvolume.o: copy_subvolume.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(copy_subvolume_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT copy_subvolume-copy_subvolume.o -MD -MP -MF $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo -c -o copy_subvolume-copy_subvolume.o `test -f 'copy_subvolume.c' || echo '$(srcdir)/'`copy_subvolume.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/copy_subvolume-copy_subvolume.Tpo $(DEPDIR)/copy_subvolume-copy_subvolume.Po
@@ -1107,20 +1126,6 @@ read_points_2d-read_points_2d.obj: read_points_2d.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_2d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_points_2d-read_points_2d.obj `if test -f 'read_points_2d.c'; then $(CYGPATH_W) 'read_points_2d.c'; else $(CYGPATH_W) '$(srcdir)/read_points_2d.c'; fi`
 
-read_points_3d-read_points_3d.o: read_points_3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_3d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT read_points_3d-read_points_3d.o -MD -MP -MF $(DEPDIR)/read_points_3d-read_points_3d.Tpo -c -o read_points_3d-read_points_3d.o `test -f 'read_points_3d.c' || echo '$(srcdir)/'`read_points_3d.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_points_3d-read_points_3d.Tpo $(DEPDIR)/read_points_3d-read_points_3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read_points_3d.c' object='read_points_3d-read_points_3d.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_3d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_points_3d-read_points_3d.o `test -f 'read_points_3d.c' || echo '$(srcdir)/'`read_points_3d.c
-
-read_points_3d-read_points_3d.obj: read_points_3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_3d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT read_points_3d-read_points_3d.obj -MD -MP -MF $(DEPDIR)/read_points_3d-read_points_3d.Tpo -c -o read_points_3d-read_points_3d.obj `if test -f 'read_points_3d.c'; then $(CYGPATH_W) 'read_points_3d.c'; else $(CYGPATH_W) '$(srcdir)/read_points_3d.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/read_points_3d-read_points_3d.Tpo $(DEPDIR)/read_points_3d-read_points_3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='read_points_3d.c' object='read_points_3d-read_points_3d.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(read_points_3d_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o read_points_3d-read_points_3d.obj `if test -f 'read_points_3d.c'; then $(CYGPATH_W) 'read_points_3d.c'; else $(CYGPATH_W) '$(srcdir)/read_points_3d.c'; fi`
-
 test_strutil-test_strutil.o: test_strutil.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_strutil_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_strutil-test_strutil.o -MD -MP -MF $(DEPDIR)/test_strutil-test_strutil.Tpo -c -o test_strutil-test_strutil.o `test -f 'test_strutil.c' || echo '$(srcdir)/'`test_strutil.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_strutil-test_strutil.Tpo $(DEPDIR)/test_strutil-test_strutil.Po
@@ -1446,9 +1451,9 @@ read_points_2d.log: read_points_2d$(EXEEXT)
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_points_3d.log: read_points_3d$(EXEEXT)
-	@p='read_points_3d$(EXEEXT)'; \
-	b='read_points_3d'; \
+array_attribute.log: array_attribute$(EXEEXT)
+	@p='array_attribute$(EXEEXT)'; \
+	b='array_attribute'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
@@ -1642,7 +1647,7 @@ transforms_specparse.o: transforms_specparse.c
 group_free_test.o: group_free_test.c
 query_minmax.o: query_minmax.c
 read_points_2d.o: read_points_2d.c
-read_points_3d.o: read_points_3d.c
+array_attribute.o: array_attribute.c
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/test_src/array_attribute.c b/tests/test_src/array_attribute.c
new file mode 100644
index 0000000..7df7f26
--- /dev/null
+++ b/tests/test_src/array_attribute.c
@@ -0,0 +1,327 @@
+/* 
+ * ADIOS is freely available under the terms of the BSD license described
+ * in the COPYING file in the top level directory of this source distribution.
+ *
+ * Copyright (c) 2008 - 2009.  UT-BATTELLE, LLC. All rights reserved.
+ */
+
+/* ADIOS C Example: write/read string array and other array attributes
+ *
+ * How to run: ./array_attributes
+ * Output: adios_global_no_xml.bp
+ * ADIOS config file: None
+ *
+*/
+
+/* This example will write/read string array attributes. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <inttypes.h>
+#include <string.h>
+#include "public/adios.h"
+#include "public/adios_types.h"
+#include "public/adios_read.h"
+
+#ifdef DMALLOC
+#include "dmalloc.h"
+#endif
+
+char  filename [] = "array_attribute.bp";
+const int someints[5] = {5,4,3,2,1};
+const double somedoubles[5] = {5.55555, 4.4444, 3.333, 2.22, 1.1};
+char single_string[] = "A single string attribute";
+char *three_strings[] = {"X","Yy","ZzZ"};
+char *patchnames[] = {"arms", "deflector-bottom", "deflector-edge", "deflector-top",
+        "nozzle-inner", "nozzle-outer", "outer", "inlet", "outer-top",
+        "procBoundary0to1", "procBoundary0to2", "procBoundary0to5",
+        "procBoundary0to6", "procBoundary0to7", "procBoundary0to8",
+        "procBoundary0to13", "procBoundary0to14", "procBoundary0to185",
+        "procBoundary0to68", "procBoundary0to71", "procBoundary0to72"};
+char* patchtypes[] = {"wall", "wall", "wall", "wall", "wall", "wall",
+        "patch", "patch", "patch", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor"};
+char* U[] = {"fixedValue", "fixedValue", "fixedValue", "fixedValue",
+        "fixedValue", "fixedValue", "pressureInletOutletVelocity",
+        "flowRateInletVelocity", "pressureInletOutletVelocity",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor"};
+char  U_class[] = "volVectorField";
+char* alphawater[] = {"zeroGradient", "zeroGradient", "zeroGradient",
+        "zeroGradient", "zeroGradient", "zeroGradient", "inletOutlet",
+        "fixedValue", "inletOutlet", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor"};
+char  alphawater_class[] = "volScalarField";
+char* alphaPhi[] = {"calculated", "calculated", "calculated", "calculated",
+        "calculated", "calculated", "calculated", "calculated", "calculated",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor"};
+char  alphaPhi_class[] = "surfaceScalarField";
+char* k[] = {"fixedValue", "fixedValue", "fixedValue", "fixedValue",
+        "fixedValue", "fixedValue", "inletOutlet", "fixedValue", "inletOutlet",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor"};
+char  k_class[] = "volScalarField";
+char* nut[] = {"zeroGradient", "zeroGradient", "zeroGradient", "zeroGradient",
+        "zeroGradient", "zeroGradient", "zeroGradient", "zeroGradient",
+        "zeroGradient", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor"};
+char  nut_class[] = "volScalarField";
+char* p[] = {"calculated", "calculated", "calculated", "calculated",
+        "calculated", "calculated", "calculated", "calculated", "calculated",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor"};
+char  p_class[] = "volScalarField";
+char* p_rgh[] = {"fixedFluxPressure", "fixedFluxPressure", "fixedFluxPressure",
+        "fixedFluxPressure", "fixedFluxPressure", "fixedFluxPressure",
+        "totalPressure", "fixedFluxPressure", "totalPressure", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor", "processor"};
+char  p_rgh_class[] = "volScalarField";
+char* phi[] = {"calculated", "calculated", "calculated", "calculated",
+        "calculated", "calculated", "calculated", "calculated", "calculated",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor", "processor", "processor", "processor",
+        "processor", "processor"};
+char  phi_class[] = "surfaceScalarField";
+
+MPI_Comm comm;
+int rank, size;
+
+int write_attrs();
+int read_attrs();
+
+int main (int argc, char ** argv) 
+{
+
+    int ret;
+    comm = MPI_COMM_WORLD;
+    MPI_Init (&argc, &argv);
+    MPI_Comm_rank (comm, &rank);
+    MPI_Comm_size (comm, &size);
+    adios_init_noxml (comm);
+    adios_read_init_method(ADIOS_READ_METHOD_BP, comm, "");
+    adios_set_max_buffer_size (10);
+
+    ret = write_attrs();
+    if (!ret)
+        ret = read_attrs();
+
+    MPI_Barrier (comm);
+    adios_finalize (rank);
+    adios_read_finalize_method(ADIOS_READ_METHOD_BP);
+
+    MPI_Finalize ();
+    return ret;
+}
+
+int write_attrs()
+{
+    int64_t  m_adios_group;
+    int64_t  m_adios_file;
+    uint64_t adios_groupsize, adios_totalsize;
+    double   var = 3.14159;
+
+    adios_declare_group (&m_adios_group, "attrs", "", adios_stat_default);
+    adios_select_method (m_adios_group, "POSIX", "", "");
+
+    adios_define_var (m_adios_group, "v","", adios_double, "", "", "");
+
+    // add some attributes
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "single_string","", adios_string,  1, single_string);
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "three_strings","", adios_string_array,  3, three_strings);
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "single_int",   "", adios_integer, 1, &someints);
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "single_double","", adios_double,  1, &somedoubles);
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "five_ints",    "", adios_integer, 5, &someints);
+    adios_define_attribute_byvalue (m_adios_group,
+                                    "five_double",  "", adios_double,  5, &somedoubles);
+
+    adios_define_attribute_byvalue (m_adios_group, "region0/patch-names","", adios_string_array,  21, patchnames);
+    adios_define_attribute_byvalue (m_adios_group, "region0/patch-types","", adios_string_array,  21, patchtypes);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/U/patch-types","", adios_string_array,  21, U);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/U/class","", adios_string,  1, U_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/alpha.water/patch-types","", adios_string_array,  21, alphawater);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/alpha.water/class","", adios_string,  1, alphawater_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/alphaPhi/patch-types","", adios_string_array,  21, alphaPhi);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/alphaPhi/class","", adios_string,  1, alphaPhi_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/k/patch-types","", adios_string_array,  21, k);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/k/class","", adios_string,  1, k_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/nut/patch-types","", adios_string_array,  21, nut);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/nut/class","", adios_string,  1, nut_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/p/patch-types","", adios_string_array,  21, p);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/p/class","", adios_string,  1, p_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/p_rgh/patch-types","", adios_string_array,  21, p_rgh);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/p_rgh/class","", adios_string,  1, p_rgh_class);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/phi/patch-types","", adios_string_array,  21, phi);
+    adios_define_attribute_byvalue (m_adios_group, "region0/field/phi/class","", adios_string,  1, phi_class);
+
+
+    adios_open (&m_adios_file, "attrs", filename, "w", comm);
+    adios_groupsize = adios_type_size(adios_double, NULL);
+    adios_group_size (m_adios_file, adios_groupsize, &adios_totalsize);
+    adios_write (m_adios_file, "v", &var);
+    adios_close (m_adios_file);
+    MPI_Barrier (comm);
+    return 0;
+}
+
+void print_attr (enum ADIOS_DATATYPES attr_type, int attr_size, const void * data)
+{
+    int type_size = adios_type_size (attr_type, data);
+    int nelems = attr_size / type_size;
+    int k;
+    const char *p = (const char*)data;
+    for (k=0; k<nelems; k++)
+    {
+        if (k>0) printf(", ");
+        switch (attr_type)
+        {
+            case adios_integer:
+                printf ("%d", *(const int *)p);
+                break;
+            case adios_double:
+                printf ("%e", *(const double *)p);
+                break;
+            case adios_string:
+                printf ("\"%s\"", (const char *)p);
+                break;
+            case adios_string_array:
+                printf ("\"%s\"", *(const char **)p);
+                break;
+            default:
+                printf ("??????\n");
+        }
+        p=p+type_size;
+    }
+    printf("\n");
+}
+
+int check_attr (ADIOS_FILE *f, const char *aname, const void* orig)
+{
+    enum ADIOS_DATATYPES attr_type;
+    int attr_size, i;
+    void * data = NULL;
+    int ret = adios_get_attr(f, aname, &attr_type, &attr_size, &data);
+    if (ret != err_no_error)
+    {
+        printf ("Error getting attribute %s: %s\n", aname, adios_errmsg());
+        return adios_errno;
+    }
+    int type_size = adios_type_size (attr_type, data);
+    int nelems = attr_size / type_size;
+    for (i = 0; i < nelems; ++i) {
+        int different;
+        if (attr_type == adios_string_array) {
+            different = strcmp(  *((char**)data+i),  *((const char**)orig+i)  );
+        } else {
+            different = (memcmp((char*)data+i*type_size, (const char*)orig+i*type_size, type_size));
+        }
+        if (different)
+        {
+            printf ("Attribute %s element %d does not match "
+                    "the original written value on %d bytes:\n\t",
+                    aname, i, type_size);
+            print_attr(attr_type, attr_size, data);
+            printf (" != \n\t");
+            print_attr(attr_type, attr_size, orig);
+            switch (attr_type)
+            {
+                case adios_integer:
+                    printf ("%d != %d\n", *(int *)data, *(const int *)orig);
+                    break;
+                case adios_double:
+                    printf ("%g != %g\n", *(double *)data, *(const double *)orig);
+                    break;
+                case adios_string:
+                    printf ("\"%s\" != \"%s\"\n", (char *)data, (const char *)orig);
+                    break;
+                case adios_string_array:
+                    printf ("\"%s\" != \"%s\"\n", *(char **)data, *(const char **)orig);
+                    break;
+                default:
+                    printf ("??????\n");
+            }
+            return -999;
+        }
+    }
+
+    free (data);
+    return err_no_error;
+}
+
+int read_attrs()
+{
+    int ret = 0;
+    ADIOS_FILE * f = adios_read_open (filename, ADIOS_READ_METHOD_BP,
+                                      comm, ADIOS_LOCKMODE_NONE, 0.0);
+    if (f == NULL)
+    {
+        printf ("%s\n", adios_errmsg());
+        ret = adios_errno;
+        goto finish;
+    }
+
+    if (!rank)
+    {
+        printf("Found %d attributes\n", f->nattrs);
+        /*
+        // Print all attributes
+        int j;
+        enum ADIOS_DATATYPES attr_type;
+        int attr_size;
+        void * data = NULL;
+        for (j=0; j < f->nattrs; j++)
+        {
+            adios_get_attr_byid (f, j, &attr_type, &attr_size, &data);
+            printf ("attr: %s %s = ", adios_type_to_string(attr_type), f->attr_namelist[j]);
+            print_attr (f, attr_type, attr_size, data);
+            free (data);
+            data = 0;
+        }
+        */
+        ret = check_attr(f, "single_string", single_string);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "single_int", someints);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "single_double", somedoubles);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "five_ints", someints);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "five_double", somedoubles);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "three_strings", three_strings);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "region0/patch-names", patchnames);
+        if (ret != err_no_error)
+            goto finish;
+        ret = check_attr(f, "region0/field/p_rgh/patch-types", p_rgh);
+        if (ret != err_no_error)
+            goto finish;
+
+    }
+
+finish:
+    MPI_Barrier (comm);
+    adios_read_close (f);
+    return 0;
+}
+
+
diff --git a/tests/test_src/group_free_test.c b/tests/test_src/group_free_test.c
index cb417ff..87b471f 100644
--- a/tests/test_src/group_free_test.c
+++ b/tests/test_src/group_free_test.c
@@ -55,7 +55,7 @@ int main (int argc, char ** argv)
         for (j = 0; j < NGROUPS; j++) 
         {
             sprintf (groupname, "group%1.1d", j);
-            adios_declare_group (&groupid[j], groupname, "", adios_flag_yes);
+            adios_declare_group (&groupid[j], groupname, "", adios_stat_default);
             adios_select_method (groupid[j], "MPI", "", "");
 
             for (i = 0; i < NBLOCKS; i++) 
diff --git a/tests/test_src/query_minmax.c b/tests/test_src/query_minmax.c
index cd73749..21ce790 100644
--- a/tests/test_src/query_minmax.c
+++ b/tests/test_src/query_minmax.c
@@ -144,7 +144,7 @@ int main (int argc, char ** argv)
         printE ("%s\n", adios_errmsg());
     }
 
-    adios_declare_group (&m_adios_group, "query_minmax", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "query_minmax", "", adios_stat_default);
     adios_select_method (m_adios_group, "POSIX", "", "");
 
 
diff --git a/tests/test_src/read_points_2d.c b/tests/test_src/read_points_2d.c
index e1a19e0..5a02fa3 100644
--- a/tests/test_src/read_points_2d.c
+++ b/tests/test_src/read_points_2d.c
@@ -171,7 +171,7 @@ int main (int argc, char ** argv)
         printE ("%s\n", adios_errmsg());
     }
 
-    adios_declare_group (&m_adios_group, "read_points", "", adios_flag_yes);
+    adios_declare_group (&m_adios_group, "read_points", "", adios_stat_default);
     adios_select_method (m_adios_group, "POSIX", "", "");
 
 
diff --git a/tests/test_src/read_points_3d.c b/tests/test_src/read_points_3d.c
deleted file mode 100644
index c1c16eb..0000000
--- a/tests/test_src/read_points_3d.c
+++ /dev/null
@@ -1,774 +0,0 @@
-/* 
- * ADIOS is freely available under the terms of the BSD license described
- * in the COPYING file in the top level directory of this source distribution.
- *
- * Copyright (c) 2008 - 2009.  UT-BATTELLE, LLC. All rights reserved.
- */
-
-/* ADIOS C test: 
- *  Write a 3D array of 8 3D blocks, multiple steps. Each block is a 5x5x5 array.
- *  The whole array is 10x10x10 and is patterned like this: 10*step+<blockid>.<row><col><z>
- *
- *  Front 2D slice of the 3D array:
- *  $ bpls -l read_points_3d.bp -d data -n 10 -f "%6.3f" -s "0,0,0,0" -c "1,10,10,1"
-  real     data                       2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-    slice (0:0, 0:9, 0:9, 0:0)
-    (0,0,0,0)     0.000  0.010  0.020  0.030  0.040  1.000  1.010  1.020  1.030  1.040
-    (0,1,0,0)     0.100  0.110  0.120  0.130  0.140  1.100  1.110  1.120  1.130  1.140
-    (0,2,0,0)     0.200  0.210  0.220  0.230  0.240  1.200  1.210  1.220  1.230  1.240
-    (0,3,0,0)     0.300  0.310  0.320  0.330  0.340  1.300  1.310  1.320  1.330  1.340
-    (0,4,0,0)     0.400  0.410  0.420  0.430  0.440  1.400  1.410  1.420  1.430  1.440
-    (0,5,0,0)     2.000  2.010  2.020  2.030  2.040  3.000  3.010  3.020  3.030  3.040
-    (0,6,0,0)     2.100  2.110  2.120  2.130  2.140  3.100  3.110  3.120  3.130  3.140
-    (0,7,0,0)     2.200  2.210  2.220  2.230  2.240  3.200  3.210  3.220  3.230  3.240
-    (0,8,0,0)     2.300  2.310  2.320  2.330  2.340  3.300  3.310  3.320  3.330  3.340
-    (0,9,0,0)     2.400  2.410  2.420  2.430  2.440  3.400  3.410  3.420  3.430  3.440
- *
- *  Back 2D slice of the 3D array
- *  $ bpls -l read_points_3d.bp -d data -n 10 -f "%6.3f" -s "0,0,0,-1" -c "1,10,10,1"
-  real     data                       2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-    slice (0:0, 0:9, 0:9, 9:9)
-    (0,0,0,9)     4.004  4.014  4.024  4.034  4.044  5.004  5.014  5.024  5.034  5.044
-    (0,1,0,9)     4.104  4.114  4.124  4.134  4.144  5.104  5.114  5.124  5.134  5.144
-    (0,2,0,9)     4.204  4.214  4.224  4.234  4.244  5.204  5.214  5.224  5.234  5.244
-    (0,3,0,9)     4.304  4.314  4.324  4.334  4.344  5.304  5.314  5.324  5.334  5.344
-    (0,4,0,9)     4.404  4.414  4.424  4.434  4.444  5.404  5.414  5.424  5.434  5.444
-    (0,5,0,9)     6.004  6.014  6.024  6.034  6.044  7.004  7.014  7.024  7.034  7.044
-    (0,6,0,9)     6.104  6.114  6.124  6.134  6.144  7.104  7.114  7.124  7.134  7.144
-    (0,7,0,9)     6.204  6.214  6.224  6.234  6.244  7.204  7.214  7.224  7.234  7.244
-    (0,8,0,9)     6.304  6.314  6.324  6.334  6.344  7.304  7.314  7.324  7.334  7.344
-    (0,9,0,9)     6.404  6.414  6.424  6.434  6.444  7.404  7.414  7.424  7.434  7.444
-
- * Next slice in Z-coord is similar with all values +0.001
- *  Then test every possible reading of points
- *    with a bounding box container, and without
- *    with a writeblock container
- *    1D and 3D points (local offset in contiguous space vs N-dim points)
- *    multiple timesteps
- *
- * How to run: ./read_points_3d
- * It writes 5x5x5 3D blocks organized into a 10x10x10 3D array.
- * Output: read_points.bp
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-#include <math.h>
-#include <float.h>
-#include "public/adios.h"
-#include "public/adios_read.h"
-#include "public/adios_query.h"
-
-#ifdef DMALLOC
-#include "dmalloc.h"
-#endif
-
-#define log(...) fprintf (stderr, "[rank=%3.3d, line %d]: ", rank, __LINE__); fprintf (stderr, __VA_ARGS__); fflush(stderr);
-#define printE(...) fprintf (stderr, "[rank=%3.3d, line %d]: ERROR: ", rank, __LINE__); fprintf (stderr, __VA_ARGS__); fflush(stderr);
-
-/* user arguments */
-int N = 2;       // organize blocks in NxNxN shape
-int NSTEPS = 2;  // number of output steps
-
-static const char FILENAME[] = "read_points_3d.bp";
-#define VALUE(rank, step) (step * 1000 + rank + 1)
-
-#define LDIM1 5
-#define LDIM2 5
-#define LDIM3 5
-
-static const int ldim1 = LDIM1;
-static const int ldim2 = LDIM2;
-static const int ldim3 = LDIM3;
-
-int gdim1, gdim2, gdim3;
-int offs1, offs2, offs3;
-
-int64_t       m_adios_group;
-
-/* Variables to write */
-float  a3[LDIM1*LDIM2*LDIM3];
-
-/* Variables to read */
-float  r3[LDIM1*LDIM2*LDIM3];
-
-MPI_Comm    comm = MPI_COMM_SELF; // dummy comm for sequential code
-int rank;
-int size;
-
-
-void set_gdim()
-{
-    gdim1 = N*ldim1;
-    gdim2 = N*ldim2;
-    gdim3 = N*ldim3;
-}
-
-void set_offsets (int row, int col, int z)
-{
-    offs1 = row*ldim1;
-    offs2 = col*ldim2;
-    offs3 = z*ldim3;
-}
-
-void fill_block(int step, int row, int col, int z)
-{
-    int n;
-    float v_intpart = 10*step + row*N + col + z*N*N;
-    float v;
-    int i, j, k, idx;
-
-    n = ldim1 * ldim2 * ldim3;
-    //log ("  Fill up array of %d elements starting from value %f...\n",n,v_start);
-    idx = 0;
-    for (i=0; i<ldim1; i++) {
-        //v = v_intpart + i*0.1;
-        //log ("      row %d starts from value %f... (element %d)\n",i,v,k);
-        for (j=0; j<ldim2; j++) {
-            v = v_intpart + i*0.1 + j*0.01;
-            for (k=0; k<ldim3; k++) {
-                a3[idx] = v;
-                idx++;
-                v += 0.001;
-            }
-        }
-    }
-}
-
-
-void Usage() 
-{
-    printf("Usage: read_points <N> <nsteps>\n"
-            "    <N>:       Number of blocks in each of X and Y direction\n"
-            "    <nsteps>:  Number of write cycles (to same file)\n");
-}
-
-void define_vars ();
-int write_file (int step);
-int read_points ();
-
-int main (int argc, char ** argv) 
-{
-    int err,i ; 
-
-    MPI_Init (&argc, &argv);
-    MPI_Comm_rank (comm, &rank);
-    MPI_Comm_size (comm, &size);
-
-    if (argc == 1)
-    {
-        // this case is for the test harness. otherwise this should be calling for Usage();
-        N = 2;
-        NSTEPS = 2;
-        printf("Running read_points <N=%d> <nsteps=%d>\n", N, NSTEPS);
-    }
-    else
-    {
-        if (argc < 3) { Usage(); return 1; }
-
-        errno = 0;
-        i = strtol (argv[1], NULL, 10);
-        if (errno || i < 1) { printf("Invalid 1st argument %s\n", argv[1]); Usage(); return 1;}
-        N = i;
-
-        errno = 0;
-        i = strtol (argv[2], NULL, 10);
-        if (errno || i < 1) { printf("Invalid 2nd argument %s\n", argv[2]); Usage(); return 1;}
-        NSTEPS = i;
-    }
-    adios_init_noxml (comm);
-    err = adios_read_init_method(ADIOS_READ_METHOD_BP, comm, "verbose=2");
-    if (err) {
-        printE ("%s\n", adios_errmsg());
-    }
-
-    adios_declare_group (&m_adios_group, "read_points", "", adios_flag_yes);
-    adios_select_method (m_adios_group, "POSIX", "", "");
-
-
-    define_vars();
-    set_gdim();
-    
-    for (i=0; i<NSTEPS; i++) {
-        if (!err) {
-            err = write_file (i); 
-        }
-    }
-
-    if (!err)
-        err = read_points ();
-
-    adios_read_finalize_method (ADIOS_READ_METHOD_BP);
-    adios_finalize (rank);
-    MPI_Finalize ();
-    return err;
-}
-
-void define_vars ()
-{
-    int i;
-
-    adios_define_var (m_adios_group, "ldim1", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "ldim2", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "ldim3", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "gdim1", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "gdim2", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "gdim3", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "offs1", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "offs2", "", adios_integer, 0, 0, 0);
-    adios_define_var (m_adios_group, "offs3", "", adios_integer, 0, 0, 0);
-
-    for (i=0; i<N*N*N; i++) {
-        adios_define_var (m_adios_group, "data", "", adios_real,
-                "ldim1,ldim2,ldim3",
-                "gdim1,gdim2,gdim3",
-                "offs1,offs2,offs3");
-    }
-}
-
-int write_file (int step) 
-{
-    int64_t       fh;
-    int           i, j, k;
-    double        tb, te;
-
-    log ("Write step %d to %s\n", step, FILENAME);
-    adios_open (&fh, "read_points", FILENAME, (step ? "a" : "w"), comm);
-    
-    /*
-    groupsize  = (4 + nblocks*2) * sizeof(int);             // dimensions
-    log ("  groupsize calculated = %llu\n", groupsize);
-    groupsize += nblocks * ldim1 * ldim2 * sizeof(float);     // 2D  blocks
-    log ("  groupsize calculated = %llu\n", groupsize);
-
-    adios_group_size (fh, groupsize, &totalsize);
-    log ("  groupsize %llu, totalsize %llu\n", groupsize, totalsize);
-    */
-
-    tb = MPI_Wtime();
-    for (i=0; i<N; i++) {
-        for (j=0; j<N; j++) {
-            for (k=0; k<N; k++) {
-                set_offsets (i, j, k);
-                fill_block (step, i, j, k);
-                adios_write (fh, "gdim1", &gdim1);
-                adios_write (fh, "gdim2", &gdim2);
-                adios_write (fh, "gdim3", &gdim3);
-                adios_write (fh, "ldim1", &ldim1);
-                adios_write (fh, "ldim2", &ldim2);
-                adios_write (fh, "ldim3", &ldim3);
-                adios_write (fh, "offs1", &offs1);
-                adios_write (fh, "offs2", &offs2);
-                adios_write (fh, "offs3", &offs3);
-                adios_write (fh, "data", a3);
-            }
-         }
-    }
-    adios_close (fh);
-    te = MPI_Wtime();
-
-    if (rank==0) {
-        log ("  Write time for step %d was %6.3lf seconds\n", step, te-tb);
-    }
-    MPI_Barrier (comm);
-    return 0;
-}
-
-#define CHECK_VARINFO(VARNAME, NDIM, NSTEPS) \
-    vi = adios_inq_var (f, VARNAME); \
-    if (vi == NULL) { \
-        printE ("No such variable: %s\n", VARNAME); \
-        err = 101; \
-        goto endread; \
-    } \
-    if (vi->ndim != NDIM) { \
-        printE ("Variable %s has %d dimensions, but expected %d\n", VARNAME, vi->ndim, NDIM); \
-        err = 102; \
-        goto endread; \
-    } \
-    if (vi->nsteps != NSTEPS) { \
-        printE ("Variable %s has %d steps, but expected %d\n", VARNAME, vi->nsteps, NSTEPS); \
-        err = 103; \
-        /*goto endread; */\
-    } \
-    adios_free_varinfo (vi);
-
-
-void reset_readvars()
-{
-    size_t n;
-    n = (size_t)ldim1 * (size_t)ldim2;
-    memset (r3,  0, n*sizeof(float));
-}
-
-int nearlyEqual(float a, float b, float epsilon) {
-    float absA = fabsf(a);
-    float absB = fabsf(b);
-    float diff = fabsf(a - b);
-
-    if (a == b) { // shortcut, handles infinities
-        return 1;
-    } else if (a == 0 || b == 0 || diff < FLT_MIN) {
-        // a or b is zero or both are extremely close to it
-        // relative error is less meaningful here
-        return diff < (epsilon * FLT_MIN);
-    } else { // use relative error
-        return diff / fmin((absA + absB), FLT_MAX) < epsilon;
-    }
-}
-
-int test_read (ADIOS_FILE *f, ADIOS_SELECTION *pts, int from_steps, int nsteps,
-        float *expected)
-{
-    float *data = (float *) malloc (nsteps * pts->u.points.npoints * sizeof(float));
-    adios_schedule_read(f, pts, "data", from_steps, nsteps, data);
-    adios_perform_reads(f, 1);
-    int s, i, idx;
-
-    // print it out just for manual testing's sake
-    for (s = 0; s < nsteps; ++s) {
-        log ("    Step %2d: ", s);
-        idx = s * pts->u.points.npoints;
-        for (i = 0; i < pts->u.points.npoints; ++i) {
-            if (nearlyEqual(data[idx], expected[idx], 0.000001)) {
-                printf (" %7.3f  ", data[idx]);
-            } else {
-                printf ("**%6.3f* ", data[idx]);
-              }
-            idx++;
-        }
-        printf("\n");
-    }
-
-    for (s = 0; s < nsteps; ++s) {
-        idx = s * pts->u.points.npoints;
-        for (i = 0; i < pts->u.points.npoints; ++i) {
-            if (!nearlyEqual(data[idx], expected[idx], 0.000001))
-            {
-                printE ("Point %d in step %d value = %16.12f but was expected %16.12f\n",
-                        i, s, data[idx], expected[idx]);
-                free (data);
-                return 110;
-            }
-            idx++;
-        }
-    }
-
-
-    free (data);
-    return 0;
-}
-
-int read_points ()
-{
-    ADIOS_FILE * f;
-    ADIOS_VARINFO * vi;
-    int err=0;
-
-    reset_readvars();
-
-    log ("Open %s for reading\n", FILENAME);
-    f = adios_read_open_file (FILENAME, ADIOS_READ_METHOD_BP, comm);
-    if (f == NULL) {
-        printE ("Error at opening file: %s\n", adios_errmsg());
-        return 1;
-    }
-
-    log ("  Check variable definitions in %s\n", FILENAME);
-    CHECK_VARINFO("data", 3, NSTEPS)
-    MPI_Barrier (comm);
-
-    ADIOS_SELECTION *pts;
-    uint64_t start[100];
-    uint64_t count[100];
-    ADIOS_SELECTION *box;
-    uint64_t boxstart[3];
-    uint64_t boxcount[3];
-    ADIOS_SELECTION *wblock;
-    float expected[32]; // expected values of points
-
-    /*
-     * Points without containers based tests
-     */
-
-    // Test 1
-    // Read a single point with 3D coordinates in global space
-    // middle point of first 5x5x5 block, = 0.22
-    start[0] = 2; start[1] = 2; start[2] = 2;
-    pts = adios_selection_points(3, 1, start);
-    expected[0] = 0.222;
-    log ("  Read single 3D global point at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-    /*
-     * Points in BOUNDINGBOX based tests
-     */
-    log ("  --------------- Points in Boundinx Boxes -----------------------  \n");
-    // Test 2
-    // Read a single point with 3D coordinates in an 5x5x5 bounding box
-    // middle point of the 5x5x5 block, = 7.00
-    // Limit the query to the bounding box
-    boxstart[0] = 3; boxstart[1] = 3; boxstart[2] = 3;
-    boxcount[0] = 5; boxcount[1] = 5; boxcount[2] = 5;
-    box = adios_selection_boundingbox (3, boxstart, boxcount);
-
-    start[0] = 2; start[1] = 2; start[2] = 2; // 3D point of middle of a 5x5x5 array
-    pts = adios_selection_points(3, 1, start);
-    pts->u.points.container_selection = box;
-    expected[0] = 7.000;
-    log ("  Read single 3D point in a 3D bounding box at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    //adios_selection_delete (box); // deleted when pts is deleted
-    if (err)
-        goto endread;
-
-
-    // Test 3
-    // Read a single point with 1D offset in an 5x5x5 bounding box
-    // middle point of that 5x5x5 block, = 7.00
-    // Limit the query to the bounding box of the middle of the global array
-    // This is the same actual point as in Test 2
-    boxstart[0] = 3; boxstart[1] = 3; boxstart[2] = 3;
-    boxcount[0] = 5; boxcount[1] = 5; boxcount[2] = 5;
-    box = adios_selection_boundingbox (3, boxstart, boxcount);
-
-    start[0] = 62; // offset of middle of a 5x5x5 array: 2*25 + 2*5 + 2
-    pts = adios_selection_points(1, 1, start);
-    pts->u.points.container_selection = box;
-    expected[0] = 7.000;
-    log ("  Read single 1D point in a 3D bounding box at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    // Test 4-5
-    // Read several single points with 3D coordinates in an 5x5x5 bounding box
-    // back diagonal of that 5x5x5 block, = 5.332  5.411  7.000  2.144  2.233
-    // Limit the query to the bounding box of the middle of the global array
-    /* See: $ bpls -l read_points_3d.bp -d data -n 5 -s "0,3,3,3" -c "1,5,5,5" -f "%6.3f "
-      real     data     2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-      slice (0:0, 3:7, 3:7, 3:7)
-      (0,3,3,3)     0.333   0.334   4.330   4.331   4.332
-      (0,3,4,3)     0.343   0.344   4.340   4.341   4.342
-      (0,3,5,3)     1.303   1.304   5.300   5.301   5.302
-      (0,3,6,3)     1.313   1.314   5.310   5.311   5.312
-      (0,3,7,3)     1.323   1.324   5.320   5.321  [5.322] <-- first point, bottom corner of first 2d slice
-      (0,4,3,3) ...
-      ...             v--------------------------------------- last point, top corner
-      (0,7,3,3)    [2.233]  2.234   6.230   6.231   6.232
-      (0,7,4,3)     2.243   2.244   6.240   6.241   6.242
-      (0,7,5,3)     3.203   3.204   7.200   7.201   7.202
-      (0,7,6,3)     3.213   3.214   7.210   7.211   7.212
-      (0,7,7,3)     3.223   3.224   7.220   7.221   7.222
-    */
-    boxstart[0] = 3; boxstart[1] = 3; boxstart[2] = 3;
-    boxcount[0] = 5; boxcount[1] = 5; boxcount[2] = 5;
-    box = adios_selection_boundingbox (3, boxstart, boxcount);
-
-    // back diagonal of the 5x5x5 array
-    start[0]  = 0; start[1]  = 4; start[2]  = 4;
-    start[3]  = 1; start[4]  = 3; start[5]  = 3;
-    start[6]  = 2; start[7]  = 2; start[8]  = 2;
-    start[9]  = 3; start[10] = 1; start[11] = 1;
-    start[12] = 4; start[13] = 0; start[14] = 0;
-
-    pts = adios_selection_points(3, 5, start);
-    pts->u.points.container_selection = box;
-    expected[0] = 5.322;
-    expected[1] = 5.411;
-    expected[2] = 7.000;
-    expected[3] = 2.144;
-    expected[4] = 2.233;
-    log ("  Read back diagonal of box with five 3D points in a 3D bounding box at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    if (err) {
-        adios_selection_delete(pts);
-        goto endread;
-    }
-    expected[5] = 15.322;
-    expected[6] = 15.411;
-    expected[7] = 17.000;
-    expected[8] = 12.144;
-    expected[9] = 12.233;
-    log ("  Read back diagonal of box with five 3D points in a 3D bounding box at two steps\n");
-    err = test_read (f, pts, 0, 2, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    // Test 6-7
-    // Read several single points with 1D offset in an 5x5x5 bounding box
-    // back diagonal of that 5x5x5 block, = 5.332  5.411  7.000  2.144  2.233
-    // Limit the query to the bounding box of the middle of the global array
-    boxstart[0] = 3; boxstart[1] = 3; boxstart[2] = 3;
-    boxcount[0] = 5; boxcount[1] = 5; boxcount[2] = 5;
-    box = adios_selection_boundingbox (3, boxstart, boxcount);
-
-    // back diagonal of the 5x5x5 array
-    start[0] =                 4*ldim2 + 4;
-    start[1] = 1*ldim2*ldim3 + 3*ldim2 + 3;
-    start[2] = 2*ldim2*ldim3 + 2*ldim2 + 2;
-    start[3] = 3*ldim2*ldim3 + 1*ldim2 + 1;
-    start[4] = 4*ldim2*ldim3;
-    pts = adios_selection_points(1, 5, start);
-    pts->u.points.container_selection = box;
-    expected[0] = 5.322;
-    expected[1] = 5.411;
-    expected[2] = 7.000;
-    expected[3] = 2.144;
-    expected[4] = 2.233;
-    log ("  Read back diagonal of box with five 1D offsets in a 2D bounding box at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    if (err) {
-        adios_selection_delete(pts);
-        goto endread;
-    }
-    expected[5] = 15.322;
-    expected[6] = 15.411;
-    expected[7] = 17.000;
-    expected[8] = 12.144;
-    expected[9] = 12.233;
-    log ("  Read back diagonal of box with five 1D points in a 2D bounding box at two steps\n");
-    err = test_read (f, pts, 0, 2, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    // Test 8
-    // Read "center cross" with 3D offset in an 5x5x5 bounding box
-    // points concentrated in 3x1x3 2D X-Z center plane to test the reduction of reading box size
-    // 5-point center of that 3x1x3 block, =          5.400
-    //                                          3.004 7.000 7.001
-    //                                                7.100
-    // The box-reduction should read a 3x3=9 element box instead of
-    // the full 5x5x5=125 elements
-    // (actually read_var_bb then will read more than this because it reads contiguous arrays)
-    // Limit the query to the bounding box of the middle of the global array
-    /*
-     * See the cross in file:
-    $ bpls -l read_points_3d.bp -d data -n 5 -s "0,4,5,5" -c "1,1,1,1" -f "%6.3f " -n 1
-    real     data                       2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-    slice (0:0, 4:4, 5:5, 5:5)
-    (0,4,5,5)     5.400
-
-    $ bpls -l read_points_3d.bp -d data -n 5 -s "0,5,5,4" -c "1,1,1,3" -f "%6.3f " -n 1
-    real     data                       2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-    slice (0:0, 5:5, 5:5, 4:6)
-    (0,5,5,4)     3.004
-    (0,5,5,5)     7.000
-    (0,5,5,6)     7.001
-
-    $ bpls -l read_points_3d.bp -d data -n 5 -s "0,6,5,5" -c "1,1,1,1" -f "%6.3f " -n 1
-    real     data                       2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-    slice (0:0, 6:6, 5:5, 5:5)
-    (0,6,5,5)     7.100
-     */
-    boxstart[0] = 3; boxstart[1] = 3; boxstart[2] = 3;
-    boxcount[0] = 5; boxcount[1] = 5; boxcount[2] = 5;
-    box = adios_selection_boundingbox (3, boxstart, boxcount);
-
-    // 5-point center cross in X-Z plane of the 5x5x5 array
-    start[0]  = 1; start[1]  = 2; start[2]  = 2;
-    start[3]  = 2; start[4]  = 2; start[5]  = 1;
-    start[6]  = 2; start[7]  = 2; start[8]  = 2;
-    start[9]  = 2; start[10] = 2; start[11] = 3;
-    start[12] = 3; start[13] = 2; start[14] = 2;
-    pts = adios_selection_points(3, 5, start);
-    pts->u.points.container_selection = box;
-    expected[0] = 5.400;
-    expected[1] = 3.004;
-    expected[2] = 7.000;
-    expected[3] = 7.001;
-    expected[4] = 7.100;
-    log ("  Read back center cross in X-Z plane with five 3D points in a 3D bounding box at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    // Test 9
-    // Read "center cross" with 1D offset in an 5x5x5 bounding box
-    // points concentrated in 3x1x3 2D X-Z center plane to test the reduction of reading box size
-    // 5-point center of that 3x1x3 block, = 5.400 3.004 7.000 7.001 7.100
-    // The box-reduction should read a 3x5x5=75 element box instead of
-    // the full 5x5x5=125 elements
-    // Limit the query to the bounding box of the middle of the global array
-    // Same test as Test 8 but with 1D points
-
-    boxstart[0] = 3; boxstart[1] = 3; boxstart[2] = 3;
-    boxcount[0] = 5; boxcount[1] = 5; boxcount[2] = 5;
-    box = adios_selection_boundingbox (3, boxstart, boxcount);
-
-    // 5-point center cross in X-Z plane of the 5x5x5 array
-    start[0] = 1*ldim2*ldim3 + 2*ldim2 + 2;
-    start[1] = 2*ldim2*ldim3 + 2*ldim2 + 1;
-    start[2] = 2*ldim2*ldim3 + 2*ldim2 + 2;
-    start[3] = 2*ldim2*ldim3 + 2*ldim2 + 3;
-    start[4] = 3*ldim2*ldim3 + 2*ldim2 + 2;
-
-    pts = adios_selection_points(1, 5, start);
-    pts->u.points.container_selection = box;
-    expected[0] = 5.400;
-    expected[1] = 3.004;
-    expected[2] = 7.000;
-    expected[3] = 7.001;
-    expected[4] = 7.100;
-    log ("  Read back center cross in X-Z plane with five 1D points in a 3D bounding box at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    /*
-     * Points in WRITEBLOCK based tests
-     */
-    log ("  --------------- Points in WriteBlocks -----------------------  \n");
-
-    // Test 8
-    // Read a single point with 3D coordinates in writeblock 2 (third block)
-    // block 2: [0:4, 5:9, 0:4] = 1 / 1.444/ 1.222/ 0.142134
-    // middle point of that 5x5x5 block, = 1.222
-    wblock = adios_selection_writeblock(2);
-
-    start[0] = 2; start[1] = 2; start[2] = 2; // 3D point of middle of a 5x5x5 writeblock
-    pts = adios_selection_points(3, 1, start);
-    pts->u.points.container_selection = wblock;
-    expected[0] = 1.222;
-    log ("  Read single 3D point in a 3D writeblock at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    //adios_selection_delete (wblock); // deleted when pts is deleted
-    if (err)
-        goto endread;
-
-
-    // Test 9
-    // Read a single point with 1D offset in an writeblock 2
-    // middle point of that 5x5x5 block, = 1.222
-    // This is the same actual point as in Test 8
-    wblock = adios_selection_writeblock(2);
-
-    start[0] = 62; // offset of middle of a 5x5x5 array
-    pts = adios_selection_points(1, 1, start);
-    pts->u.points.container_selection = wblock;
-    expected[0] = 1.222;
-    log ("  Read single 1D point in a 3D writeblock at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    // Test 10-11
-    // Read several single points with 3D coordinates in writeblock 2
-    // back diagonal of that 5x5x5 block, = 1.044 1.133 1.222 1.311 1.400
-    /* See
-     * $ bpls -l read_points_3d.bp -d data -n 5 -s "0,0,5,0" -c "1,5,5,5" -f "%6.3f "
-       real     data                       2*{10, 10, 10} = 0 / 17.444 / 8.722 / 5.50184
-    slice (0:0, 0:4, 5:9, 0:4)
-    (0,0,5,0)     1.000   1.001   1.002   1.003   1.004
-    (0,0,6,0)     1.010   1.011   1.012   1.013   1.014
-    (0,0,7,0)     1.020   1.021   1.022   1.023   1.024
-    (0,0,8,0)     1.030   1.031   1.032   1.033   1.034
-    (0,0,9,0)     1.040   1.041   1.042   1.043  [1.044] <-- first point
-    ...
-                    v--------------------------------------- last point
-    (0,4,5,0)    [1.400]  1.401   1.402   1.403   1.404
-    (0,4,6,0)     1.410   1.411   1.412   1.413   1.414
-    (0,4,7,0)     1.420   1.421   1.422   1.423   1.424
-    (0,4,8,0)     1.430   1.431   1.432   1.433   1.434
-    (0,4,9,0)     1.440   1.441   1.442   1.443   1.444
-     *
-     *
-     */
-
-    wblock = adios_selection_writeblock(2);
-
-    // back diagonal of the 5x5x5 array
-    start[0]  = 0; start[1]  = 4; start[2]  = 4;
-    start[3]  = 1; start[4]  = 3; start[5]  = 3;
-    start[6]  = 2; start[7]  = 2; start[8]  = 2;
-    start[9]  = 3; start[10] = 1; start[11] = 1;
-    start[12] = 4; start[13] = 0; start[14] = 0;
-    pts = adios_selection_points(3, 5, start);
-    pts->u.points.container_selection = wblock;
-    expected[0] = 1.044;
-    expected[1] = 1.133;
-    expected[2] = 1.222;
-    expected[3] = 1.311;
-    expected[4] = 1.400;
-    log ("  Read back diagonal of box with five 3D points in a 3D writeblock at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    if (err) {
-        adios_selection_delete(pts);
-        goto endread;
-    }
-
-    expected[5] = 11.044;
-    expected[6] = 11.133;
-    expected[7] = 11.222;
-    expected[8] = 11.311;
-    expected[9] = 11.400;
-    log ("  Read back diagonal of box with five 3D points in a 3D writeblock at two steps\n");
-    err = test_read (f, pts, 0, 2, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-
-    // Test 12-13
-    // Read several single points with 1D offset in writeblock 2
-    // back diagonal of that 5x5x5 block, = 1.044 1.133 1.222 1.311 1.400
-    // This is the same actual point as in Test 10-11
-    wblock = adios_selection_writeblock(2);
-
-    // back diagonal of the 5x5x5 array as 1D offsets
-    start[0] =                 4*ldim2 + 4;
-    start[1] = 1*ldim2*ldim3 + 3*ldim2 + 3;
-    start[2] = 2*ldim2*ldim3 + 2*ldim2 + 2;
-    start[3] = 3*ldim2*ldim3 + 1*ldim2 + 1;
-    start[4] = 4*ldim2*ldim3;
-    pts = adios_selection_points(1, 5, start);
-    pts->u.points.container_selection = wblock;
-    expected[0] = 1.044;
-    expected[1] = 1.133;
-    expected[2] = 1.222;
-    expected[3] = 1.311;
-    expected[4] = 1.400;
-    log ("  Read back diagonal of box with five 1D offsets in a 3D writeblock at one step\n");
-    err = test_read (f, pts, 0, 1, expected);
-    if (err) {
-        adios_selection_delete(pts);
-        goto endread;
-    }
-    expected[5] = 11.044;
-    expected[6] = 11.133;
-    expected[7] = 11.222;
-    expected[8] = 11.311;
-    expected[9] = 11.400;
-    log ("  Read back diagonal of box with five 1D points in a 3D writeblock at two steps\n");
-    err = test_read (f, pts, 0, 2, expected);
-    adios_selection_delete(pts);
-    if (err)
-        goto endread;
-
-endread:
-
-    adios_read_close(f);
-    MPI_Barrier (comm);
-    return err;
-}
-
diff --git a/utils/Makefile.in b/utils/Makefile.in
index 0363ab4..7a90f7b 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -112,7 +112,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -420,6 +420,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/adios_lint/Makefile.in b/utils/adios_lint/Makefile.in
index aebccba..d920b0f 100644
--- a/utils/adios_lint/Makefile.in
+++ b/utils/adios_lint/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -409,6 +409,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/adios_list_methods/Makefile.in b/utils/adios_list_methods/Makefile.in
index fd5309d..72ce646 100644
--- a/utils/adios_list_methods/Makefile.in
+++ b/utils/adios_list_methods/Makefile.in
@@ -117,7 +117,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -460,6 +460,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/adios_list_methods/adios_list_methods.c b/utils/adios_list_methods/adios_list_methods.c
index f936ddd..0112ce1 100644
--- a/utils/adios_list_methods/adios_list_methods.c
+++ b/utils/adios_list_methods/adios_list_methods.c
@@ -29,416 +29,79 @@
 #include <regex.h>    // regular expression matching
 #include <fnmatch.h>  // shell pattern matching
 
-#include "core/adios_internals.h" // write hooks and adios_transport_struct
-#include "core/adios_read_hooks.h" // read hooks and adios_read_hooks_struct
-#include "core/transforms/adios_transforms_hooks.h" 
-#include "core/transforms/adios_transforms_hooks_read.h"
-#include "core/transforms/adios_transforms_read.h"
-#include "query/adios_query_hooks.h"
-
-
-int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype);
-
-
 #ifdef WRITE
-static struct adios_transport_struct * adios_transports = 0;
+#include "public/adios.h"
 #endif
-static struct adios_read_hooks_struct * adios_read_hooks = 0;
-static struct adios_query_hooks_struct * adios_query_hooks = 0;
+#include "public/adios_read.h"
+#include "public/adios_transform_methods.h"
+#include "public/adios_query.h"
+
 
 int main (int argc, char ** argv) {
-    int  rank, size, i;
+    int  rank = 0, i;
+#ifndef _NOMPI  // added only to enable compiling with Score-P and other libs substituting MPI 
     MPI_Comm comm = MPI_COMM_WORLD;
-
     MPI_Init(&argc,&argv);
     MPI_Comm_rank(comm,&rank);
-    MPI_Comm_size(comm,&size);
+#endif
 
 
 #ifdef WRITE
-    adios_init_transports (&adios_transports);
+    adios_init_noxml(MPI_COMM_WORLD);
+#endif
+
+#ifndef _NOMPI
+    adios_read_init_method(ADIOS_READ_METHOD_BP, MPI_COMM_WORLD, "");
+#else
+    adios_read_init_method(ADIOS_READ_METHOD_BP, 1, "");
 #endif
-    adios_read_hooks_init (&adios_read_hooks);
-    adios_transform_read_init();
-    adios_query_hooks_init(&adios_query_hooks);
 
     if(rank==0) {
 
 #ifdef WRITE
-        // print all write methods
-        printf ("Available write methods (in XML <method> element or in adios_select_method()):\n");
-        for (i = 0; i < ADIOS_METHOD_COUNT; i++) {    
-            if (adios_transports[i].method_name) {
-                printf("    \"%s\"\n", adios_transports[i].method_name);
-            }
-        }
+    	printf ("Available write methods (in XML <method> element or in adios_select_method()):\n");
+    	ADIOS_AVAILABLE_WRITE_METHODS * wm = adios_available_write_methods();
+    	if (wm) {
+    		for (i = 0; i < wm->nmethods; i++) {
+    			printf("    \"%s\"\n", wm->name[i]);
+    		}
+    		adios_available_write_methods_free(wm);
+    	}
 #endif
 
         printf ("Available read methods (constants after #include \"adios_read.h\"):\n");
-        for (i = 0; i < ADIOS_READ_METHOD_COUNT; i++) {    
-            if (adios_read_hooks[i].method_name) {
-                printf("    %s (=%d)\n", adios_read_hooks[i].method_name, i);
-            }
+        ADIOS_AVAILABLE_READ_METHODS * rm = adios_available_read_methods();
+        if (rm) {
+        	for (i = 0; i < rm->nmethods; i++) {
+        		printf("    %s (=%d)\n", rm->name[i], rm->methodID[i]);
+        	}
+        	adios_available_read_methods_free(rm);
         }
 
         printf ("Available data transformation methods (in XML transform tags in <var> elements):\n");
-        for (i = (int)adios_transform_none; i < num_adios_transform_types; i++) {    
-            if (adios_transform_is_implemented((enum ADIOS_TRANSFORM_TYPE)i)) {
-            printf("    \"%s\"\t: %s\n", 
-                    adios_transform_plugin_primary_xml_alias((enum ADIOS_TRANSFORM_TYPE)i),
-                    adios_transform_plugin_desc((enum ADIOS_TRANSFORM_TYPE)i));
+        ADIOS_AVAILABLE_TRANSFORM_METHODS * t = adios_available_transform_methods();
+        if (t) {
+            for (i=0; i<t->ntransforms; i++)
+            {
+                printf("    \"%s\"\t: %s\n",  t->name[i], t->description[i]);
             }
+            adios_available_transform_methods_free(t);
         }
 
+
         printf ("Available query methods (in adios_query_set_method()):\n");
-        for (i = 0; i < ADIOS_QUERY_METHOD_COUNT; i++) {
-        	const enum ADIOS_QUERY_METHOD method = (enum ADIOS_QUERY_METHOD)i;
-            if (adios_query_hooks[method].method_name) {
-            	printf("    %s (=%d)\n", adios_query_hooks[method].method_name, i);
-            }
+        ADIOS_AVAILABLE_QUERY_METHODS * qm = adios_available_query_methods();
+        if (qm) {
+        	for (i = 0; i < qm->nmethods; i++) {
+        		printf("    %s (=%d)\n", qm->name[i], qm->methodID[i]);
+        	}
+        	adios_available_query_methods_free(qm);
         }
     }
 
+#ifndef _NOMPI  // added only to enable compiling with Score-P and other libs substituting MPI 
     MPI_Barrier(comm);
     MPI_Finalize();
+#endif
     return(0);
 }
-
-//check whether or not s+c goes over the global bound of v
-//input:
-//loc (tell you whether the overflow occurs, var definition or read/write)
-//v (var info)
-//s (offsets array)
-//c (chunk block / local bounds array)
-
-void checkOverflow(int loc, ADIOS_VARINFO* v, uint64_t* s, uint64_t* c) {
-    int j;
-    for(j=0; j<v->ndim; j++){
-        if(s[j]+c[j]>v->dims[j]){
-            if(loc==0)
-                printf("in define: ");
-            else //loc == 1
-                printf("in read/write: ");
-            printf("bound overflow happened. use debug mode\n");
-        }
-    }
-}
-
-//tell you what the size per element is based on the type
-//input:
-//adiosvartype (variable type structure)
-//elemsize (pointer to the element size that you should set)
-//output:
-//tells you whether or not the adiosvartype is known.
-
-int getTypeInfo( enum ADIOS_DATATYPES adiosvartype, int* elemsize){
-
-    switch(adiosvartype) {
-    case adios_unsigned_byte:
-        *elemsize = 1;
-        break;
-    case adios_byte:
-        *elemsize = 1;
-        break;
-    case adios_string:
-        *elemsize = 1;
-        break;
-
-    case adios_unsigned_short:
-        *elemsize = 2;
-        break;
-    case adios_short:
-        *elemsize = 2;
-        break;
-
-    case adios_unsigned_integer:
-        *elemsize = 4;
-        break;
-    case adios_integer:
-        *elemsize = 4;
-        break;
-
-    case adios_unsigned_long:
-        *elemsize = 8;
-        break;
-    case adios_long:
-        *elemsize = 8;
-        break;
-
-    case adios_real:
-        *elemsize = 4;
-        break;
-
-    case adios_double:
-        *elemsize = 8;
-        break;
-
-    case adios_complex:
-        *elemsize = 8;
-        break;
-
-    case adios_double_complex:
-        *elemsize = 16;
-        break;
-
-    case adios_long_double: // do not know how to print
-        //*elemsize = 16;
-    default:
-        return 1;
-    }
-    return 0;
-}
-
-
-//advance s by "by" number of elements.
-//NOTE: you have to first make sure "by" doesn't go over "s" yourself. The function doesn't check this. If not, it could lead to error.
-//input:
-//v (variable info pointer)
-//s (offset array pointer to start from)
-//by (by how much elements do you want to advance?)
-//rank (rank of your process)
-
-void rS(ADIOS_VARINFO* v, uint64_t* s, uint64_t by, int rank){
-
-    int q;
-    uint64_t bulk = 1;
-
-    for(q=1; q<v->ndim; q++)
-        bulk *= v->dims[q];
-
-    for(q=0; q<v->ndim; q++){
-
-        //if(bulk == 0)
-        //break;
-
-        if(by == 0)
-            break;
-
-        uint64_t inc = by/bulk;
-
-        if(inc >= 1){
-
-            if(s[q]+inc<v->dims[q]){
-                s[q] += inc;
-            }else{
-                //s[q-1]++;
-
-                uint64_t r = 1;
-                while(1){
-                    if(s[q-r]+1 < v->dims[q-r]){
-                        s[q-r]++;
-                        break;
-                    }else{
-                        s[q-r] = 0;
-                        r++;
-                    }
-                }
-
-                uint64_t uinc = v->dims[q]-s[q];
-                uint64_t new_inc = inc - uinc;
-                s[q] = new_inc;
-            }
-            by -= inc*bulk;
-
-        }
-
-
-        if(q+1<v->ndim)
-            bulk /= v->dims[q+1];
-    }
-
-}
-
-
-//set chunk array block "c" based on the advised chunk_size
-//NOTE: c has to be all 1's; otherwise, there would be error.
-//input:
-//chunk_size (advised chunk_size)
-//v (variable info pointer)
-//c (chunk array block you want to set)
-
-void calcC(uint64_t chunk_size, ADIOS_VARINFO* v, uint64_t* c){
-    int i;
-    uint64_t tot = 1;
-    uint64_t t;
-    for(i=v->ndim-1; i>=0; i--){
-
-        if(v->dims[i]*tot<=chunk_size){
-            c[i] = v->dims[i];
-            tot *= v->dims[i];
-        }else{
-            t = chunk_size/tot;
-            c[i] = t;
-            break;
-        }
-    }
-
-}
-
-
-//Calculate rough best estimate for chunk_size
-//Input:
-//total_size (total number of elements in the array)
-//mne (maximum number of elements per for the chunk_size)
-//np (number of cores you have)
-//Output:
-//chunk_size (in terms of the number of elements)
-
-uint64_t calcChunkSize(uint64_t total_size, uint64_t mne, int np){
-
-    uint64_t chunk_size = 0;
-    if((total_size/np) <= mne)
-        chunk_size = total_size/np;
-    else
-        chunk_size = mne;
-
-    if(chunk_size<1)
-        chunk_size = 1;
-
-    return chunk_size;
-
-}
-
-//based on the the theoretical c you want to use, this function gives the real c, "uc" that you can use for the local bounds,
-//without going out of the global bounds, starting from offset s
-//NOTE: uc has to be all 1's
-//Input:
-//v (variable info pointer)
-//s (offset pointer)
-//c (chunk array block you want to use)
-//uc (real chunk array calculated that you can use as local bounds)
-//chunk_size (basically the product of dimensions of c)
-//Output:
-//remain_chunk (the number of elements still left to process after you process uc block of elements)
-
-uint64_t checkBound(ADIOS_VARINFO* v, uint64_t* s, uint64_t* c, uint64_t* uc, uint64_t chunk_size){
-    int i;
-    uint64_t remain_chunk = chunk_size;
-    int used_chunk = 1;
-    for(i=v->ndim-1;i>=0;i--){
-        if(s[i]+c[i]-1>=v->dims[i]){
-            uc[i] = v->dims[i]-s[i];
-            break;
-        }
-        uc[i] = c[i];
-    }
-
-    int j;
-
-    for(j=0; j<v->ndim; j++)
-        used_chunk *= uc[j];
-    remain_chunk -= used_chunk;
-
-    return remain_chunk;
-
-}
-
-
-//copy elements from "from" to "to"
-
-void arrCopy(uint64_t* from, uint64_t* to){
-    int i;
-    for(i=0; i<10; i++)
-        to[i] = from[i];
-}
-
-
-void getbasename (char *path, char **dirname, char **basename)
-{
-    char *work, *ptr;
-
-    work = strdup(path);
-    if (work[strlen(work)-1] == '/' && strlen(work)>1)
-        work[strlen(work)-1] = '\0';
-
-    ptr = rindex(work, '/');
-    if (ptr && ptr != work) {
-        // found a / and but not the beginning / of a full path
-        ptr[0] = 0;
-        *dirname = strdup(work);
-        ptr[0] = '/';
-        *basename = strdup(ptr+1);
-    } else if (ptr == work) {
-        // found / as the first character 
-        *dirname = strdup("");
-        *basename = strdup(ptr+1);
-    } else {
-        *dirname = NULL; //strdup(".");
-        *basename = strdup(work);
-    }
-    free(work);
-}
-
-
-int print_data(void *data, int item, enum ADIOS_DATATYPES adiosvartype)
-{
-    if (data == NULL) {
-        printf ( "null ");
-        return 0;
-    }
-    // print next data item into vstr
-    switch(adiosvartype) {
-        case adios_unsigned_byte:
-            printf ("%hhu", ((unsigned char *) data)[item]);
-            break;
-        case adios_byte:
-            printf ("%hhd", ((signed char *) data)[item]);
-            break;
-        case adios_string:
-            printf ("\"%s\"", ((char *) data)+item);
-            break;
-        case adios_string_array:
-            // we expect one elemet of the array here
-            printf("\"%s\"", *((char **)data+item));
-            break;
-
-        case adios_unsigned_short:
-            printf ("%hu", ((unsigned short *) data)[item]);
-            break;
-        case adios_short:
-            printf ("%hd", ((signed short *) data)[item]);
-            break;
-
-        case adios_unsigned_integer: 
-            printf ("%u", ((unsigned int *) data)[item]);
-            break;
-        case adios_integer:    
-            printf ("%d", ((signed int *) data)[item]);
-            break;
-
-        case adios_unsigned_long:
-            printf ("%" PRIu64, ((uint64_t *) data)[item]);
-            break;
-        case adios_long:        
-            printf ("%" PRId64, ((int64_t *) data)[item]);
-            break;
-
-        case adios_real:
-            printf ("%g", ((float *) data)[item]);
-            break;
-
-        case adios_double:
-            printf ("%g", ((double *) data)[item]);
-            break;
-
-
-        case adios_long_double:
-            //printf ("%g ", ((double *) data)[item]);
-            printf ("????????");
-            break;
-
-
-        case adios_complex:
-            printf ("(%g,i%g)", ((float *) data)[2*item], ((float *) data)[2*item+1]);
-            break;
-
-        case adios_double_complex:
-            printf ("(%g,i%g)", ((double *) data)[2*item], ((double *) data)[2*item+1]);
-            break;
-
-        case adios_unknown:
-            break;
-    } // end switch
-    return 0;
-}
-
diff --git a/utils/bp2ascii/Makefile.in b/utils/bp2ascii/Makefile.in
index 825bb69..1e1b32a 100644
--- a/utils/bp2ascii/Makefile.in
+++ b/utils/bp2ascii/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -407,6 +407,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bp2bp/Makefile.in b/utils/bp2bp/Makefile.in
index 4ec0035..7fb309e 100644
--- a/utils/bp2bp/Makefile.in
+++ b/utils/bp2bp/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -410,6 +410,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bp2h5/Makefile.in b/utils/bp2h5/Makefile.in
index eecbdab..5a44569 100644
--- a/utils/bp2h5/Makefile.in
+++ b/utils/bp2h5/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -412,6 +412,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bp2h5/bp2h5.c b/utils/bp2h5/bp2h5.c
index 9c500c7..fa746bd 100644
--- a/utils/bp2h5/bp2h5.c
+++ b/utils/bp2h5/bp2h5.c
@@ -43,9 +43,11 @@
 #include "dmalloc.h"
 #endif
 
-typedef int bool;
-#define false 0
-#define true  1
+#ifndef bool
+    typedef int bool;
+#   define false 0
+#   define true  1
+#endif
 
 bool noindex = false;              // do no print array indices with data
 bool printByteAsChar = false;      // print 8 bit integer arrays as string
diff --git a/utils/bp2ncd/Makefile.in b/utils/bp2ncd/Makefile.in
index 76454d9..809e5fb 100644
--- a/utils/bp2ncd/Makefile.in
+++ b/utils/bp2ncd/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -410,6 +410,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bpdiff/Makefile.in b/utils/bpdiff/Makefile.in
index 74ff5ad..4669821 100644
--- a/utils/bpdiff/Makefile.in
+++ b/utils/bpdiff/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -409,6 +409,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bpdump/Makefile.in b/utils/bpdump/Makefile.in
index ca6fe5a..06e83ff 100644
--- a/utils/bpdump/Makefile.in
+++ b/utils/bpdump/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -408,6 +408,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bpls/Makefile.in b/utils/bpls/Makefile.in
index 7b9649f..161fa49 100644
--- a/utils/bpls/Makefile.in
+++ b/utils/bpls/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -408,6 +408,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bpmeta/Makefile.in b/utils/bpmeta/Makefile.in
index 80d25ea..5736f44 100644
--- a/utils/bpmeta/Makefile.in
+++ b/utils/bpmeta/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -408,6 +408,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bprecover/Makefile.in b/utils/bprecover/Makefile.in
index 824da28..946020b 100644
--- a/utils/bprecover/Makefile.in
+++ b/utils/bprecover/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -409,6 +409,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/bpsplit/Makefile.in b/utils/bpsplit/Makefile.in
index ac5a691..551cb7b 100644
--- a/utils/bpsplit/Makefile.in
+++ b/utils/bpsplit/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -424,6 +424,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/fastbit/Makefile.in b/utils/fastbit/Makefile.in
index eb2c3be..1a32496 100644
--- a/utils/fastbit/Makefile.in
+++ b/utils/fastbit/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -410,6 +410,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/gpp/CMakeLists.txt b/utils/gpp/CMakeLists.txt
index 374ca51..61fbf57 100644
--- a/utils/gpp/CMakeLists.txt
+++ b/utils/gpp/CMakeLists.txt
@@ -1,5 +1,6 @@
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/gpp.py.in ${CMAKE_CURRENT_BINARY_DIR}/gpp.py @ONLY)
 
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/gpp.py ad_config.py type_mapper.py DESTINATION ${bindir})
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/gpp.py DESTINATION ${bindir})
+install(FILES ad_config.py type_mapper.py DESTINATION ${libdir}/python)
 
 file(COPY ad_config.py type_mapper.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) 
diff --git a/utils/gpp/Makefile.am b/utils/gpp/Makefile.am
index 041e5ca..02ad29d 100644
--- a/utils/gpp/Makefile.am
+++ b/utils/gpp/Makefile.am
@@ -1,5 +1,10 @@
-dist_bin_SCRIPTS = gpp.py ad_config.py type_mapper.py
+dist_bin_SCRIPTS = gpp.py 
+pythonlibdir=@libdir@/python
+dist_pythonlib_DATA = ad_config.py type_mapper.py
 
 all-local:
 	test "$(srcdir)" = "$(builddir)" || cp $(srcdir)/ad_config.py $(srcdir)/type_mapper.py $(builddir); chmod a+x *.py
 
+
+
+
diff --git a/utils/gpp/Makefile.in b/utils/gpp/Makefile.in
index 9433dea..05e5992 100644
--- a/utils/gpp/Makefile.in
+++ b/utils/gpp/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 am__make_running_with_option = \
@@ -80,7 +81,7 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = utils/gpp
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/gpp.py.in $(dist_bin_SCRIPTS)
+	$(srcdir)/gpp.py.in $(dist_bin_SCRIPTS) $(dist_pythonlib_DATA)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_aplod.m4 \
@@ -109,7 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -151,7 +152,7 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(bindir)"
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pythonlibdir)"
 SCRIPTS = $(dist_bin_SCRIPTS)
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
@@ -172,6 +173,7 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+DATA = $(dist_pythonlib_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -384,6 +386,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -445,7 +450,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-dist_bin_SCRIPTS = gpp.py ad_config.py type_mapper.py
+dist_bin_SCRIPTS = gpp.py 
+pythonlibdir = @libdir@/python
+dist_pythonlib_DATA = ad_config.py type_mapper.py
 all: all-am
 
 .SUFFIXES:
@@ -522,6 +529,27 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-dist_pythonlibDATA: $(dist_pythonlib_DATA)
+	@$(NORMAL_INSTALL)
+	@list='$(dist_pythonlib_DATA)'; test -n "$(pythonlibdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pythonlibdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pythonlibdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pythonlibdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pythonlibdir)" || exit $$?; \
+	done
+
+uninstall-dist_pythonlibDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_pythonlib_DATA)'; test -n "$(pythonlibdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(pythonlibdir)'; $(am__uninstall_files_from_dir)
 tags TAGS:
 
 ctags CTAGS:
@@ -561,9 +589,9 @@ distdir: $(DISTFILES)
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(SCRIPTS) all-local
+all-am: Makefile $(SCRIPTS) $(DATA) all-local
 installdirs:
-	for dir in "$(DESTDIR)$(bindir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pythonlibdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -616,7 +644,7 @@ info: info-am
 
 info-am:
 
-install-data-am:
+install-data-am: install-dist_pythonlibDATA
 
 install-dvi: install-dvi-am
 
@@ -660,7 +688,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-dist_binSCRIPTS
+uninstall-am: uninstall-dist_binSCRIPTS uninstall-dist_pythonlibDATA
 
 .MAKE: install-am install-strip
 
@@ -668,14 +696,16 @@ uninstall-am: uninstall-dist_binSCRIPTS
 	clean-libtool cscopelist-am ctags-am distclean \
 	distclean-generic distclean-libtool distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
-	install-data-am install-dist_binSCRIPTS install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am uninstall-dist_binSCRIPTS
+	install-data-am install-dist_binSCRIPTS \
+	install-dist_pythonlibDATA install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-dist_binSCRIPTS \
+	uninstall-dist_pythonlibDATA
 
 
 all-local:
diff --git a/utils/gpp/gpp.py b/utils/gpp/gpp.py
index 7c0c4c0..01c9c9c 100755
--- a/utils/gpp/gpp.py
+++ b/utils/gpp/gpp.py
@@ -1,8 +1,15 @@
-#!/sw/sith/python/2.7.3/rhel6_gnu4.4.6/bin/python
+#!/usr/bin/python
 
 import sys
 import os
 
+# Make sure that the gpp modules are available...
+# ...for the installed gpp
+sys.path.insert (0, os.path.dirname(sys.argv[0]) + '/../lib/python')
+
+# ...for the gpp in the utils dir of the adios source
+#sys.path.insert (0, os.path.dirname(sys.argv[0]))
+
 import ad_config
 import type_mapper
 
diff --git a/utils/gpp/gpp.py.in b/utils/gpp/gpp.py.in
index 7a61d4e..cbb0d88 100755
--- a/utils/gpp/gpp.py.in
+++ b/utils/gpp/gpp.py.in
@@ -3,6 +3,13 @@
 import sys
 import os
 
+# Make sure that the gpp modules are available...
+# ...for the installed gpp
+sys.path.insert (0, os.path.dirname(sys.argv[0]) + '/../lib/python')
+
+# ...for the gpp in the utils dir of the adios source
+#sys.path.insert (0, os.path.dirname(sys.argv[0]))
+
 import ad_config
 import type_mapper
 
diff --git a/utils/skel/CMakeLists.txt b/utils/skel/CMakeLists.txt
index ee9eaf4..aafb54b 100644
--- a/utils/skel/CMakeLists.txt
+++ b/utils/skel/CMakeLists.txt
@@ -3,7 +3,7 @@ add_subdirectory(src)
 
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/lib/skel_have_adios_timing.py.in ${CMAKE_CURRENT_BINARY_DIR}/lib/skel_have_adios_timing.py)
 
-install(PROGRAMS bin/skel bin/set_method.sh bin/skel_extract.py bin/skel_cat.py DESTINATION ${bindir})
+install(PROGRAMS bin/skel bin/skel_set_method.sh bin/skel_extract.py bin/skel_cat.py DESTINATION ${bindir})
 
 install(FILES lib/adios.py 
 	lib/argparse.py 
@@ -16,6 +16,9 @@ install(FILES lib/adios.py
 	lib/skel_settings.py 
 	lib/skel_source.py 
 	lib/skel_submit.py 
+    lib/skel_suite.py 
+    lib/skel_template.py 
+    lib/skel_test_plan.py 
 	lib/skel_xml.py 
 	lib/skelconf.py
 	${CMAKE_CURRENT_BINARY_DIR}/lib/skel_have_adios_timing.py 
@@ -24,16 +27,20 @@ install(FILES lib/adios.py
 
 
 install(FILES etc/templates/Makefile.default.tpl
-	etc/templates/submit_sith.tpl
-	etc/templates/submit_jaguar.tpl
-	etc/templates/Makefile.tmpl
-	etc/templates/source_write_c.tmpl
-	etc/templates/source_write_fortran.tmpl
-        etc/templates/submit_sith.tmpl
-	etc/templates/xml.tmpl
-	etc/templates/replay_bp.tmpl
-	etc/templates/replay_yaml.tmpl
-	DESTINATION ${prefix}/etc/skel/templates)
+    etc/templates/submit_sith.tpl
+    etc/templates/submit_jaguar.tpl
+    etc/templates/submit_nautilus.tpl 
+    etc/templates/submit_nautilus.tmpl 
+    etc/templates/Makefile.tmpl
+    etc/templates/create_suite.tmpl 
+    etc/templates/source_write_c.tmpl
+    etc/templates/source_write_fortran.tmpl
+    etc/templates/submit_sith.tmpl
+    etc/templates/xml.tmpl
+    etc/templates/replay.tmpl 
+    etc/templates/replay_bp.tmpl
+    etc/templates/replay_yaml.tmpl
+    DESTINATION ${prefix}/etc/skel/templates)
 
 
 
@@ -44,5 +51,5 @@ install(FILES etc/templates/Makefile.default.tpl
 #	etc/templates/submit_sith.tpl
 #	DESTINATION ${PROJECT_BINARY_DIR}/utils/skel)
 
-#install(FILES bin/skel bin/set_method.sh bin/skel_extract.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
+#install(FILES bin/skel bin/skel_set_method.sh bin/skel_extract.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
 #install(FILES lib/adios.py lib/argparse.py lib/skel_cat.py lib/skel_install.py lib/skel_makefile.py lib/skel_params.py lib/skel_settings.py lib/skel_source.py lib/skel_submit.py lib/skel_xml.py lib/skelconf.py lib/typeMapper.py DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/python)
diff --git a/utils/skel/Makefile.am b/utils/skel/Makefile.am
index bf6fe53..2c92a51 100644
--- a/utils/skel/Makefile.am
+++ b/utils/skel/Makefile.am
@@ -5,7 +5,7 @@ if HAVE_MPI
 endif
 
 
-dist_bin_SCRIPTS = bin/skel bin/set_method.sh bin/skel_extract.py bin/skel_cat.py
+dist_bin_SCRIPTS = bin/skel bin/skel_set_method.sh bin/skel_extract.py bin/skel_cat.py
 
 pythonlibdir=@libdir@/python
 
diff --git a/utils/skel/Makefile.in b/utils/skel/Makefile.in
index 1b79af7..aacf829 100644
--- a/utils/skel/Makefile.in
+++ b/utils/skel/Makefile.in
@@ -112,7 +112,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -449,6 +449,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
@@ -511,7 +514,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 SUBDIRS = etc $(am__append_1)
-dist_bin_SCRIPTS = bin/skel bin/set_method.sh bin/skel_extract.py bin/skel_cat.py
+dist_bin_SCRIPTS = bin/skel bin/skel_set_method.sh bin/skel_extract.py bin/skel_cat.py
 pythonlibdir = @libdir@/python
 dist_pythonlib_DATA = \
     lib/adios.py \
diff --git a/utils/skel/bin/set_method.sh b/utils/skel/bin/skel_set_method.sh
similarity index 100%
rename from utils/skel/bin/set_method.sh
rename to utils/skel/bin/skel_set_method.sh
diff --git a/utils/skel/etc/Makefile.in b/utils/skel/etc/Makefile.in
index 3902026..036e92f 100644
--- a/utils/skel/etc/Makefile.in
+++ b/utils/skel/etc/Makefile.in
@@ -108,7 +108,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -383,6 +383,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/skel/etc/templates/Makefile.default.tpl b/utils/skel/etc/templates/Makefile.default.tpl
index f5ade84..b69bc9d 100644
--- a/utils/skel/etc/templates/Makefile.default.tpl
+++ b/utils/skel/etc/templates/Makefile.default.tpl
@@ -39,7 +39,7 @@ deploy:
 	cp $(APP)_skel.xml $(DEST_DIR)/$(APP)_skel.xml.in
 	cp $(CTESTS) submit* $(DEST_DIR)
 	cp $(FTESTS) submit* $(DEST_DIR)
-	cp $(prefix)/bin/set_method.sh $(DEST_DIR)
+	cp $(prefix)/bin/skel_set_method.sh $(DEST_DIR)
 	cp $(prefix)/bin/skel_cat.py $(DEST_DIR)
 
 clean:
diff --git a/utils/skel/etc/templates/submit_jaguar.tpl b/utils/skel/etc/templates/submit_jaguar.tpl
index 637c4b4..701e622 100644
--- a/utils/skel/etc/templates/submit_jaguar.tpl
+++ b/utils/skel/etc/templates/submit_jaguar.tpl
@@ -20,7 +20,7 @@ for i in {1..$$ITERATIONS$$}
 do
 echo $$METHOD$$
 $$PRE_RM$$
-set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml $$METHOD_PARAMS$$
+skel_set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml $$METHOD_PARAMS$$
 aprun -n $$CORES_USED$$ ./$$EXEC$$
 $$POST_RM$$
 done
diff --git a/utils/skel/etc/templates/submit_nautilus.tmpl b/utils/skel/etc/templates/submit_nautilus.tmpl
index 03dec75..183f91b 100644
--- a/utils/skel/etc/templates/submit_nautilus.tmpl
+++ b/utils/skel/etc/templates/submit_nautilus.tmpl
@@ -21,7 +21,7 @@ for i in {1..$$ITERATIONS$$}
 do
 echo $$METHOD$$
 $$PRE_RM$$
-./set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml 
+./skel_set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml 
 mpiexec ./$$EXEC$$
 mv $$APP$$_skel_time.xml $$APP$$_skel_time_${PBS_JOBID}_${i}.xml
 $$POST_RM$$
diff --git a/utils/skel/etc/templates/submit_nautilus.tpl b/utils/skel/etc/templates/submit_nautilus.tpl
index 03dec75..183f91b 100644
--- a/utils/skel/etc/templates/submit_nautilus.tpl
+++ b/utils/skel/etc/templates/submit_nautilus.tpl
@@ -21,7 +21,7 @@ for i in {1..$$ITERATIONS$$}
 do
 echo $$METHOD$$
 $$PRE_RM$$
-./set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml 
+./skel_set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml 
 mpiexec ./$$EXEC$$
 mv $$APP$$_skel_time.xml $$APP$$_skel_time_${PBS_JOBID}_${i}.xml
 $$POST_RM$$
diff --git a/utils/skel/etc/templates/submit_sith.tmpl b/utils/skel/etc/templates/submit_sith.tmpl
index 65e2005..9928313 100644
--- a/utils/skel/etc/templates/submit_sith.tmpl
+++ b/utils/skel/etc/templates/submit_sith.tmpl
@@ -19,7 +19,7 @@ do
 echo $bpy.get_method() 
 ##dpre_rm
 rm -rf out*
-./set_method.sh $bpy.get_method() ${project}_skel.xml.in ${project}_skel.xml 
+./skel_set_method.sh $bpy.get_method() ${project}_skel.xml.in ${project}_skel.xml 
 mpirun -n $bpy.get_num_procs() $executable
 mv skel_time.xml ${project}_skel_time_\${PBS_JOBID}_\${i}.xml
 ##dpost_rm
diff --git a/utils/skel/etc/templates/submit_sith.tpl b/utils/skel/etc/templates/submit_sith.tpl
index c9537b0..212285b 100644
--- a/utils/skel/etc/templates/submit_sith.tpl
+++ b/utils/skel/etc/templates/submit_sith.tpl
@@ -17,7 +17,7 @@ for i in {1..$$ITERATIONS$$}
 do
 echo $$METHOD$$
 $$PRE_RM$$
-./set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml 
+./skel_set_method.sh $$METHOD$$ $$APP$$_skel.xml.in $$APP$$_skel.xml 
 mpirun -n $$CORES_USED$$ ./$$EXEC$$
 mv skel_time.xml $$APP$$_skel_time_${PBS_JOBID}_${i}.xml
 $$POST_RM$$
diff --git a/utils/skel/src/Makefile.in b/utils/skel/src/Makefile.in
index f4f725d..8d4cddc 100644
--- a/utils/skel/src/Makefile.in
+++ b/utils/skel/src/Makefile.in
@@ -111,7 +111,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -443,6 +443,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/skeldump/Makefile.in b/utils/skeldump/Makefile.in
index 2fbeec8..5439dbc 100644
--- a/utils/skeldump/Makefile.in
+++ b/utils/skeldump/Makefile.in
@@ -109,7 +109,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/ac_alacrity.m4 \
 	$(top_srcdir)/config/ac_pami.m4 \
 	$(top_srcdir)/config/ac_phdf5.m4 \
 	$(top_srcdir)/config/ac_portals.m4 \
-	$(top_srcdir)/config/ac_szip.m4 \
+	$(top_srcdir)/config/ac_szip.m4 $(top_srcdir)/config/ac_zfp.m4 \
 	$(top_srcdir)/config/ac_zlib.m4 \
 	$(top_srcdir)/config/acx_mpi.m4 \
 	$(top_srcdir)/config/acx_pthread.m4 \
@@ -408,6 +408,9 @@ VERSION = @VERSION@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MICRO = @VERSION_MICRO@
 VERSION_MINOR = @VERSION_MINOR@
+ZFP_CPPFLAGS = @ZFP_CPPFLAGS@
+ZFP_LDFLAGS = @ZFP_LDFLAGS@
+ZFP_LIBS = @ZFP_LIBS@
 ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
 ZLIB_LDFLAGS = @ZLIB_LDFLAGS@
 ZLIB_LIBS = @ZLIB_LIBS@
diff --git a/utils/skeldump/skeldump.c b/utils/skeldump/skeldump.c
index 97f6f9a..cf0a265 100644
--- a/utils/skeldump/skeldump.c
+++ b/utils/skeldump/skeldump.c
@@ -562,7 +562,7 @@ int doList_group (ADIOS_FILE *fp)
 
         matches = matchesAMask(names[n]);
 
-        if (matches) {
+        if (matches && strncmp("/__adios__", names[n], 10)) { // Ignore timing vars
             nVarsMatched++;
             fprintf (outf, "  {\n");
 
diff --git a/wrappers/java/CMakeLists.txt b/wrappers/java/CMakeLists.txt
index ad29b78..8cfd5eb 100644
--- a/wrappers/java/CMakeLists.txt
+++ b/wrappers/java/CMakeLists.txt
@@ -15,14 +15,14 @@ include_directories (${JNI_INCLUDE_DIRS})
 option (ADIOS_USE_MPI "Use parallel ADIOS" ON)
 
 find_package (ADIOS REQUIRED)
-add_definitions (${ADIOS_COMPILE_FLAGS})  
+add_definitions (${ADIOS_COMPILE_FLAGS})
 add_definitions (-DADIOS_USE_READ_API_1)
 include_directories (${ADIOS_INCLUDE_PATH})
 
 if (ADIOS_USE_MPI)
   find_package (MPI REQUIRED)
   include_directories (${MPI_CXX_INCLUDE_PATH})
-  add_definitions (-DADIOS_USE_MPI)  
+  add_definitions (-DADIOS_USE_MPI)
 else ()
   find_package (MPI REQUIRED)
 endif()
@@ -30,6 +30,7 @@ endif()
 set (SRC
   gov_ornl_ccs_AdiosDatatype.cxx
   gov_ornl_ccs_AdiosFlag.cxx
+  gov_ornl_ccs_AdiosStatisticsFlag.cxx
   gov_ornl_ccs_AdiosBufferAllocWhen.cxx
   gov_ornl_ccs_Adios.cxx
   gov_ornl_ccs_AdiosFile.cxx
@@ -93,4 +94,3 @@ install (FILES ${CMAKE_CURRENT_BINARY_DIR}/AdiosJava.jar DESTINATION lib)
 ENABLE_TESTING()
 add_test (test1 ${CMAKE_CURRENT_SOURCE_DIR}/test/test1.sh ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test AdiosTest)
 add_test (test2 ${CMAKE_CURRENT_SOURCE_DIR}/test/test2.sh ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test AdiosNoxmlTest)
-
diff --git a/wrappers/java/gov/ornl/ccs/Adios.java b/wrappers/java/gov/ornl/ccs/Adios.java
index e9fc96c..fb8d934 100644
--- a/wrappers/java/gov/ornl/ccs/Adios.java
+++ b/wrappers/java/gov/ornl/ccs/Adios.java
@@ -66,7 +66,7 @@ public class Adios
     {
         return adios_init(xml_fname, comm);
     }
-    
+
 	/* Call adios_open. Return a group handler */
     public static long Open(String group_name, String file_name, String mode, long comm)
     {
@@ -232,16 +232,16 @@ public class Adios
     {
         return adios_init_noxml(comm);
     }
-    
+
 	/* Call adios_allocate_buffer */
     public static int AllocateBuffer(AdiosBufferAllocWhen when, long size)
     {
         return adios_allocate_buffer(when.getCode(), size);
     }
-    
+
 
 	/* Call adios_declare_group */
-    public static long DeclareGroup(String name, String time_index, AdiosFlag stats)
+    public static long DeclareGroup(String name, String time_index, AdiosStatisticsFlag stats)
     {
         return adios_declare_group(name, time_index, stats.getCode());
     }
diff --git a/wrappers/java/gov_ornl_ccs_Adios.cxx b/wrappers/java/gov_ornl_ccs_Adios.cxx
index a448125..c7f6736 100644
--- a/wrappers/java/gov_ornl_ccs_Adios.cxx
+++ b/wrappers/java/gov_ornl_ccs_Adios.cxx
@@ -62,8 +62,8 @@
  * Method:    adios_init
  * Signature: (Ljava/lang/String;)I
  */
-JNIEXPORT jint JNICALL 
-Java_gov_ornl_ccs_Adios_adios_1init 
+JNIEXPORT jint JNICALL
+Java_gov_ornl_ccs_Adios_adios_1init
 (JNIEnv *env, jclass cls, jstring xml_fname, jlong comm)
 {
     //std::cout << __FUNCTION__ << "..." << std::endl;
@@ -74,7 +74,7 @@ Java_gov_ornl_ccs_Adios_adios_1init
 
     result = adios_init(str_xml_fname, (MPI_Comm) comm);
     //std::cout << "result = " << result << std::endl;
-    
+
     STR_FREE(xml_fname);
 
     return result;
@@ -141,7 +141,7 @@ JNIEXPORT jlong JNICALL Java_gov_ornl_ccs_Adios_adios_1group_1size
  * Signature: (JLjava/lang/String;D)I
  */
 FUNC_WRITE_ONE (
-    Java_gov_ornl_ccs_Adios_adios_1write__JLjava_lang_String_2B, 
+    Java_gov_ornl_ccs_Adios_adios_1write__JLjava_lang_String_2B,
     jbyte)
 
 FUNC_WRITE_ONE (
@@ -231,9 +231,9 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1mpi_1init
 {
     int argc = env->GetArrayLength(args);
     char **argv;
-    int result; 
-    
-    for (int i = 0; i < argc; i++) 
+    int result;
+
+    for (int i = 0; i < argc; i++)
     {
         jstring jstr = (jstring) env->GetObjectArrayElement(args, i);
         const char *chr = env->GetStringUTFChars(jstr, 0);
@@ -247,10 +247,10 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1mpi_1init
 
     result = MPI_Init(&argc, &argv);
 
-    for (int i = 0; i < argc; i++) 
+    for (int i = 0; i < argc; i++)
     {
         //free(argv[i]);
-        delete[] argv[i]; 
+        delete[] argv[i];
     }
 
     return result;
@@ -266,7 +266,7 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1mpi_1comm_1rank
 {
     int rank;
     MPI_Comm_rank((MPI_Comm) comm, &rank);
-    
+
     return rank;
 }
 
@@ -280,7 +280,7 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1mpi_1comm_1size
 {
     int size;
     MPI_Comm_size((MPI_Comm) comm, &size);
-    
+
     return size;
 }
 
@@ -354,7 +354,7 @@ JNIEXPORT jlong JNICALL Java_gov_ornl_ccs_Adios_adios_1open_1and_1set_1group_1si
  * Method:    adios_init_noxml
  * Signature: ()I
  */
-JNIEXPORT jint JNICALL 
+JNIEXPORT jint JNICALL
 Java_gov_ornl_ccs_Adios_adios_1init_1noxml
 (JNIEnv *env, jclass cls, jlong comm)
 {
@@ -386,7 +386,7 @@ JNIEXPORT jlong JNICALL Java_gov_ornl_ccs_Adios_adios_1declare_1group
     STR_ALLOC(name);
     STR_ALLOC(time_index);
 
-    result = adios_declare_group(&id_p, str_name, str_time_index, (ADIOS_FLAG) stats);
+    result = adios_declare_group(&id_p, str_name, str_time_index, (ADIOS_STATISTICS_FLAG) stats);
 
     STR_FREE(name);
     STR_FREE(time_index);
@@ -411,7 +411,7 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1define_1var
     STR_ALLOC(local_offsets);
 
     result = adios_define_var((int64_t) group_id, str_name, str_path, (ADIOS_DATATYPES) type, str_dimensions, str_global_dimensions, str_local_offsets);
-    
+
     STR_FREE(name);
     STR_FREE(path);
     STR_FREE(dimensions);
@@ -430,12 +430,12 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1define_1attribute
 (JNIEnv * env, jclass cls, jlong group_id, jstring name, jstring path, jint type, jstring value, jstring var)
 {
     int result;
-    
+
     STR_ALLOC(name);
     STR_ALLOC(path);
     STR_ALLOC(value);
     STR_ALLOC(var);
-    
+
     result = adios_define_attribute((int64_t) group_id, str_name, str_path, (ADIOS_DATATYPES) type, str_value, str_var);
 
     STR_FREE(name);
@@ -455,17 +455,17 @@ JNIEXPORT jint JNICALL Java_gov_ornl_ccs_Adios_adios_1select_1method
 (JNIEnv * env, jclass cls, jlong group_id, jstring method, jstring parameters, jstring base_path)
 {
     int result;
-    
+
     STR_ALLOC(method);
     STR_ALLOC(parameters);
     STR_ALLOC(base_path);
-    
+
     result = adios_select_method((int64_t) group_id, str_method, str_parameters, str_base_path);
 
     STR_FREE(method);
     STR_FREE(parameters);
     STR_FREE(base_path);
-    
+
     return result;
 }
 
@@ -574,5 +574,3 @@ FUNC_READ_ARRAY(
     Java_gov_ornl_ccs_Adios_adios_1read__JLjava_lang_String_2_3D,
     jdouble,
     Double);
-
-
diff --git a/wrappers/java/test/AdiosNoxmlTest.java b/wrappers/java/test/AdiosNoxmlTest.java
index d151121..8998a1e 100644
--- a/wrappers/java/test/AdiosNoxmlTest.java
+++ b/wrappers/java/test/AdiosNoxmlTest.java
@@ -8,7 +8,7 @@ public class AdiosNoxmlTest
     public static void main(String[] args)
     {
         System.out.println(">>> AdiosJava Noxml Test Drive");
-        
+
         System.out.println(">>> ADIOS NOXML API ... ");
         Adios.MPI_Init(new String[0]);
         long comm = Adios.MPI_COMM_WORLD();
@@ -20,7 +20,7 @@ public class AdiosNoxmlTest
         Adios.Init_Noxml(comm);
         Adios.AllocateBuffer(AdiosBufferAllocWhen.NOW, 10);
 
-        long group_id = Adios.DeclareGroup("restart", "iter", AdiosFlag.YES);
+        long group_id = Adios.DeclareGroup("restart", "iter", AdiosStatisticsFlag.MINMAX);
         Adios.SelectMethod(group_id, "MPI", "", "");
         Adios.DefineVar(group_id, "NX", "", AdiosDatatype.INTEGER, "", "", "");
         Adios.DefineVar(group_id, "G", "", AdiosDatatype.INTEGER, "", "", "");
@@ -30,7 +30,7 @@ public class AdiosNoxmlTest
         System.out.println(">>> ADIOS Write API ... ");
         long adios_handle = Adios.Open ("restart", "adios_noxml.bp", "w", comm);
 
-        int NX = 10; 
+        int NX = 10;
         int G = NX * size;
         int O = NX * rank;
 
@@ -40,16 +40,16 @@ public class AdiosNoxmlTest
         }
 
         long groupsize = 4 + 4 + 4 + 8 * (1) * (NX);
-        
+
         long adios_totalsize = Adios.SetGroupSize(adios_handle, groupsize);
-        
+
         Adios.Write (adios_handle, "NX", NX);
         Adios.Write (adios_handle, "G", G);
         Adios.Write (adios_handle, "O", O);
         Adios.Write (adios_handle, "temperature", t);
         Adios.Close (adios_handle);
-        
-        Adios.Finalize (rank);        
+
+        Adios.Finalize (rank);
         Adios.MPI_Finalize();
 
         System.out.println(">>> Done.");
diff --git a/wrappers/numpy/adios.cpp b/wrappers/numpy/adios.cpp
index 24a46d7..dc001f0 100644
--- a/wrappers/numpy/adios.cpp
+++ b/wrappers/numpy/adios.cpp
@@ -795,7 +795,7 @@ struct __pyx_opt_args_5adios_3var_read_points;
 struct __pyx_opt_args_5adios_3var_read_writeblock;
 struct __pyx_opt_args_5adios_3var_read;
 
-/* "adios.pyx":381
+/* "adios.pyx":465
  * cdef MPI_Comm read_init_comm
  * 
  * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -807,7 +807,7 @@ struct __pyx_opt_args_5adios_init {
   MPI_Comm comm;
 };
 
-/* "adios.pyx":386
+/* "adios.pyx":470
  *     return adios_init(s2b(config), init_comm)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -819,7 +819,7 @@ struct __pyx_opt_args_5adios_open {
   MPI_Comm comm;
 };
 
-/* "adios.pyx":401
+/* "adios.pyx":485
  *     return total_size
  * 
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
@@ -831,7 +831,7 @@ struct __pyx_opt_args_5adios_write {
   PyObject *dtype;
 };
 
-/* "adios.pyx":441
+/* "adios.pyx":525
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -843,7 +843,7 @@ struct __pyx_opt_args_5adios_finalize {
   int mype;
 };
 
-/* "adios.pyx":448
+/* "adios.pyx":532
  * ## ====================
  * 
  * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -855,12 +855,12 @@ struct __pyx_opt_args_5adios_init_noxml {
   MPI_Comm comm;
 };
 
-/* "adios.pyx":458
+/* "adios.pyx":542
  *                                  buffer_size)
  * 
  * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  */
 struct __pyx_opt_args_5adios_declare_group {
   int __pyx_n;
@@ -868,10 +868,10 @@ struct __pyx_opt_args_5adios_declare_group {
   int stats;
 };
 
-/* "adios.pyx":468
+/* "adios.pyx":552
  *     return id
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ * cpdef int64_t define_var(int64_t group_id,             # <<<<<<<<<<<<<<
  *                      str name,
  *                      str path,
  */
@@ -882,7 +882,7 @@ struct __pyx_opt_args_5adios_define_var {
   PyObject *local_offsets;
 };
 
-/* "adios.pyx":540
+/* "adios.pyx":719
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
@@ -895,7 +895,7 @@ struct __pyx_opt_args_5adios_select_method {
   PyObject *base_path;
 };
 
-/* "adios.pyx":554
+/* "adios.pyx":746
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -907,7 +907,7 @@ struct __pyx_opt_args_5adios_adios2npdtype {
   int strlen;
 };
 
-/* "adios.pyx":683
+/* "adios.pyx":875
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
@@ -921,7 +921,7 @@ struct __pyx_opt_args_5adios_read_init {
   PyObject *parameters;
 };
 
-/* "adios.pyx":693
+/* "adios.pyx":885
  * 
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
@@ -933,7 +933,7 @@ struct __pyx_opt_args_5adios_read_finalize {
   PyObject *method_name;
 };
 
-/* "adios.pyx":870
+/* "adios.pyx":1062
  *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
@@ -946,7 +946,7 @@ struct __pyx_opt_args_5adios_4file_advance {
   float timeout_sec;
 };
 
-/* "adios.pyx":1168
+/* "adios.pyx":1360
  *         self.nsteps = self.vp.nsteps
  * 
  *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -960,7 +960,7 @@ struct __pyx_opt_args_5adios_3var_read_points {
   PyObject *nsteps;
 };
 
-/* "adios.pyx":1224
+/* "adios.pyx":1416
  *         return var
  * 
  *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -973,7 +973,7 @@ struct __pyx_opt_args_5adios_3var_read_writeblock {
   PyObject *nsteps;
 };
 
-/* "adios.pyx":1265
+/* "adios.pyx":1457
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -991,7 +991,7 @@ struct __pyx_opt_args_5adios_3var_read {
   PyObject *step_scalar;
 };
 
-/* "adios.pyx":698
+/* "adios.pyx":890
  * 
  * ## dict for handling '/' prefix
  * cdef class softdict(dict):             # <<<<<<<<<<<<<<
@@ -1003,7 +1003,7 @@ struct __pyx_obj_5adios_softdict {
 };
 
 
-/* "adios.pyx":722
+/* "adios.pyx":914
  * 
  * ## Python class for ADIOS_FILE structure
  * cdef class file(dict):             # <<<<<<<<<<<<<<
@@ -1030,7 +1030,7 @@ struct __pyx_obj_5adios_file {
 };
 
 
-/* "adios.pyx":994
+/* "adios.pyx":1186
  *         return list(s-set(['']))
  * 
  * cdef class blockinfo(object):             # <<<<<<<<<<<<<<
@@ -1046,7 +1046,7 @@ struct __pyx_obj_5adios_blockinfo {
 };
 
 
-/* "adios.pyx":1029
+/* "adios.pyx":1221
  *                 self.count)
  * 
  * cdef class var(dict):             # <<<<<<<<<<<<<<
@@ -1069,7 +1069,7 @@ struct __pyx_obj_5adios_var {
 };
 
 
-/* "adios.pyx":1494
+/* "adios.pyx":1686
  *         return self.attrs.keys()
  * 
  * cdef class attr(object):             # <<<<<<<<<<<<<<
@@ -1085,7 +1085,7 @@ struct __pyx_obj_5adios_attr {
 };
 
 
-/* "adios.pyx":1580
+/* "adios.pyx":1772
  *                (self.name, self.dtype, self.value)
  * 
  * cdef class group(dict):             # <<<<<<<<<<<<<<
@@ -1101,7 +1101,7 @@ struct __pyx_obj_5adios_group {
 };
 
 
-/* "adios.pyx":1692
+/* "adios.pyx":1884
  * 
  * ## Helper dict
  * cdef class smartdict(dict):             # <<<<<<<<<<<<<<
@@ -1114,7 +1114,7 @@ struct __pyx_obj_5adios_smartdict {
 };
 
 
-/* "adios.pyx":1704
+/* "adios.pyx":1896
  *             self.factory(key, value)
  * 
  * cdef class writer(object):             # <<<<<<<<<<<<<<
@@ -1133,10 +1133,11 @@ struct __pyx_obj_5adios_writer {
   MPI_Comm comm;
   PyObject *vars;
   PyObject *attrs;
+  uint64_t timeaggregation_buffersize;
 };
 
 
-/* "adios.pyx":1922
+/* "adios.pyx":2150
  *         self.close()
  * 
  * cdef class attrinfo(object):             # <<<<<<<<<<<<<<
@@ -1152,7 +1153,7 @@ struct __pyx_obj_5adios_attrinfo {
 };
 
 
-/* "adios.pyx":1975
+/* "adios.pyx":2203
  *                  self.dtype)
  * 
  * cdef class varinfo(object):             # <<<<<<<<<<<<<<
@@ -1166,11 +1167,12 @@ struct __pyx_obj_5adios_varinfo {
   PyObject *gdim;
   PyObject *offset;
   PyObject *value;
+  PyObject *transform;
 };
 
 
 
-/* "adios.pyx":722
+/* "adios.pyx":914
  * 
  * ## Python class for ADIOS_FILE structure
  * cdef class file(dict):             # <<<<<<<<<<<<<<
@@ -1187,7 +1189,7 @@ struct __pyx_vtabstruct_5adios_file {
 static struct __pyx_vtabstruct_5adios_file *__pyx_vtabptr_5adios_file;
 
 
-/* "adios.pyx":1029
+/* "adios.pyx":1221
  *                 self.count)
  * 
  * cdef class var(dict):             # <<<<<<<<<<<<<<
@@ -1594,6 +1596,24 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
 #endif
 
+/* PyObjectSetAttrStr.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
+    PyTypeObject* tp = Py_TYPE(obj);
+    if (likely(tp->tp_setattro))
+        return tp->tp_setattro(obj, attr_name, value);
+#if PY_MAJOR_VERSION < 3
+    if (likely(tp->tp_setattr))
+        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
+#endif
+    return PyObject_SetAttr(obj, attr_name, value);
+}
+#else
+#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
+#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
+#endif
+
 /* PyObjectCallMethod0.proto */
 static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
 
@@ -1613,24 +1633,6 @@ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict,
 static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                               PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
 
-/* PyObjectSetAttrStr.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
-static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
-    PyTypeObject* tp = Py_TYPE(obj);
-    if (likely(tp->tp_setattro))
-        return tp->tp_setattro(obj, attr_name, value);
-#if PY_MAJOR_VERSION < 3
-    if (likely(tp->tp_setattr))
-        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
-#endif
-    return PyObject_SetAttr(obj, attr_name, value);
-}
-#else
-#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
-#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
-#endif
-
 /* py_dict_values.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
 
@@ -1930,10 +1932,28 @@ static int __pyx_f_5adios_finalize(int __pyx_skip_dispatch, struct __pyx_opt_arg
 static int __pyx_f_5adios_init_noxml(int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_init_noxml *__pyx_optional_args); /*proto*/
 static int __pyx_f_5adios_allocate_buffer(int, uint64_t, int __pyx_skip_dispatch); /*proto*/
 static int64_t __pyx_f_5adios_declare_group(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_declare_group *__pyx_optional_args); /*proto*/
-static int __pyx_f_5adios_define_var(int64_t, PyObject *, PyObject *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_define_var *__pyx_optional_args); /*proto*/
+static int64_t __pyx_f_5adios_define_var(int64_t, PyObject *, PyObject *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_define_var *__pyx_optional_args); /*proto*/
+static int __pyx_f_5adios_define_schema_version(int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_var_mesh(int64_t, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_var_centering(int64_t, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_var_timesteps(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_var_timescale(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_var_timeseriesformat(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_var_hyperslab(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_timevarying(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_timesteps(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_timescale(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_timeseriesformat(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_uniform(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_rectilinear(PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_structured(PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_define_mesh_unstructured(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_5adios_define_attribute(int64_t, PyObject *, PyObject *, int, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_5adios_define_attribute_byvalue(int64_t, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_5adios_select_method(int64_t, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_select_method *__pyx_optional_args); /*proto*/
+static int __pyx_f_5adios_set_transform(int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static void __pyx_f_5adios_set_max_buffer_size(int64_t, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_5adios_set_time_aggregation(int64_t, uint64_t, int64_t, int __pyx_skip_dispatch); /*proto*/
 static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_adios2npdtype *__pyx_optional_args); /*proto*/
 static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *); /*proto*/
 static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *); /*proto*/
@@ -2005,6 +2025,7 @@ static const char __pyx_k_byte[] = "byte";
 static const char __pyx_k_char[] = "char";
 static const char __pyx_k_comm[] = "comm";
 static const char __pyx_k_copy[] = "copy";
+static const char __pyx_k_data[] = "data";
 static const char __pyx_k_dims[] = "dims";
 static const char __pyx_k_fd_p[] = "fd_p";
 static const char __pyx_k_file[] = "file";
@@ -2081,8 +2102,10 @@ static const char __pyx_k_module[] = "__module__";
 static const char __pyx_k_morder[] = "morder";
 static const char __pyx_k_mshape[] = "mshape";
 static const char __pyx_k_nattrs[] = "nattrs";
+static const char __pyx_k_nspace[] = "nspace";
 static const char __pyx_k_nsteps[] = "nsteps";
 static const char __pyx_k_offset[] = "offset";
+static const char __pyx_k_origin[] = "origin";
 static const char __pyx_k_points[] = "points";
 static const char __pyx_k_rstrip[] = "rstrip";
 static const char __pyx_k_scalar[] = "scalar";
@@ -2093,6 +2116,7 @@ static const char __pyx_k_uint16[] = "uint16";
 static const char __pyx_k_uint32[] = "uint32";
 static const char __pyx_k_uint64[] = "uint64";
 static const char __pyx_k_values[] = "values";
+static const char __pyx_k_var_id[] = "var_id";
 static const char __pyx_k_xrange[] = "xrange";
 static const char __pyx_k_CURRENT[] = "CURRENT";
 static const char __pyx_k_Reading[] = "Reading ... ";
@@ -2106,13 +2130,17 @@ static const char __pyx_k_float16[] = "float16";
 static const char __pyx_k_float32[] = "float32";
 static const char __pyx_k_float64[] = "float64";
 static const char __pyx_k_getitem[] = "__getitem__";
+static const char __pyx_k_groupid[] = "groupid";
 static const char __pyx_k_integer[] = "integer";
 static const char __pyx_k_is_open[] = "is_open";
+static const char __pyx_k_maximum[] = "maximum";
+static const char __pyx_k_npoints[] = "npoints";
 static const char __pyx_k_prepare[] = "__prepare__";
 static const char __pyx_k_readvar[] = "_readvar";
 static const char __pyx_k_replace[] = "replace";
 static const char __pyx_k_reshape[] = "reshape";
 static const char __pyx_k_setitem[] = "__setitem__";
+static const char __pyx_k_spacing[] = "spacing";
 static const char __pyx_k_unknown[] = "unknown";
 static const char __pyx_k_varname[] = "varname";
 static const char __pyx_k_version[] = "version";
@@ -2129,6 +2157,7 @@ static const char __pyx_k_group_id[] = "group_id";
 static const char __pyx_k_is_noxml[] = "is_noxml";
 static const char __pyx_k_itemsize[] = "itemsize";
 static const char __pyx_k_iterkeys[] = "iterkeys";
+static const char __pyx_k_meshname[] = "meshname";
 static const char __pyx_k_qualname[] = "__qualname__";
 static const char __pyx_k_readattr[] = "_readattr";
 static const char __pyx_k_string_2[] = "string_";
@@ -2136,11 +2165,14 @@ static const char __pyx_k_tostring[] = "tostring";
 static const char __pyx_k_AdiosFile[] = "=== AdiosFile ===";
 static const char __pyx_k_TypeError[] = "TypeError";
 static const char __pyx_k_base_path[] = "base_path";
+static const char __pyx_k_cell_type[] = "cell_type";
+static const char __pyx_k_centering[] = "centering";
 static const char __pyx_k_complex64[] = "complex64";
 static const char __pyx_k_complex_2[] = "complex";
 static const char __pyx_k_data_size[] = "data_size";
 static const char __pyx_k_enumerate[] = "enumerate";
 static const char __pyx_k_file_size[] = "file_size";
+static const char __pyx_k_hyperslab[] = "hyperslab";
 static const char __pyx_k_is_static[] = "is_static";
 static const char __pyx_k_is_stream[] = "is_stream";
 static const char __pyx_k_iteritems[] = "iteritems";
@@ -2149,10 +2181,14 @@ static const char __pyx_k_lock_mode[] = "lock_mode";
 static const char __pyx_k_metaclass[] = "__metaclass__";
 static const char __pyx_k_printself[] = "printself";
 static const char __pyx_k_readvar_2[] = "readvar";
+static const char __pyx_k_timescale[] = "timescale";
+static const char __pyx_k_timesteps[] = "timesteps";
 static const char __pyx_k_traceback[] = "traceback";
+static const char __pyx_k_transform[] = "transform";
 static const char __pyx_k_DATASPACES[] = "DATASPACES";
 static const char __pyx_k_IndexError[] = "IndexError";
 static const char __pyx_k_ValueError[] = "ValueError";
+static const char __pyx_k_buffersize[] = "buffersize";
 static const char __pyx_k_complex128[] = "complex128";
 static const char __pyx_k_contiguous[] = "contiguous";
 static const char __pyx_k_dimensions[] = "dimensions";
@@ -2166,14 +2202,18 @@ static const char __pyx_k_selections[] = "selections";
 static const char __pyx_k_startswith[] = "startswith";
 static const char __pyx_k_time_index[] = "time_index";
 static const char __pyx_k_time_steps[] = "time_steps";
+static const char __pyx_k_timeseries[] = "timeseries";
 static const char __pyx_k_READ_METHOD[] = "READ_METHOD";
 static const char __pyx_k_buffer_size[] = "buffer_size";
 static const char __pyx_k_concatenate[] = "concatenate";
+static const char __pyx_k_coordinates[] = "coordinates";
 static const char __pyx_k_long_double[] = "long_double";
 static const char __pyx_k_method_name[] = "method_name";
 static const char __pyx_k_read_points[] = "read_points";
 static const char __pyx_k_step_scalar[] = "step_scalar";
+static const char __pyx_k_syncgroupid[] = "syncgroupid";
 static const char __pyx_k_timeout_sec[] = "timeout_sec";
+static const char __pyx_k_timevarying[] = "timevarying";
 static const char __pyx_k_BP_AGGREGATE[] = "BP_AGGREGATE";
 static const char __pyx_k_RuntimeError[] = "RuntimeError";
 static const char __pyx_k_current_step[] = "current_step";
@@ -2192,6 +2232,7 @@ static const char __pyx_k_unsigned_long[] = "unsigned_long";
 static const char __pyx_k_FancySelection[] = "FancySelection";
 static const char __pyx_k_double_complex[] = "double_complex";
 static const char __pyx_k_exception_type[] = "exception_type";
+static const char __pyx_k_schema_version[] = "schema_version";
 static const char __pyx_k_unsigned_short[] = "unsigned_short";
 static const char __pyx_k_Not_a_valid_var[] = "Not a valid var";
 static const char __pyx_k_Not_an_open_var[] = "Not an open var";
@@ -2203,24 +2244,26 @@ static const char __pyx_k_Not_an_open_file[] = "Not an open file";
 static const char __pyx_k_unsigned_integer[] = "unsigned_integer";
 static const char __pyx_k_BUFFER_ALLOC_WHEN[] = "BUFFER_ALLOC_WHEN";
 static const char __pyx_k_global_dimensions[] = "global_dimensions";
-static const char __pyx_k_var_read_line_1265[] = "var.read (line 1265)";
+static const char __pyx_k_transform_type_str[] = "transform_type_str";
+static const char __pyx_k_var_read_line_1457[] = "var.read (line 1457)";
 static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
 static const char __pyx_k_Not_implemented_yet[] = "Not implemented yet";
 static const char __pyx_k_Not_an_open_variable[] = "Not an open variable";
+static const char __pyx_k_set_time_aggregation[] = "set_time_aggregation";
 static const char __pyx_k_Use_default_BP_method[] = ". Use default BP method";
 static const char __pyx_k_AdiosGroup_vars_r_attrs_r[] = "AdiosGroup (vars=%r, attrs=%r)";
 static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
-static const char __pyx_k_writer_define_var_line_1804[] = "writer.define_var (line 1804)";
+static const char __pyx_k_writer_define_var_line_2020[] = "writer.define_var (line 2020)";
 static const char __pyx_k_Rank_is_out_of_range_nblock_r[] = "Rank is out of range (nblock=%r)";
 static const char __pyx_k_WARN_Invalid_read_method_name[] = "[WARN] Invalid read method name:";
 static const char __pyx_k_Data_type_is_not_supported_yet[] = "Data type is not supported yet";
 static const char __pyx_k_Define_a_group_associated_with[] = "\n        Define a group associated with the file.\n\n        Args:\n            gname (str): group name.\n            method (str, optional): Adios write method (default: 'POSIX1')\n            method_params (str, optional): parameters for the write method (default: '')\n\n        Example:\n\n        >>>  fw.declare_group('group', method='MPI_, method_params='verbose=3')\n\n        ";
 static const char __pyx_k_Perform_read_Read_data_from_an[] = " Perform read.\n\n        Read data from an ADIOS BP file. Subset reading is\n        supported. Without any options, this will read out a whole\n        data.\n\n        Args:\n            offset (tuple of int, optional): offset (default: ())\n            count (tuple of int, optional): count (default: ())\n            scalar (tuple of bool, optional): scalar (default: ())\n            from_steps (int, optional): starting ste [...]
-static const char __pyx_k_writer_declare_group_line_1782[] = "writer.declare_group (line 1782)";
+static const char __pyx_k_writer_declare_group_line_1983[] = "writer.declare_group (line 1983)";
 static const char __pyx_k_AdiosFile_path_r_nvars_r_vars_r[] = "AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, current_step=%r, last_step=%r, file_size=%r)";
 static const char __pyx_k_AdiosVar_varid_r_name_r_dtype_r[] = "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)";
-static const char __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim[] = "AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)";
-static const char __pyx_k_Define_a_variable_associated_wi[] = "\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name.\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n\n        Example:\n\n        Write 'temperature' variable of size of 2x3 array.\n\n        >>>  fw.defi [...]
+static const char __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim[] = "AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)";
+static const char __pyx_k_Define_a_variable_associated_wi[] = "\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n            transform (str): transform name\n\n        Example:\n\n        Write 'temperature' variable o [...]
 static const char __pyx_k_Step_index_is_out_of_range_from[] = "Step index is out of range: from_steps=%r, nsteps=%r";
 static const char __pyx_k_Users_jyc_project_adios_devel_w[] = "/Users/jyc/project/adios-devel/wrappers/numpy/adios.pyx";
 static const char __pyx_k_Warning_No_support_yet_s_type_d[] = "Warning: No support yet: %s (type=%d, bytes=%d)";
@@ -2337,8 +2380,11 @@ static PyObject *__pyx_n_s_base_path;
 static PyObject *__pyx_n_s_bool;
 static PyObject *__pyx_n_s_bpls;
 static PyObject *__pyx_n_s_buffer_size;
+static PyObject *__pyx_n_s_buffersize;
 static PyObject *__pyx_n_s_byte;
 static PyObject *__pyx_kp_s_bytes;
+static PyObject *__pyx_n_s_cell_type;
+static PyObject *__pyx_n_s_centering;
 static PyObject *__pyx_n_s_char;
 static PyObject *__pyx_n_s_close;
 static PyObject *__pyx_n_s_comm;
@@ -2349,9 +2395,11 @@ static PyObject *__pyx_n_s_complex_2;
 static PyObject *__pyx_n_s_concatenate;
 static PyObject *__pyx_n_s_config;
 static PyObject *__pyx_n_s_contiguous;
+static PyObject *__pyx_n_s_coordinates;
 static PyObject *__pyx_n_s_copy;
 static PyObject *__pyx_n_s_count;
 static PyObject *__pyx_n_s_current_step;
+static PyObject *__pyx_n_s_data;
 static PyObject *__pyx_n_s_data_size;
 static PyObject *__pyx_n_s_declare_group;
 static PyObject *__pyx_n_s_define;
@@ -2391,7 +2439,9 @@ static PyObject *__pyx_n_s_gname;
 static PyObject *__pyx_n_s_group;
 static PyObject *__pyx_n_s_group_id;
 static PyObject *__pyx_n_s_group_name;
+static PyObject *__pyx_n_s_groupid;
 static PyObject *__pyx_n_s_hl;
+static PyObject *__pyx_n_s_hyperslab;
 static PyObject *__pyx_n_s_import;
 static PyObject *__pyx_n_s_index;
 static PyObject *__pyx_n_s_init;
@@ -2419,6 +2469,8 @@ static PyObject *__pyx_n_s_lock_mode;
 static PyObject *__pyx_n_s_long;
 static PyObject *__pyx_n_s_long_double;
 static PyObject *__pyx_n_s_main;
+static PyObject *__pyx_n_s_maximum;
+static PyObject *__pyx_n_s_meshname;
 static PyObject *__pyx_n_s_metaclass;
 static PyObject *__pyx_n_s_method;
 static PyObject *__pyx_n_s_method_name;
@@ -2435,11 +2487,14 @@ static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou;
 static PyObject *__pyx_n_s_ndim;
 static PyObject *__pyx_n_s_normalize_key;
 static PyObject *__pyx_n_s_np;
+static PyObject *__pyx_n_s_npoints;
+static PyObject *__pyx_n_s_nspace;
 static PyObject *__pyx_n_s_nsteps;
 static PyObject *__pyx_n_s_numpy;
 static PyObject *__pyx_n_s_nvars;
 static PyObject *__pyx_n_s_offset;
 static PyObject *__pyx_n_s_order;
+static PyObject *__pyx_n_s_origin;
 static PyObject *__pyx_n_s_os;
 static PyObject *__pyx_n_s_parameters;
 static PyObject *__pyx_n_s_path;
@@ -2465,13 +2520,16 @@ static PyObject *__pyx_n_s_replace;
 static PyObject *__pyx_n_s_reshape;
 static PyObject *__pyx_n_s_rstrip;
 static PyObject *__pyx_n_s_scalar;
+static PyObject *__pyx_n_s_schema_version;
 static PyObject *__pyx_n_s_sel;
 static PyObject *__pyx_n_s_select;
 static PyObject *__pyx_n_s_selections;
+static PyObject *__pyx_n_s_set_time_aggregation;
 static PyObject *__pyx_n_s_setitem;
 static PyObject *__pyx_n_s_shape;
 static PyObject *__pyx_n_s_short;
 static PyObject *__pyx_n_s_size;
+static PyObject *__pyx_n_s_spacing;
 static PyObject *__pyx_n_s_split;
 static PyObject *__pyx_n_s_start;
 static PyObject *__pyx_n_s_startswith;
@@ -2482,13 +2540,20 @@ static PyObject *__pyx_n_s_string_2;
 static PyObject *__pyx_n_s_string_array;
 static PyObject *__pyx_n_s_strip;
 static PyObject *__pyx_n_s_strlen;
+static PyObject *__pyx_n_s_syncgroupid;
 static PyObject *__pyx_n_s_t;
 static PyObject *__pyx_n_s_test;
 static PyObject *__pyx_n_s_time_index;
 static PyObject *__pyx_n_s_time_steps;
 static PyObject *__pyx_n_s_timeout_sec;
+static PyObject *__pyx_n_s_timescale;
+static PyObject *__pyx_n_s_timeseries;
+static PyObject *__pyx_n_s_timesteps;
+static PyObject *__pyx_n_s_timevarying;
 static PyObject *__pyx_n_s_tostring;
 static PyObject *__pyx_n_s_traceback;
+static PyObject *__pyx_n_s_transform;
+static PyObject *__pyx_n_s_transform_type_str;
 static PyObject *__pyx_n_s_type;
 static PyObject *__pyx_n_s_uint16;
 static PyObject *__pyx_n_s_uint32;
@@ -2505,8 +2570,9 @@ static PyObject *__pyx_n_s_val;
 static PyObject *__pyx_n_s_value;
 static PyObject *__pyx_n_s_values;
 static PyObject *__pyx_n_s_var;
+static PyObject *__pyx_n_s_var_id;
 static PyObject *__pyx_n_s_var_namelist;
-static PyObject *__pyx_kp_u_var_read_line_1265;
+static PyObject *__pyx_kp_u_var_read_line_1457;
 static PyObject *__pyx_n_s_varid;
 static PyObject *__pyx_n_s_varname;
 static PyObject *__pyx_n_s_vars;
@@ -2515,8 +2581,8 @@ static PyObject *__pyx_n_s_vp;
 static PyObject *__pyx_n_s_w;
 static PyObject *__pyx_n_s_when;
 static PyObject *__pyx_n_s_write;
-static PyObject *__pyx_kp_u_writer_declare_group_line_1782;
-static PyObject *__pyx_kp_u_writer_define_var_line_1804;
+static PyObject *__pyx_kp_u_writer_declare_group_line_1983;
+static PyObject *__pyx_kp_u_writer_define_var_line_2020;
 static PyObject *__pyx_n_s_xrange;
 static PyObject *__pyx_n_s_zeros;
 static PyObject *__pyx_n_s_zip;
@@ -2540,14 +2606,32 @@ static PyObject *__pyx_pf_5adios_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self
 static PyObject *__pyx_pf_5adios_34allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size); /* proto */
 static PyObject *__pyx_pf_5adios_36declare_group(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_time_index, int __pyx_v_stats); /* proto */
 static PyObject *__pyx_pf_5adios_38define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_global_dimensions, PyObject *__pyx_v_local_offsets); /* proto */
-static PyObject *__pyx_pf_5adios_40define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var); /* proto */
-static PyObject *__pyx_pf_5adios_42define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_44select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path); /* proto */
-static PyObject *__pyx_pf_5adios_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen); /* proto */
-static PyObject *__pyx_pf_5adios_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype); /* proto */
-static PyObject *__pyx_pf_5adios_50adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type); /* proto */
-static PyObject *__pyx_pf_5adios_52read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_parameters); /* proto */
-static PyObject *__pyx_pf_5adios_54read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name); /* proto */
+static PyObject *__pyx_pf_5adios_40define_schema_version(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_schema_version); /* proto */
+static PyObject *__pyx_pf_5adios_42define_var_mesh(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_meshname); /* proto */
+static PyObject *__pyx_pf_5adios_44define_var_centering(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_centering); /* proto */
+static PyObject *__pyx_pf_5adios_46define_var_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_48define_var_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_50define_var_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_52define_var_hyperslab(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hyperslab, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_54define_mesh_timevarying(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timevarying, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_56define_mesh_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_58define_mesh_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_60define_mesh_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_62define_mesh_uniform(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_origin, PyObject *__pyx_v_spacing, PyObject *__pyx_v_maximum, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_64define_mesh_rectilinear(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_coordinates, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_66define_mesh_structured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_points, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_68define_mesh_unstructured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_points, PyObject *__pyx_v_data, PyObject *__pyx_v_count, PyObject *__pyx_v_cell_type, PyObject *__pyx_v_npoints, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_70define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var); /* proto */
+static PyObject *__pyx_pf_5adios_72define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_74select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path); /* proto */
+static PyObject *__pyx_pf_5adios_76set_transform(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_var_id, PyObject *__pyx_v_transform_type_str); /* proto */
+static PyObject *__pyx_pf_5adios_78set_max_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_max_buffer_size_MB); /* proto */
+static PyObject *__pyx_pf_5adios_80set_time_aggregation(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_groupid, uint64_t __pyx_v_buffersize, int64_t __pyx_v_syncgroupid); /* proto */
+static PyObject *__pyx_pf_5adios_82adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen); /* proto */
+static PyObject *__pyx_pf_5adios_84np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype); /* proto */
+static PyObject *__pyx_pf_5adios_86adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type); /* proto */
+static PyObject *__pyx_pf_5adios_88read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_parameters); /* proto */
+static PyObject *__pyx_pf_5adios_90read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name); /* proto */
 static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_softdict *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
 static PyObject *__pyx_pf_5adios_4file_4name___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_5adios_4file_5nvars___get__(struct __pyx_obj_5adios_file *__pyx_v_self); /* proto */
@@ -2645,17 +2729,19 @@ static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adi
 static PyObject *__pyx_pf_5adios_6writer_4mode___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_5adios_6writer_4vars___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_5adios_6writer_5attrs___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_26timeaggregation_buffersize___get__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
 static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_fname, int __pyx_v_is_noxml, PyObject *__pyx_v_mode, MPI_Comm __pyx_v_comm); /* proto */
 static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_gname, PyObject *__pyx_v_method, PyObject *__pyx_v_method_params); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype); /* proto */
-static int __pyx_pf_5adios_6writer_10__setitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_18__enter__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_6writer_20__exit__(struct __pyx_obj_5adios_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_4set_time_aggregation(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_buffer_size); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_6define_var(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_transform); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_8define_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_10define_dynamic_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype); /* proto */
+static int __pyx_pf_5adios_6writer_12__setitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_14__getitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_16close(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_18__repr__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_20__enter__(struct __pyx_obj_5adios_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_5adios_6writer_22__exit__(struct __pyx_obj_5adios_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */
 static PyObject *__pyx_pf_5adios_8attrinfo_4name___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_5adios_8attrinfo_9is_static___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_5adios_8attrinfo_5dtype___get__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self); /* proto */
@@ -2664,7 +2750,9 @@ static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_att
 static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_dtype, int __pyx_v_is_static); /* proto */
 static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attrinfo *__pyx_v_self, int64_t __pyx_v_gid); /* proto */
 static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_attrinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_5adios_7varinfo_9transform___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_5adios_7varinfo_9transform_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value, PyObject *__pyx_v_transform); /* proto */
 static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinfo *__pyx_v_self, int64_t __pyx_v_gid); /* proto */
 static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo *__pyx_v_self, int64_t __pyx_v_fd); /* proto */
@@ -2681,8 +2769,8 @@ static int __pyx_pf_5adios_7varinfo_6offset_4__del__(struct __pyx_obj_5adios_var
 static PyObject *__pyx_pf_5adios_7varinfo_5value___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
 static int __pyx_pf_5adios_7varinfo_5value_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
 static int __pyx_pf_5adios_7varinfo_5value_4__del__(struct __pyx_obj_5adios_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname); /* proto */
-static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname); /* proto */
+static PyObject *__pyx_pf_5adios_92readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_5adios_94bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname); /* proto */
 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
 static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
 static PyObject *__pyx_tp_new_5adios_softdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
@@ -2717,13 +2805,14 @@ static PyObject *__pyx_int_neg_1;
 static MPI_Comm __pyx_k__7;
 static MPI_Comm __pyx_k__8;
 static MPI_Comm __pyx_k__9;
-static MPI_Comm __pyx_k__11;
-static MPI_Comm __pyx_k__15;
-static ADIOS_LOCKMODE __pyx_k__16;
-static MPI_Comm __pyx_k__53;
-static PyObject *__pyx_k__54;
+static int __pyx_k__11;
+static MPI_Comm __pyx_k__12;
+static MPI_Comm __pyx_k__16;
+static ADIOS_LOCKMODE __pyx_k__17;
+static MPI_Comm __pyx_k__54;
 static PyObject *__pyx_k__55;
 static PyObject *__pyx_k__56;
+static PyObject *__pyx_k__57;
 static PyObject *__pyx_k__59;
 static PyObject *__pyx_k__60;
 static PyObject *__pyx_k__61;
@@ -2732,46 +2821,45 @@ static PyObject *__pyx_slice__4;
 static PyObject *__pyx_slice__5;
 static PyObject *__pyx_tuple__2;
 static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_slice__14;
-static PyObject *__pyx_slice__21;
-static PyObject *__pyx_slice__23;
-static PyObject *__pyx_slice__26;
-static PyObject *__pyx_slice__31;
-static PyObject *__pyx_slice__35;
+static PyObject *__pyx_slice__15;
+static PyObject *__pyx_slice__22;
+static PyObject *__pyx_slice__24;
+static PyObject *__pyx_slice__27;
+static PyObject *__pyx_slice__32;
 static PyObject *__pyx_slice__36;
 static PyObject *__pyx_slice__37;
 static PyObject *__pyx_slice__38;
 static PyObject *__pyx_slice__39;
 static PyObject *__pyx_slice__40;
 static PyObject *__pyx_slice__41;
-static PyObject *__pyx_slice__46;
-static PyObject *__pyx_slice__48;
-static PyObject *__pyx_slice__51;
-static PyObject *__pyx_tuple__12;
+static PyObject *__pyx_slice__42;
+static PyObject *__pyx_slice__47;
+static PyObject *__pyx_slice__49;
+static PyObject *__pyx_slice__52;
 static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__17;
+static PyObject *__pyx_tuple__14;
 static PyObject *__pyx_tuple__18;
 static PyObject *__pyx_tuple__19;
 static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__24;
+static PyObject *__pyx_tuple__21;
+static PyObject *__pyx_tuple__23;
 static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__26;
 static PyObject *__pyx_tuple__28;
 static PyObject *__pyx_tuple__29;
 static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__31;
 static PyObject *__pyx_tuple__33;
 static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__42;
+static PyObject *__pyx_tuple__35;
 static PyObject *__pyx_tuple__43;
 static PyObject *__pyx_tuple__44;
 static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__49;
+static PyObject *__pyx_tuple__46;
+static PyObject *__pyx_tuple__48;
 static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_tuple__57;
+static PyObject *__pyx_tuple__51;
+static PyObject *__pyx_tuple__53;
 static PyObject *__pyx_tuple__58;
 static PyObject *__pyx_tuple__62;
 static PyObject *__pyx_tuple__64;
@@ -3566,7 +3654,7 @@ static char **__pyx_f_5adios_to_cstring_array(PyObject *__pyx_v_list_str) {
   return __pyx_r;
 }
 
-/* "adios.pyx":349
+/* "adios.pyx":433
  *     ALL =2
  * 
  * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
@@ -3595,7 +3683,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
   __Pyx_RefNannySetupContext("__parse_index", 0);
   __Pyx_INCREF(__pyx_v_index);
 
-  /* "adios.pyx":351
+  /* "adios.pyx":435
  * cpdef __parse_index(index, ndim):
  *     # Fix index, handling ellipsis and incomplete slices.
  *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
@@ -3606,14 +3694,14 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":352
+    /* "adios.pyx":436
  *     # Fix index, handling ellipsis and incomplete slices.
  *     if not isinstance(index, tuple):
  *         index = (index,)             # <<<<<<<<<<<<<<
  * 
  *     fixed = []
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 436, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_index);
     __Pyx_GIVEREF(__pyx_v_index);
@@ -3621,7 +3709,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
     __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":351
+    /* "adios.pyx":435
  * cpdef __parse_index(index, ndim):
  *     # Fix index, handling ellipsis and incomplete slices.
  *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
@@ -3630,32 +3718,32 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
  */
   }
 
-  /* "adios.pyx":354
+  /* "adios.pyx":438
  *         index = (index,)
  * 
  *     fixed = []             # <<<<<<<<<<<<<<
  *     length = len(index)
  * 
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L1_error)
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_fixed = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":355
+  /* "adios.pyx":439
  * 
  *     fixed = []
  *     length = len(index)             # <<<<<<<<<<<<<<
  * 
  *     for slice_ in index:
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 355, __pyx_L1_error)
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 439, __pyx_L1_error)
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_length = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":357
+  /* "adios.pyx":441
  *     length = len(index)
  * 
  *     for slice_ in index:             # <<<<<<<<<<<<<<
@@ -3666,26 +3754,26 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
     __pyx_t_3 = __pyx_v_index; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 357, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 441, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_5)) {
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 357, __pyx_L1_error)
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 441, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 441, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 357, __pyx_L1_error)
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 441, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 441, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       }
@@ -3695,7 +3783,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 357, __pyx_L1_error)
+          else __PYX_ERR(0, 441, __pyx_L1_error)
         }
         break;
       }
@@ -3704,7 +3792,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
     __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "adios.pyx":358
+    /* "adios.pyx":442
  * 
  *     for slice_ in index:
  *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
@@ -3715,40 +3803,40 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":359
+      /* "adios.pyx":443
  *     for slice_ in index:
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))             # <<<<<<<<<<<<<<
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  */
-      __pyx_t_6 = PyNumber_Subtract(__pyx_v_ndim, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 359, __pyx_L1_error)
+      __pyx_t_6 = PyNumber_Subtract(__pyx_v_ndim, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PyList_GET_SIZE(__pyx_v_fixed); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 359, __pyx_L1_error)
-      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L1_error)
+      __pyx_t_7 = PyList_GET_SIZE(__pyx_v_fixed); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 443, __pyx_L1_error)
+      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 359, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 359, __pyx_L1_error)
+      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_slice__4);
       __Pyx_GIVEREF(__pyx_slice__4);
       PyList_SET_ITEM(__pyx_t_9, 0, __pyx_slice__4);
-      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 359, __pyx_L1_error)
+      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 443, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_temp);
         __Pyx_DECREF(__pyx_t_9);
         __pyx_t_9 = __pyx_temp;
       }
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_10 = __Pyx_PyList_Extend(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 359, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Extend(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 443, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "adios.pyx":358
+      /* "adios.pyx":442
  * 
  *     for slice_ in index:
  *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
@@ -3758,7 +3846,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
       goto __pyx_L6;
     }
 
-    /* "adios.pyx":360
+    /* "adios.pyx":444
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  *         elif isinstance(slice_, (int, long)):             # <<<<<<<<<<<<<<
@@ -3779,22 +3867,22 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":361
+      /* "adios.pyx":445
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))             # <<<<<<<<<<<<<<
  *         elif isinstance(slice_, (float)):
  *             fixed.append(slice(int(slice_), int(slice_)+1, None))
  */
-      __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_slice_, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 361, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_slice_, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 445, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_8 = PySlice_New(__pyx_v_slice_, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 361, __pyx_L1_error)
+      __pyx_t_8 = PySlice_New(__pyx_v_slice_, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 445, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_8); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 361, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_8); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 445, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "adios.pyx":360
+      /* "adios.pyx":444
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  *         elif isinstance(slice_, (int, long)):             # <<<<<<<<<<<<<<
@@ -3804,7 +3892,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
       goto __pyx_L6;
     }
 
-    /* "adios.pyx":362
+    /* "adios.pyx":446
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  *         elif isinstance(slice_, (float)):             # <<<<<<<<<<<<<<
@@ -3815,28 +3903,28 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":363
+      /* "adios.pyx":447
  *             fixed.append(slice(slice_, slice_+1, None))
  *         elif isinstance(slice_, (float)):
  *             fixed.append(slice(int(slice_), int(slice_)+1, None))             # <<<<<<<<<<<<<<
  *         else:
  *             fixed.append(slice_)
  */
-      __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 363, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 447, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 363, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 447, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 363, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 447, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PySlice_New(__pyx_t_8, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 363, __pyx_L1_error)
+      __pyx_t_9 = PySlice_New(__pyx_t_8, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 447, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 363, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 447, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "adios.pyx":362
+      /* "adios.pyx":446
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  *         elif isinstance(slice_, (float)):             # <<<<<<<<<<<<<<
@@ -3846,7 +3934,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
       goto __pyx_L6;
     }
 
-    /* "adios.pyx":365
+    /* "adios.pyx":449
  *             fixed.append(slice(int(slice_), int(slice_)+1, None))
  *         else:
  *             fixed.append(slice_)             # <<<<<<<<<<<<<<
@@ -3854,23 +3942,23 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
  * 
  */
     /*else*/ {
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_v_slice_); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 365, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_v_slice_); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 449, __pyx_L1_error)
     }
     __pyx_L6:;
 
-    /* "adios.pyx":366
+    /* "adios.pyx":450
  *         else:
  *             fixed.append(slice_)
  *         length -= 1             # <<<<<<<<<<<<<<
  * 
  *     index = tuple(fixed)
  */
-    __pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_v_length, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 366, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_v_length, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 450, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF_SET(__pyx_v_length, __pyx_t_9);
     __pyx_t_9 = 0;
 
-    /* "adios.pyx":357
+    /* "adios.pyx":441
  *     length = len(index)
  * 
  *     for slice_ in index:             # <<<<<<<<<<<<<<
@@ -3880,57 +3968,57 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":368
+  /* "adios.pyx":452
  *         length -= 1
  * 
  *     index = tuple(fixed)             # <<<<<<<<<<<<<<
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))
  */
-  __pyx_t_3 = PyList_AsTuple(__pyx_v_fixed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error)
+  __pyx_t_3 = PyList_AsTuple(__pyx_v_fixed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":369
+  /* "adios.pyx":453
  * 
  *     index = tuple(fixed)
  *     if len(index) < ndim:             # <<<<<<<<<<<<<<
  *         index += (slice(None),) * (ndim-len(index))
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 369, __pyx_L1_error)
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 453, __pyx_L1_error)
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_v_ndim, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_v_ndim, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 453, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 453, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   if (__pyx_t_1) {
 
-    /* "adios.pyx":370
+    /* "adios.pyx":454
  *     index = tuple(fixed)
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))             # <<<<<<<<<<<<<<
  * 
  *     return index
  */
-    __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 370, __pyx_L1_error)
-    __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 370, __pyx_L1_error)
+    __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 454, __pyx_L1_error)
+    __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 454, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_3 = PyNumber_Subtract(__pyx_v_ndim, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 370, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Subtract(__pyx_v_ndim, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = PyNumber_Multiply(__pyx_tuple__6, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 370, __pyx_L1_error)
+    __pyx_t_9 = PyNumber_Multiply(__pyx_tuple__6, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 454, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 370, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 454, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":369
+    /* "adios.pyx":453
  * 
  *     index = tuple(fixed)
  *     if len(index) < ndim:             # <<<<<<<<<<<<<<
@@ -3939,7 +4027,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
  */
   }
 
-  /* "adios.pyx":372
+  /* "adios.pyx":456
  *         index += (slice(None),) * (ndim-len(index))
  * 
  *     return index             # <<<<<<<<<<<<<<
@@ -3951,7 +4039,7 @@ static PyObject *__pyx_f_5adios___parse_index(PyObject *__pyx_v_index, PyObject
   __pyx_r = __pyx_v_index;
   goto __pyx_L0;
 
-  /* "adios.pyx":349
+  /* "adios.pyx":433
  *     ALL =2
  * 
  * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
@@ -4006,11 +4094,11 @@ static PyObject *__pyx_pw_5adios_9__parse_index(PyObject *__pyx_self, PyObject *
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ndim)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, 1); __PYX_ERR(0, 349, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, 1); __PYX_ERR(0, 433, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) __PYX_ERR(0, 349, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) __PYX_ERR(0, 433, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -4023,7 +4111,7 @@ static PyObject *__pyx_pw_5adios_9__parse_index(PyObject *__pyx_self, PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 349, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 433, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -4042,7 +4130,7 @@ static PyObject *__pyx_pf_5adios_8__parse_index(CYTHON_UNUSED PyObject *__pyx_se
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__parse_index", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios___parse_index(__pyx_v_index, __pyx_v_ndim, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 349, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios___parse_index(__pyx_v_index, __pyx_v_ndim, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4059,7 +4147,7 @@ static PyObject *__pyx_pf_5adios_8__parse_index(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "adios.pyx":381
+/* "adios.pyx":465
  * cdef MPI_Comm read_init_comm
  * 
  * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -4082,7 +4170,7 @@ static PyObject *__pyx_f_5adios_init(PyObject *__pyx_v_config, CYTHON_UNUSED int
     }
   }
 
-  /* "adios.pyx":383
+  /* "adios.pyx":467
  * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):
  *     global init_comm
  *     init_comm = comm             # <<<<<<<<<<<<<<
@@ -4091,7 +4179,7 @@ static PyObject *__pyx_f_5adios_init(PyObject *__pyx_v_config, CYTHON_UNUSED int
  */
   __pyx_v_5adios_init_comm = __pyx_v_comm;
 
-  /* "adios.pyx":384
+  /* "adios.pyx":468
  *     global init_comm
  *     init_comm = comm
  *     return adios_init(s2b(config), init_comm)             # <<<<<<<<<<<<<<
@@ -4099,17 +4187,17 @@ static PyObject *__pyx_f_5adios_init(PyObject *__pyx_v_config, CYTHON_UNUSED int
  * cpdef int64_t open(str group_name,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_config, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_config, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyInt_From_int(adios_init(__pyx_t_2, __pyx_v_5adios_init_comm)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 384, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 468, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(adios_init(__pyx_t_2, __pyx_v_5adios_init_comm)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":381
+  /* "adios.pyx":465
  * cdef MPI_Comm read_init_comm
  * 
  * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -4162,7 +4250,7 @@ static PyObject *__pyx_pw_5adios_11init(PyObject *__pyx_self, PyObject *__pyx_ar
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 381, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 465, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -4174,20 +4262,20 @@ static PyObject *__pyx_pw_5adios_11init(PyObject *__pyx_self, PyObject *__pyx_ar
     }
     __pyx_v_config = ((PyObject*)values[0]);
     if (values[1]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[1]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L3_error)
+      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[1]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 465, __pyx_L3_error)
     } else {
       __pyx_v_comm = __pyx_k__7;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 381, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 465, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), (&PyString_Type), 1, "config", 1))) __PYX_ERR(0, 381, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), (&PyString_Type), 1, "config", 1))) __PYX_ERR(0, 465, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_10init(__pyx_self, __pyx_v_config, __pyx_v_comm);
 
   /* function exit code */
@@ -4208,7 +4296,7 @@ static PyObject *__pyx_pf_5adios_10init(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.comm = __pyx_v_comm;
-  __pyx_t_1 = __pyx_f_5adios_init(__pyx_v_config, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_init(__pyx_v_config, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4225,7 +4313,7 @@ static PyObject *__pyx_pf_5adios_10init(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   return __pyx_r;
 }
 
-/* "adios.pyx":386
+/* "adios.pyx":470
  *     return adios_init(s2b(config), init_comm)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -4253,28 +4341,28 @@ static int64_t __pyx_f_5adios_open(PyObject *__pyx_v_group_name, PyObject *__pyx
     }
   }
 
-  /* "adios.pyx":392
+  /* "adios.pyx":476
  *     cdef int64_t fd
  *     cdef int result
  *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm)             # <<<<<<<<<<<<<<
  *     return fd
  * 
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_group_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_group_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 392, __pyx_L1_error)
-  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 392, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 392, __pyx_L1_error)
-  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_mode, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_mode, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 392, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error)
   __pyx_v_result = adios_open((&__pyx_v_fd), __pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_v_comm);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":393
+  /* "adios.pyx":477
  *     cdef int result
  *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm)
  *     return fd             # <<<<<<<<<<<<<<
@@ -4284,7 +4372,7 @@ static int64_t __pyx_f_5adios_open(PyObject *__pyx_v_group_name, PyObject *__pyx
   __pyx_r = __pyx_v_fd;
   goto __pyx_L0;
 
-  /* "adios.pyx":386
+  /* "adios.pyx":470
  *     return adios_init(s2b(config), init_comm)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -4337,12 +4425,12 @@ static PyObject *__pyx_pw_5adios_13open(PyObject *__pyx_self, PyObject *__pyx_ar
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 1); __PYX_ERR(0, 386, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 1); __PYX_ERR(0, 470, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 2); __PYX_ERR(0, 386, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 2); __PYX_ERR(0, 470, __pyx_L3_error)
         }
         case  3:
         if (kw_args > 0) {
@@ -4351,7 +4439,7 @@ static PyObject *__pyx_pw_5adios_13open(PyObject *__pyx_self, PyObject *__pyx_ar
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) __PYX_ERR(0, 386, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) __PYX_ERR(0, 470, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -4367,22 +4455,22 @@ static PyObject *__pyx_pw_5adios_13open(PyObject *__pyx_self, PyObject *__pyx_ar
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_mode = ((PyObject*)values[2]);
     if (values[3]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[3]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 389, __pyx_L3_error)
+      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[3]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 473, __pyx_L3_error)
     } else {
       __pyx_v_comm = __pyx_k__8;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 386, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 470, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group_name), (&PyString_Type), 1, "group_name", 1))) __PYX_ERR(0, 386, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 387, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 388, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group_name), (&PyString_Type), 1, "group_name", 1))) __PYX_ERR(0, 470, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 471, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 472, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_12open(__pyx_self, __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm);
 
   /* function exit code */
@@ -4405,7 +4493,7 @@ static PyObject *__pyx_pf_5adios_12open(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_t_1 = __pyx_f_5adios_open(__pyx_v_group_name, __pyx_v_name, __pyx_v_mode, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 386, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 470, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -4422,7 +4510,7 @@ static PyObject *__pyx_pf_5adios_12open(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   return __pyx_r;
 }
 
-/* "adios.pyx":395
+/* "adios.pyx":479
  *     return fd
  * 
  * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
@@ -4438,7 +4526,7 @@ static int64_t __pyx_f_5adios_set_group_size(int64_t __pyx_v_fd_p, uint64_t __py
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("set_group_size", 0);
 
-  /* "adios.pyx":398
+  /* "adios.pyx":482
  *     cdef uint64_t total_size
  *     cdef int result
  *     result = adios_group_size(fd_p, data_size, &total_size)             # <<<<<<<<<<<<<<
@@ -4447,7 +4535,7 @@ static int64_t __pyx_f_5adios_set_group_size(int64_t __pyx_v_fd_p, uint64_t __py
  */
   __pyx_v_result = adios_group_size(__pyx_v_fd_p, __pyx_v_data_size, (&__pyx_v_total_size));
 
-  /* "adios.pyx":399
+  /* "adios.pyx":483
  *     cdef int result
  *     result = adios_group_size(fd_p, data_size, &total_size)
  *     return total_size             # <<<<<<<<<<<<<<
@@ -4457,7 +4545,7 @@ static int64_t __pyx_f_5adios_set_group_size(int64_t __pyx_v_fd_p, uint64_t __py
   __pyx_r = __pyx_v_total_size;
   goto __pyx_L0;
 
-  /* "adios.pyx":395
+  /* "adios.pyx":479
  *     return fd
  * 
  * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
@@ -4500,11 +4588,11 @@ static PyObject *__pyx_pw_5adios_15set_group_size(PyObject *__pyx_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data_size)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, 1); __PYX_ERR(0, 395, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, 1); __PYX_ERR(0, 479, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) __PYX_ERR(0, 395, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) __PYX_ERR(0, 479, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -4512,12 +4600,12 @@ static PyObject *__pyx_pw_5adios_15set_group_size(PyObject *__pyx_self, PyObject
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
-    __pyx_v_data_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_data_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 395, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 479, __pyx_L3_error)
+    __pyx_v_data_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_data_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 479, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 395, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 479, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -4536,7 +4624,7 @@ static PyObject *__pyx_pf_5adios_14set_group_size(CYTHON_UNUSED PyObject *__pyx_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("set_group_size", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_f_5adios_set_group_size(__pyx_v_fd_p, __pyx_v_data_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 395, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_f_5adios_set_group_size(__pyx_v_fd_p, __pyx_v_data_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4553,7 +4641,7 @@ static PyObject *__pyx_pf_5adios_14set_group_size(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":401
+/* "adios.pyx":485
  *     return total_size
  * 
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
@@ -4583,7 +4671,7 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
     }
   }
 
-  /* "adios.pyx":403
+  /* "adios.pyx":487
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -4594,36 +4682,36 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":404
+    /* "adios.pyx":488
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):
  *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
  *             val_ = val
  *         else:
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 404, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 404, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 404, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 488, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_2) {
 
-      /* "adios.pyx":405
+      /* "adios.pyx":489
  *     if isinstance(val, (np.ndarray)):
  *         if val.flags.contiguous:
  *             val_ = val             # <<<<<<<<<<<<<<
  *         else:
  *             val_ = np.array(val, copy=True)
  */
-      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 405, __pyx_L1_error)
+      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 489, __pyx_L1_error)
       __pyx_t_4 = __pyx_v_val;
       __Pyx_INCREF(__pyx_t_4);
       __pyx_v_val_ = ((PyArrayObject *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "adios.pyx":404
+      /* "adios.pyx":488
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):
  *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
@@ -4633,7 +4721,7 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
       goto __pyx_L4;
     }
 
-    /* "adios.pyx":407
+    /* "adios.pyx":491
  *             val_ = val
  *         else:
  *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
@@ -4641,31 +4729,31 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
  *         val_ = np.array(val, dtype=dtype)
  */
     /*else*/ {
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 407, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 407, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 491, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 407, __pyx_L1_error)
+      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 491, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 407, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 491, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 491, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 407, __pyx_L1_error)
+      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 491, __pyx_L1_error)
       __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
       __pyx_t_6 = 0;
     }
     __pyx_L4:;
 
-    /* "adios.pyx":403
+    /* "adios.pyx":487
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -4675,7 +4763,7 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":409
+  /* "adios.pyx":493
  *             val_ = np.array(val, copy=True)
  *     else:
  *         val_ = np.array(val, dtype=dtype)             # <<<<<<<<<<<<<<
@@ -4683,63 +4771,63 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
  *     cdef void * ptr
  */
   /*else*/ {
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 409, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 493, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 409, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 493, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 409, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 493, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_v_val);
     __Pyx_GIVEREF(__pyx_v_val);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_val);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 409, __pyx_L1_error)
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 493, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 409, __pyx_L1_error)
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 493, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 493, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 409, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 493, __pyx_L1_error)
     __pyx_v_val_ = ((PyArrayObject *)__pyx_t_3);
     __pyx_t_3 = 0;
   }
   __pyx_L3:;
 
-  /* "adios.pyx":412
+  /* "adios.pyx":496
  * 
  *     cdef void * ptr
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
  *         bstr = val_.tostring()
  *         ptr = <void *> PyBytes_AS_STRING(bstr)
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 412, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_char); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_char); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 412, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 496, __pyx_L1_error)
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 412, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 496, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_1;
   __pyx_L6_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":413
+    /* "adios.pyx":497
  *     cdef void * ptr
  *     if (val_.dtype.char in ('S', 'U')):
  *         bstr = val_.tostring()             # <<<<<<<<<<<<<<
  *         ptr = <void *> PyBytes_AS_STRING(bstr)
  *     else:
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 413, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 497, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -4752,17 +4840,17 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
       }
     }
     if (__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 413, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 413, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 497, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_bstr = __pyx_t_4;
     __pyx_t_4 = 0;
 
-    /* "adios.pyx":414
+    /* "adios.pyx":498
  *     if (val_.dtype.char in ('S', 'U')):
  *         bstr = val_.tostring()
  *         ptr = <void *> PyBytes_AS_STRING(bstr)             # <<<<<<<<<<<<<<
@@ -4771,7 +4859,7 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
  */
     __pyx_v_ptr = ((void *)PyBytes_AS_STRING(__pyx_v_bstr));
 
-    /* "adios.pyx":412
+    /* "adios.pyx":496
  * 
  *     cdef void * ptr
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
@@ -4781,7 +4869,7 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
     goto __pyx_L5;
   }
 
-  /* "adios.pyx":416
+  /* "adios.pyx":500
  *         ptr = <void *> PyBytes_AS_STRING(bstr)
  *     else:
  *         ptr = <void *> val_.data             # <<<<<<<<<<<<<<
@@ -4793,21 +4881,21 @@ static int __pyx_f_5adios_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, Py
   }
   __pyx_L5:;
 
-  /* "adios.pyx":418
+  /* "adios.pyx":502
  *         ptr = <void *> val_.data
  * 
  *     return adios_write (fd_p, s2b(name), ptr)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):
  */
-  __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 418, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 502, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 418, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 502, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_7, __pyx_v_ptr);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":401
+  /* "adios.pyx":485
  *     return total_size
  * 
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
@@ -4864,12 +4952,12 @@ static PyObject *__pyx_pw_5adios_17write(PyObject *__pyx_self, PyObject *__pyx_a
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 1); __PYX_ERR(0, 401, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 1); __PYX_ERR(0, 485, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 2); __PYX_ERR(0, 401, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 2); __PYX_ERR(0, 485, __pyx_L3_error)
         }
         case  3:
         if (kw_args > 0) {
@@ -4878,7 +4966,7 @@ static PyObject *__pyx_pw_5adios_17write(PyObject *__pyx_self, PyObject *__pyx_a
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 401, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 485, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -4890,20 +4978,20 @@ static PyObject *__pyx_pw_5adios_17write(PyObject *__pyx_self, PyObject *__pyx_a
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 485, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_val = values[2];
     __pyx_v_dtype = values[3];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 401, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 485, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 401, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 485, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_16write(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val, __pyx_v_dtype);
 
   /* function exit code */
@@ -4926,7 +5014,7 @@ static PyObject *__pyx_pf_5adios_16write(CYTHON_UNUSED PyObject *__pyx_self, int
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.dtype = __pyx_v_dtype;
   __pyx_t_1 = __pyx_f_5adios_write(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 485, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -4943,7 +5031,7 @@ static PyObject *__pyx_pf_5adios_16write(CYTHON_UNUSED PyObject *__pyx_self, int
   return __pyx_r;
 }
 
-/* "adios.pyx":420
+/* "adios.pyx":504
  *     return adios_write (fd_p, s2b(name), ptr)
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
@@ -4959,21 +5047,21 @@ static int __pyx_f_5adios_write_int(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_int", 0);
 
-  /* "adios.pyx":421
+  /* "adios.pyx":505
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 421, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 505, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":420
+  /* "adios.pyx":504
  *     return adios_write (fd_p, s2b(name), ptr)
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
@@ -5022,16 +5110,16 @@ static PyObject *__pyx_pw_5adios_19write_int(PyObject *__pyx_self, PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 1); __PYX_ERR(0, 420, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 1); __PYX_ERR(0, 504, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 2); __PYX_ERR(0, 420, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 2); __PYX_ERR(0, 504, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) __PYX_ERR(0, 420, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) __PYX_ERR(0, 504, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5040,19 +5128,19 @@ static PyObject *__pyx_pw_5adios_19write_int(PyObject *__pyx_self, PyObject *__p
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 420, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 504, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 420, __pyx_L3_error)
+    __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 504, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 420, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 504, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 420, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 504, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_18write_int(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5070,7 +5158,7 @@ static PyObject *__pyx_pf_5adios_18write_int(CYTHON_UNUSED PyObject *__pyx_self,
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_int", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_int(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_int(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5087,7 +5175,7 @@ static PyObject *__pyx_pf_5adios_18write_int(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios.pyx":423
+/* "adios.pyx":507
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
@@ -5103,21 +5191,21 @@ static int __pyx_f_5adios_write_long(int64_t __pyx_v_fd_p, PyObject *__pyx_v_nam
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_long", 0);
 
-  /* "adios.pyx":424
+  /* "adios.pyx":508
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 424, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 508, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":423
+  /* "adios.pyx":507
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
@@ -5166,16 +5254,16 @@ static PyObject *__pyx_pw_5adios_21write_long(PyObject *__pyx_self, PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 1); __PYX_ERR(0, 423, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 1); __PYX_ERR(0, 507, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 2); __PYX_ERR(0, 423, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 2); __PYX_ERR(0, 507, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) __PYX_ERR(0, 423, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) __PYX_ERR(0, 507, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5184,19 +5272,19 @@ static PyObject *__pyx_pw_5adios_21write_long(PyObject *__pyx_self, PyObject *__
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 423, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __Pyx_PyInt_As_long(values[2]); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 423, __pyx_L3_error)
+    __pyx_v_val = __Pyx_PyInt_As_long(values[2]); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 423, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 507, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 423, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 507, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_20write_long(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5214,7 +5302,7 @@ static PyObject *__pyx_pf_5adios_20write_long(CYTHON_UNUSED PyObject *__pyx_self
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_long", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_long(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_long(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5231,7 +5319,7 @@ static PyObject *__pyx_pf_5adios_20write_long(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "adios.pyx":426
+/* "adios.pyx":510
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
@@ -5247,21 +5335,21 @@ static int __pyx_f_5adios_write_float(int64_t __pyx_v_fd_p, PyObject *__pyx_v_na
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_float", 0);
 
-  /* "adios.pyx":427
+  /* "adios.pyx":511
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 511, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 427, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 511, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":426
+  /* "adios.pyx":510
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
@@ -5310,16 +5398,16 @@ static PyObject *__pyx_pw_5adios_23write_float(PyObject *__pyx_self, PyObject *_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 1); __PYX_ERR(0, 426, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 1); __PYX_ERR(0, 510, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); __PYX_ERR(0, 426, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); __PYX_ERR(0, 510, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) __PYX_ERR(0, 426, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) __PYX_ERR(0, 510, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5328,19 +5416,19 @@ static PyObject *__pyx_pw_5adios_23write_float(PyObject *__pyx_self, PyObject *_
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 426, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 426, __pyx_L3_error)
+    __pyx_v_val = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 426, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 510, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 426, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 510, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_22write_float(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5358,7 +5446,7 @@ static PyObject *__pyx_pf_5adios_22write_float(CYTHON_UNUSED PyObject *__pyx_sel
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_float", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_float(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_float(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5375,7 +5463,7 @@ static PyObject *__pyx_pf_5adios_22write_float(CYTHON_UNUSED PyObject *__pyx_sel
   return __pyx_r;
 }
 
-/* "adios.pyx":429
+/* "adios.pyx":513
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
@@ -5391,21 +5479,21 @@ static int __pyx_f_5adios_write_double(int64_t __pyx_v_fd_p, PyObject *__pyx_v_n
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_double", 0);
 
-  /* "adios.pyx":430
+  /* "adios.pyx":514
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 430, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 514, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":429
+  /* "adios.pyx":513
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
@@ -5454,16 +5542,16 @@ static PyObject *__pyx_pw_5adios_25write_double(PyObject *__pyx_self, PyObject *
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 1); __PYX_ERR(0, 429, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 1); __PYX_ERR(0, 513, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 2); __PYX_ERR(0, 429, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 2); __PYX_ERR(0, 513, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) __PYX_ERR(0, 429, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) __PYX_ERR(0, 513, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5472,19 +5560,19 @@ static PyObject *__pyx_pw_5adios_25write_double(PyObject *__pyx_self, PyObject *
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 429, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 429, __pyx_L3_error)
+    __pyx_v_val = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 429, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 513, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 429, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 513, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_24write_double(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5502,7 +5590,7 @@ static PyObject *__pyx_pf_5adios_24write_double(CYTHON_UNUSED PyObject *__pyx_se
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_double", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_double(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_write_double(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5519,7 +5607,7 @@ static PyObject *__pyx_pf_5adios_24write_double(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "adios.pyx":433
+/* "adios.pyx":517
  * 
  * 
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):             # <<<<<<<<<<<<<<
@@ -5540,7 +5628,7 @@ static int __pyx_f_5adios_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyA
   uint64_t __pyx_t_7;
   __Pyx_RefNannySetupContext("read", 0);
 
-  /* "adios.pyx":434
+  /* "adios.pyx":518
  * 
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):
  *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'             # <<<<<<<<<<<<<<
@@ -5549,36 +5637,36 @@ static int __pyx_f_5adios_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyA
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 434, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 434, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 518, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (unlikely(!__pyx_t_3)) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Only_contiguous_arrays_are_suppo);
-      __PYX_ERR(0, 434, __pyx_L1_error)
+      __PYX_ERR(0, 518, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":435
+  /* "adios.pyx":519
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):
  *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
  *     print ("Reading ... ", val.itemsize * val.size, "(bytes)")             # <<<<<<<<<<<<<<
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_kp_s_Reading);
   __Pyx_GIVEREF(__pyx_kp_s_Reading);
@@ -5589,36 +5677,36 @@ static int __pyx_f_5adios_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name, PyA
   __Pyx_GIVEREF(__pyx_kp_s_bytes);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_s_bytes);
   __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":436
+  /* "adios.pyx":520
  *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
  *     print ("Reading ... ", val.itemsize * val.size, "(bytes)")
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)             # <<<<<<<<<<<<<<
  * 
  * cpdef int close(int64_t fd_p):
  */
-  __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 436, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 436, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 436, __pyx_L1_error)
+  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_7 = __Pyx_PyInt_As_uint64_t(__pyx_t_6); if (unlikely((__pyx_t_7 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyInt_As_uint64_t(__pyx_t_6); if (unlikely((__pyx_t_7 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_r = adios_read(__pyx_v_fd_p, __pyx_t_5, ((void *)__pyx_v_val->data), __pyx_t_7);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":433
+  /* "adios.pyx":517
  * 
  * 
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):             # <<<<<<<<<<<<<<
@@ -5670,16 +5758,16 @@ static PyObject *__pyx_pw_5adios_27read(PyObject *__pyx_self, PyObject *__pyx_ar
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 1); __PYX_ERR(0, 433, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 1); __PYX_ERR(0, 517, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); __PYX_ERR(0, 433, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); __PYX_ERR(0, 517, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 433, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 517, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5688,20 +5776,20 @@ static PyObject *__pyx_pw_5adios_27read(PyObject *__pyx_self, PyObject *__pyx_ar
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 433, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 517, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_val = ((PyArrayObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 433, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 517, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 433, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_val), __pyx_ptype_5numpy_ndarray, 1, "val", 0))) __PYX_ERR(0, 433, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 517, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_val), __pyx_ptype_5numpy_ndarray, 1, "val", 0))) __PYX_ERR(0, 517, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_26read(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5719,7 +5807,7 @@ static PyObject *__pyx_pf_5adios_26read(CYTHON_UNUSED PyObject *__pyx_self, int6
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_read(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_read(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5736,7 +5824,7 @@ static PyObject *__pyx_pf_5adios_26read(CYTHON_UNUSED PyObject *__pyx_self, int6
   return __pyx_r;
 }
 
-/* "adios.pyx":438
+/* "adios.pyx":522
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
  * 
  * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
@@ -5750,7 +5838,7 @@ static int __pyx_f_5adios_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __pyx_sk
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "adios.pyx":439
+  /* "adios.pyx":523
  * 
  * cpdef int close(int64_t fd_p):
  *     return adios_close(fd_p)             # <<<<<<<<<<<<<<
@@ -5760,7 +5848,7 @@ static int __pyx_f_5adios_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __pyx_sk
   __pyx_r = adios_close(__pyx_v_fd_p);
   goto __pyx_L0;
 
-  /* "adios.pyx":438
+  /* "adios.pyx":522
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
  * 
  * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
@@ -5783,7 +5871,7 @@ static PyObject *__pyx_pw_5adios_29close(PyObject *__pyx_self, PyObject *__pyx_a
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close (wrapper)", 0);
   assert(__pyx_arg_fd_p); {
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(__pyx_arg_fd_p); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 438, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(__pyx_arg_fd_p); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 522, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -5804,7 +5892,7 @@ static PyObject *__pyx_pf_5adios_28close(CYTHON_UNUSED PyObject *__pyx_self, int
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_close(__pyx_v_fd_p, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_close(__pyx_v_fd_p, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5821,7 +5909,7 @@ static PyObject *__pyx_pf_5adios_28close(CYTHON_UNUSED PyObject *__pyx_self, int
   return __pyx_r;
 }
 
-/* "adios.pyx":441
+/* "adios.pyx":525
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -5841,7 +5929,7 @@ static int __pyx_f_5adios_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct
     }
   }
 
-  /* "adios.pyx":442
+  /* "adios.pyx":526
  * 
  * cpdef int finalize(int mype = 0):
  *     return adios_finalize(mype)             # <<<<<<<<<<<<<<
@@ -5851,7 +5939,7 @@ static int __pyx_f_5adios_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct
   __pyx_r = adios_finalize(__pyx_v_mype);
   goto __pyx_L0;
 
-  /* "adios.pyx":441
+  /* "adios.pyx":525
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -5893,7 +5981,7 @@ static PyObject *__pyx_pw_5adios_31finalize(PyObject *__pyx_self, PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) __PYX_ERR(0, 441, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) __PYX_ERR(0, 525, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -5903,14 +5991,14 @@ static PyObject *__pyx_pw_5adios_31finalize(PyObject *__pyx_self, PyObject *__py
       }
     }
     if (values[0]) {
-      __pyx_v_mype = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_mype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 441, __pyx_L3_error)
+      __pyx_v_mype = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_mype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 525, __pyx_L3_error)
     } else {
       __pyx_v_mype = ((int)0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 441, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 525, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -5934,7 +6022,7 @@ static PyObject *__pyx_pf_5adios_30finalize(CYTHON_UNUSED PyObject *__pyx_self,
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.mype = __pyx_v_mype;
   __pyx_t_1 = __pyx_f_5adios_finalize(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -5951,7 +6039,7 @@ static PyObject *__pyx_pf_5adios_30finalize(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios.pyx":448
+/* "adios.pyx":532
  * ## ====================
  * 
  * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -5971,7 +6059,7 @@ static int __pyx_f_5adios_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, stru
     }
   }
 
-  /* "adios.pyx":450
+  /* "adios.pyx":534
  * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):
  *     global init_comm
  *     init_comm = comm             # <<<<<<<<<<<<<<
@@ -5980,7 +6068,7 @@ static int __pyx_f_5adios_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, stru
  */
   __pyx_v_5adios_init_comm = __pyx_v_comm;
 
-  /* "adios.pyx":451
+  /* "adios.pyx":535
  *     global init_comm
  *     init_comm = comm
  *     return adios_init_noxml(init_comm)             # <<<<<<<<<<<<<<
@@ -5990,7 +6078,7 @@ static int __pyx_f_5adios_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch, stru
   __pyx_r = adios_init_noxml(__pyx_v_5adios_init_comm);
   goto __pyx_L0;
 
-  /* "adios.pyx":448
+  /* "adios.pyx":532
  * ## ====================
  * 
  * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -6032,7 +6120,7 @@ static PyObject *__pyx_pw_5adios_33init_noxml(PyObject *__pyx_self, PyObject *__
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) __PYX_ERR(0, 448, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) __PYX_ERR(0, 532, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -6042,14 +6130,14 @@ static PyObject *__pyx_pw_5adios_33init_noxml(PyObject *__pyx_self, PyObject *__
       }
     }
     if (values[0]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[0]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L3_error)
+      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[0]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L3_error)
     } else {
       __pyx_v_comm = __pyx_k__9;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 448, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 532, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -6073,7 +6161,7 @@ static PyObject *__pyx_pf_5adios_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_t_1 = __pyx_f_5adios_init_noxml(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 448, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 532, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6090,7 +6178,7 @@ static PyObject *__pyx_pf_5adios_32init_noxml(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "adios.pyx":453
+/* "adios.pyx":537
  *     return adios_init_noxml(init_comm)
  * 
  * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
@@ -6104,7 +6192,7 @@ static int __pyx_f_5adios_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v_buf
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("allocate_buffer", 0);
 
-  /* "adios.pyx":455
+  /* "adios.pyx":539
  * cpdef int allocate_buffer(int when,
  *                           uint64_t buffer_size):
  *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,             # <<<<<<<<<<<<<<
@@ -6114,7 +6202,7 @@ static int __pyx_f_5adios_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v_buf
   __pyx_r = adios_allocate_buffer(((ADIOS_BUFFER_ALLOC_WHEN)__pyx_v_when), __pyx_v_buffer_size);
   goto __pyx_L0;
 
-  /* "adios.pyx":453
+  /* "adios.pyx":537
  *     return adios_init_noxml(init_comm)
  * 
  * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
@@ -6157,11 +6245,11 @@ static PyObject *__pyx_pw_5adios_35allocate_buffer(PyObject *__pyx_self, PyObjec
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); __PYX_ERR(0, 453, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); __PYX_ERR(0, 537, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) __PYX_ERR(0, 453, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) __PYX_ERR(0, 537, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -6169,12 +6257,12 @@ static PyObject *__pyx_pw_5adios_35allocate_buffer(PyObject *__pyx_self, PyObjec
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_when = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_when == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 453, __pyx_L3_error)
-    __pyx_v_buffer_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_buffer_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 454, __pyx_L3_error)
+    __pyx_v_when = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_when == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L3_error)
+    __pyx_v_buffer_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_buffer_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 538, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 453, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 537, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -6193,7 +6281,7 @@ static PyObject *__pyx_pf_5adios_34allocate_buffer(CYTHON_UNUSED PyObject *__pyx
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("allocate_buffer", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_allocate_buffer(__pyx_v_when, __pyx_v_buffer_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_allocate_buffer(__pyx_v_when, __pyx_v_buffer_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6210,18 +6298,18 @@ static PyObject *__pyx_pf_5adios_34allocate_buffer(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "adios.pyx":458
+/* "adios.pyx":542
  *                                  buffer_size)
  * 
  * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  */
 
 static PyObject *__pyx_pw_5adios_37declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int64_t __pyx_f_5adios_declare_group(PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_declare_group *__pyx_optional_args) {
   PyObject *__pyx_v_time_index = ((PyObject*)__pyx_kp_s__10);
-  int __pyx_v_stats = ((int)1);
+  int __pyx_v_stats = __pyx_k__11;
   int64_t __pyx_v_id;
   int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
@@ -6239,64 +6327,64 @@ static int64_t __pyx_f_5adios_declare_group(PyObject *__pyx_v_name, CYTHON_UNUSE
     }
   }
 
-  /* "adios.pyx":461
+  /* "adios.pyx":545
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  *     cdef int64_t id = 0             # <<<<<<<<<<<<<<
  *     adios_declare_group (&id,
  *                          s2b(name),
  */
   __pyx_v_id = 0;
 
-  /* "adios.pyx":463
+  /* "adios.pyx":547
  *     cdef int64_t id = 0
  *     adios_declare_group (&id,
  *                          s2b(name),             # <<<<<<<<<<<<<<
  *                          s2b(time_index),
- *                          <ADIOS_FLAG> stats)
+ *                          <ADIOS_STATISTICS_FLAG> stats)
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 463, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error)
 
-  /* "adios.pyx":464
+  /* "adios.pyx":548
  *     adios_declare_group (&id,
  *                          s2b(name),
  *                          s2b(time_index),             # <<<<<<<<<<<<<<
- *                          <ADIOS_FLAG> stats)
+ *                          <ADIOS_STATISTICS_FLAG> stats)
  *     return id
  */
-  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_time_index, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 464, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_time_index, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 464, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 548, __pyx_L1_error)
 
-  /* "adios.pyx":462
- *                             int stats = 1):
+  /* "adios.pyx":546
+ *                             int stats = adios_stat_default):
  *     cdef int64_t id = 0
  *     adios_declare_group (&id,             # <<<<<<<<<<<<<<
  *                          s2b(name),
  *                          s2b(time_index),
  */
-  adios_declare_group((&__pyx_v_id), __pyx_t_2, __pyx_t_4, ((ADIOS_FLAG)__pyx_v_stats));
+  adios_declare_group((&__pyx_v_id), __pyx_t_2, __pyx_t_4, ((ADIOS_STATISTICS_FLAG)__pyx_v_stats));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":466
+  /* "adios.pyx":550
  *                          s2b(time_index),
- *                          <ADIOS_FLAG> stats)
+ *                          <ADIOS_STATISTICS_FLAG> stats)
  *     return id             # <<<<<<<<<<<<<<
  * 
- * cpdef int define_var(int64_t group_id,
+ * cpdef int64_t define_var(int64_t group_id,
  */
   __pyx_r = __pyx_v_id;
   goto __pyx_L0;
 
-  /* "adios.pyx":458
+  /* "adios.pyx":542
  *                                  buffer_size)
  * 
  * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  */
 
   /* function exit code */
@@ -6312,7 +6400,7 @@ static int64_t __pyx_f_5adios_declare_group(PyObject *__pyx_v_name, CYTHON_UNUSE
 
 /* Python wrapper */
 static PyObject *__pyx_pw_5adios_37declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_36declare_group[] = "declare_group(str name, str time_index='', int stats=1) -> int64_t";
+static char __pyx_doc_5adios_36declare_group[] = "declare_group(str name, str time_index='', int stats=adios_stat_default) -> int64_t";
 static PyObject *__pyx_pw_5adios_37declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_time_index = 0;
@@ -6351,7 +6439,7 @@ static PyObject *__pyx_pw_5adios_37declare_group(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 458, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 542, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -6365,21 +6453,21 @@ static PyObject *__pyx_pw_5adios_37declare_group(PyObject *__pyx_self, PyObject
     __pyx_v_name = ((PyObject*)values[0]);
     __pyx_v_time_index = ((PyObject*)values[1]);
     if (values[2]) {
-      __pyx_v_stats = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_stats == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 460, __pyx_L3_error)
+      __pyx_v_stats = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_stats == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 544, __pyx_L3_error)
     } else {
-      __pyx_v_stats = ((int)1);
+      __pyx_v_stats = __pyx_k__11;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 458, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 542, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 458, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_time_index), (&PyString_Type), 1, "time_index", 1))) __PYX_ERR(0, 459, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 542, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_time_index), (&PyString_Type), 1, "time_index", 1))) __PYX_ERR(0, 543, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_36declare_group(__pyx_self, __pyx_v_name, __pyx_v_time_index, __pyx_v_stats);
 
   /* function exit code */
@@ -6403,7 +6491,7 @@ static PyObject *__pyx_pf_5adios_36declare_group(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_2.time_index = __pyx_v_time_index;
   __pyx_t_2.stats = __pyx_v_stats;
   __pyx_t_1 = __pyx_f_5adios_declare_group(__pyx_v_name, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 458, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 542, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6420,20 +6508,20 @@ static PyObject *__pyx_pf_5adios_36declare_group(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":468
+/* "adios.pyx":552
  *     return id
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ * cpdef int64_t define_var(int64_t group_id,             # <<<<<<<<<<<<<<
  *                      str name,
  *                      str path,
  */
 
 static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_define_var *__pyx_optional_args) {
+static int64_t __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_define_var *__pyx_optional_args) {
   PyObject *__pyx_v_dimensions = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_global_dimensions = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_local_offsets = ((PyObject*)__pyx_kp_s__10);
-  int __pyx_r;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   char *__pyx_t_2;
@@ -6458,62 +6546,62 @@ static int __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v
     }
   }
 
-  /* "adios.pyx":476
+  /* "adios.pyx":560
  *                      str local_offsets = ""):
  *     return adios_define_var(group_id,
  *                             s2b(name),             # <<<<<<<<<<<<<<
  *                             s2b(path),
  *                             <ADIOS_DATATYPES> atype,
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 560, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 560, __pyx_L1_error)
 
-  /* "adios.pyx":477
+  /* "adios.pyx":561
  *     return adios_define_var(group_id,
  *                             s2b(name),
  *                             s2b(path),             # <<<<<<<<<<<<<<
  *                             <ADIOS_DATATYPES> atype,
  *                             s2b(dimensions),
  */
-  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 477, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 561, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 477, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 561, __pyx_L1_error)
 
-  /* "adios.pyx":479
+  /* "adios.pyx":563
  *                             s2b(path),
  *                             <ADIOS_DATATYPES> atype,
  *                             s2b(dimensions),             # <<<<<<<<<<<<<<
  *                             s2b(global_dimensions),
  *                             s2b(local_offsets))
  */
-  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 479, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 563, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 479, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 563, __pyx_L1_error)
 
-  /* "adios.pyx":480
+  /* "adios.pyx":564
  *                             <ADIOS_DATATYPES> atype,
  *                             s2b(dimensions),
  *                             s2b(global_dimensions),             # <<<<<<<<<<<<<<
  *                             s2b(local_offsets))
  * 
  */
-  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_global_dimensions, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 480, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_global_dimensions, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 564, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 564, __pyx_L1_error)
 
-  /* "adios.pyx":481
+  /* "adios.pyx":565
  *                             s2b(dimensions),
  *                             s2b(global_dimensions),
  *                             s2b(local_offsets))             # <<<<<<<<<<<<<<
  * 
- * cpdef int define_attribute (int64_t group,
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):
  */
-  __pyx_t_9 = __pyx_f_5adios_s2b(__pyx_v_local_offsets, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 481, __pyx_L1_error)
+  __pyx_t_9 = __pyx_f_5adios_s2b(__pyx_v_local_offsets, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 565, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 565, __pyx_L1_error)
 
-  /* "adios.pyx":475
+  /* "adios.pyx":559
  *                      str global_dimensions = "",
  *                      str local_offsets = ""):
  *     return adios_define_var(group_id,             # <<<<<<<<<<<<<<
@@ -6528,10 +6616,10 @@ static int __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":468
+  /* "adios.pyx":552
  *     return id
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ * cpdef int64_t define_var(int64_t group_id,             # <<<<<<<<<<<<<<
  *                      str name,
  *                      str path,
  */
@@ -6552,7 +6640,7 @@ static int __pyx_f_5adios_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v
 
 /* Python wrapper */
 static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_38define_var[] = "define_var(int64_t group_id, str name, str path, int atype, str dimensions='', str global_dimensions='', str local_offsets='') -> int";
+static char __pyx_doc_5adios_38define_var[] = "define_var(int64_t group_id, str name, str path, int atype, str dimensions='', str global_dimensions='', str local_offsets='') -> int64_t";
 static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_group_id;
   PyObject *__pyx_v_name = 0;
@@ -6592,17 +6680,17 @@ static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); __PYX_ERR(0, 468, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); __PYX_ERR(0, 552, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 2); __PYX_ERR(0, 468, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 2); __PYX_ERR(0, 552, __pyx_L3_error)
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 3); __PYX_ERR(0, 468, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 3); __PYX_ERR(0, 552, __pyx_L3_error)
         }
         case  4:
         if (kw_args > 0) {
@@ -6621,7 +6709,7 @@ static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 468, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 552, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -6636,27 +6724,27 @@ static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 468, __pyx_L3_error)
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 552, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_path = ((PyObject*)values[2]);
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 471, __pyx_L3_error)
+    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 555, __pyx_L3_error)
     __pyx_v_dimensions = ((PyObject*)values[4]);
     __pyx_v_global_dimensions = ((PyObject*)values[5]);
     __pyx_v_local_offsets = ((PyObject*)values[6]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 468, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 552, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 469, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 470, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 472, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_global_dimensions), (&PyString_Type), 1, "global_dimensions", 1))) __PYX_ERR(0, 473, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_local_offsets), (&PyString_Type), 1, "local_offsets", 1))) __PYX_ERR(0, 474, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 553, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 554, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 556, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_global_dimensions), (&PyString_Type), 1, "global_dimensions", 1))) __PYX_ERR(0, 557, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_local_offsets), (&PyString_Type), 1, "local_offsets", 1))) __PYX_ERR(0, 558, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_38define_var(__pyx_self, __pyx_v_group_id, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_dimensions, __pyx_v_global_dimensions, __pyx_v_local_offsets);
 
   /* function exit code */
@@ -6671,7 +6759,7 @@ static PyObject *__pyx_pw_5adios_39define_var(PyObject *__pyx_self, PyObject *__
 static PyObject *__pyx_pf_5adios_38define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_global_dimensions, PyObject *__pyx_v_local_offsets) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  int64_t __pyx_t_1;
   struct __pyx_opt_args_5adios_define_var __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_var", 0);
@@ -6681,7 +6769,7 @@ static PyObject *__pyx_pf_5adios_38define_var(CYTHON_UNUSED PyObject *__pyx_self
   __pyx_t_2.global_dimensions = __pyx_v_global_dimensions;
   __pyx_t_2.local_offsets = __pyx_v_local_offsets;
   __pyx_t_1 = __pyx_f_5adios_define_var(__pyx_v_group_id, __pyx_v_name, __pyx_v_path, __pyx_v_atype, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 552, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6698,101 +6786,190 @@ static PyObject *__pyx_pf_5adios_38define_var(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "adios.pyx":483
+/* "adios.pyx":567
  *                             s2b(local_offsets))
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             str name,
- *                             str path,
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):             # <<<<<<<<<<<<<<
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
+ * 
  */
 
-static PyObject *__pyx_pw_5adios_41define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_define_attribute(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_5adios_41define_schema_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_schema_version(int64_t __pyx_v_group_id, PyObject *__pyx_v_schema_version, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   char *__pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  char *__pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  char *__pyx_t_8;
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_RefNannySetupContext("define_schema_version", 0);
 
-  /* "adios.pyx":490
- *                             str var):
- *     return adios_define_attribute (group,
- *                                    s2b(name),             # <<<<<<<<<<<<<<
- *                                    s2b(path),
- *                                    <ADIOS_DATATYPES> atype,
+  /* "adios.pyx":568
+ * 
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):
+ *     return adios_define_schema_version (group_id, s2b(schema_version))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 490, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_schema_version, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 490, __pyx_L1_error)
-
-  /* "adios.pyx":491
- *     return adios_define_attribute (group,
- *                                    s2b(name),
- *                                    s2b(path),             # <<<<<<<<<<<<<<
- *                                    <ADIOS_DATATYPES> atype,
- *                                    s2b(value),
- */
-  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 491, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 491, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 568, __pyx_L1_error)
+  __pyx_r = adios_define_schema_version(__pyx_v_group_id, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":493
- *                                    s2b(path),
- *                                    <ADIOS_DATATYPES> atype,
- *                                    s2b(value),             # <<<<<<<<<<<<<<
- *                                    s2b(var))
+  /* "adios.pyx":567
+ *                             s2b(local_offsets))
+ * 
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):             # <<<<<<<<<<<<<<
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
  * 
  */
-  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_value, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 493, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error)
 
-  /* "adios.pyx":494
- *                                    <ADIOS_DATATYPES> atype,
- *                                    s2b(value),
- *                                    s2b(var))             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios.define_schema_version", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_41define_schema_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_40define_schema_version[] = "define_schema_version(int64_t group_id, str schema_version) -> int";
+static PyObject *__pyx_pw_5adios_41define_schema_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_schema_version = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_schema_version (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_schema_version,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_schema_version)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_schema_version", 1, 2, 2, 1); __PYX_ERR(0, 567, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_schema_version") < 0)) __PYX_ERR(0, 567, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 567, __pyx_L3_error)
+    __pyx_v_schema_version = ((PyObject*)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_schema_version", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 567, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_schema_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema_version), (&PyString_Type), 1, "schema_version", 1))) __PYX_ERR(0, 567, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_40define_schema_version(__pyx_self, __pyx_v_group_id, __pyx_v_schema_version);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_40define_schema_version(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_schema_version) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_schema_version", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_schema_version(__pyx_v_group_id, __pyx_v_schema_version, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_schema_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":570
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
  * 
- * cpdef int define_attribute_byvalue (int64_t group,
  */
-  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_var, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 494, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 494, __pyx_L1_error)
 
-  /* "adios.pyx":489
- *                             str value,
- *                             str var):
- *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
- *                                    s2b(name),
- *                                    s2b(path),
+static PyObject *__pyx_pw_5adios_43define_var_mesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_var_mesh(int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_meshname, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_mesh", 0);
+
+  /* "adios.pyx":571
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):
  */
-  __pyx_r = adios_define_attribute(__pyx_v_group, __pyx_t_2, __pyx_t_4, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_t_6, __pyx_t_8);
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_varname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 571, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_meshname, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 571, __pyx_L1_error)
+  __pyx_r = adios_define_var_mesh(__pyx_v_group_id, __pyx_t_2, __pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":483
- *                             s2b(local_offsets))
+  /* "adios.pyx":570
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             str name,
- *                             str path,
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_WriteUnraisable("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __Pyx_WriteUnraisable("adios.define_var_mesh", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
@@ -6800,28 +6977,22 @@ static int __pyx_f_5adios_define_attribute(int64_t __pyx_v_group, PyObject *__py
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_41define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_40define_attribute[] = "define_attribute(int64_t group, str name, str path, int atype, str value, str var) -> int";
-static PyObject *__pyx_pw_5adios_41define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  PyObject *__pyx_v_name = 0;
-  PyObject *__pyx_v_path = 0;
-  int __pyx_v_atype;
-  PyObject *__pyx_v_value = 0;
-  PyObject *__pyx_v_var = 0;
+static PyObject *__pyx_pw_5adios_43define_var_mesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_42define_var_mesh[] = "define_var_mesh(int64_t group_id, str varname, str meshname) -> int";
+static PyObject *__pyx_pw_5adios_43define_var_mesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_v_meshname = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
+  __Pyx_RefNannySetupContext("define_var_mesh (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_value,&__pyx_n_s_var,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_varname,&__pyx_n_s_meshname,0};
+    PyObject* values[3] = {0,0,0};
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -6831,67 +7002,44 @@ static PyObject *__pyx_pw_5adios_41define_attribute(PyObject *__pyx_self, PyObje
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 1); __PYX_ERR(0, 483, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var_mesh", 1, 3, 3, 1); __PYX_ERR(0, 570, __pyx_L3_error)
         }
         case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 2); __PYX_ERR(0, 483, __pyx_L3_error)
-        }
-        case  3:
-        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 3); __PYX_ERR(0, 483, __pyx_L3_error)
-        }
-        case  4:
-        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 4); __PYX_ERR(0, 483, __pyx_L3_error)
-        }
-        case  5:
-        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_meshname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); __PYX_ERR(0, 483, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var_mesh", 1, 3, 3, 2); __PYX_ERR(0, 570, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute") < 0)) __PYX_ERR(0, 483, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_mesh") < 0)) __PYX_ERR(0, 570, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 483, __pyx_L3_error)
-    __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_path = ((PyObject*)values[2]);
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 486, __pyx_L3_error)
-    __pyx_v_value = ((PyObject*)values[4]);
-    __pyx_v_var = ((PyObject*)values[5]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error)
+    __pyx_v_varname = ((PyObject*)values[1]);
+    __pyx_v_meshname = ((PyObject*)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 483, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_var_mesh", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 570, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.define_var_mesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 484, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 485, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyString_Type), 1, "value", 1))) __PYX_ERR(0, 487, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), (&PyString_Type), 1, "var", 1))) __PYX_ERR(0, 488, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_40define_attribute(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 570, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_meshname), (&PyString_Type), 1, "meshname", 1))) __PYX_ERR(0, 570, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_42define_var_mesh(__pyx_self, __pyx_v_group_id, __pyx_v_varname, __pyx_v_meshname);
 
   /* function exit code */
   goto __pyx_L0;
@@ -6902,13 +7050,13 @@ static PyObject *__pyx_pw_5adios_41define_attribute(PyObject *__pyx_self, PyObje
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_40define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var) {
+static PyObject *__pyx_pf_5adios_42define_var_mesh(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_meshname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_RefNannySetupContext("define_var_mesh", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_attribute(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 483, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_var_mesh(__pyx_v_group_id, __pyx_v_varname, __pyx_v_meshname, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6917,7 +7065,7 @@ static PyObject *__pyx_pf_5adios_40define_attribute(CYTHON_UNUSED PyObject *__py
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios.define_var_mesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -6925,299 +7073,2891 @@ static PyObject *__pyx_pf_5adios_40define_attribute(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":496
- *                                    s2b(var))
+/* "adios.pyx":573
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
  * 
- * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
- *                                     str name,
- *                                     str path,
  */
 
-static PyObject *__pyx_pw_5adios_43define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyArrayObject *__pyx_v_val_ = 0;
-  PyObject *__pyx_v_atype = NULL;
-  char *__pyx_v_pt1;
-  char **__pyx_v_pt2;
-  PyObject *__pyx_v_bstr = NULL;
+static PyObject *__pyx_pw_5adios_45define_var_centering(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_var_centering(int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_centering, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  char *__pyx_t_7;
-  char *__pyx_t_8;
-  ADIOS_DATATYPES __pyx_t_9;
-  Py_ssize_t __pyx_t_10;
-  int __pyx_t_11;
-  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_centering", 0);
 
-  /* "adios.pyx":501
- *                                     val):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
+  /* "adios.pyx":574
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):
  */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5numpy_ndarray); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_varname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 574, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_centering, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 574, __pyx_L1_error)
+  __pyx_r = adios_define_var_centering(__pyx_v_group_id, __pyx_t_2, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-    /* "adios.pyx":502
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
- *             val_ = val
- *         else:
+  /* "adios.pyx":573
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+ * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 502, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 502, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 502, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
 
-      /* "adios.pyx":503
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:
- *             val_ = val             # <<<<<<<<<<<<<<
- *         else:
- *             val_ = np.array(val, copy=True)
- */
-      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 503, __pyx_L1_error)
-      __pyx_t_4 = __pyx_v_val;
-      __Pyx_INCREF(__pyx_t_4);
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_4);
-      __pyx_t_4 = 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_var_centering", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-      /* "adios.pyx":502
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
- *             val_ = val
- *         else:
- */
-      goto __pyx_L4;
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_45define_var_centering(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_44define_var_centering[] = "define_var_centering(int64_t group_id, str varname, str centering) -> int";
+static PyObject *__pyx_pw_5adios_45define_var_centering(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_v_centering = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_centering (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_varname,&__pyx_n_s_centering,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_centering", 1, 3, 3, 1); __PYX_ERR(0, 573, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_centering)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_centering", 1, 3, 3, 2); __PYX_ERR(0, 573, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_centering") < 0)) __PYX_ERR(0, 573, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 573, __pyx_L3_error)
+    __pyx_v_varname = ((PyObject*)values[1]);
+    __pyx_v_centering = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_centering", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 573, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_var_centering", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 573, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_centering), (&PyString_Type), 1, "centering", 1))) __PYX_ERR(0, 573, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_44define_var_centering(__pyx_self, __pyx_v_group_id, __pyx_v_varname, __pyx_v_centering);
 
-    /* "adios.pyx":505
- *             val_ = val
- *         else:
- *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
- *     else:
- *         val_ = np.array(val)
- */
-    /*else*/ {
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 505, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 505, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 505, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 505, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 505, __pyx_L1_error)
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 505, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 505, __pyx_L1_error)
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-      __pyx_t_6 = 0;
-    }
-    __pyx_L4:;
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios.pyx":501
- *                                     val):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
- */
-    goto __pyx_L3;
-  }
+static PyObject *__pyx_pf_5adios_44define_var_centering(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_centering) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_centering", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_var_centering(__pyx_v_group_id, __pyx_v_varname, __pyx_v_centering, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios.pyx":507
- *             val_ = np.array(val, copy=True)
- *     else:
- *         val_ = np.array(val)             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_var_centering", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":576
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+ * 
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
  * 
- *     atype = np2adiostype(val_.dtype)
  */
-  /*else*/ {
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 507, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 507, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    if (!__pyx_t_5) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 507, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-    } else {
-      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 507, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_INCREF(__pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_val);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 507, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 507, __pyx_L1_error)
-    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-  }
-  __pyx_L3:;
 
-  /* "adios.pyx":509
- *         val_ = np.array(val)
+static PyObject *__pyx_pw_5adios_47define_var_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_var_timesteps(PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_timesteps", 0);
+
+  /* "adios.pyx":577
  * 
- *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))             # <<<<<<<<<<<<<<
  * 
- *     cdef char * pt1
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 509, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 509, __pyx_L1_error)
-  __pyx_t_4 = __pyx_f_5adios_np2adiostype(((PyArray_Descr *)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timesteps, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 577, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 577, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 577, __pyx_L1_error)
+  __pyx_r = adios_define_var_timesteps(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":576
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+ * 
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_var_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_47define_var_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_46define_var_timesteps[] = "define_var_timesteps(str timesteps, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_47define_var_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timesteps = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_timesteps (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timesteps,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timesteps)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timesteps", 1, 3, 3, 1); __PYX_ERR(0, 576, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timesteps", 1, 3, 3, 2); __PYX_ERR(0, 576, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_timesteps") < 0)) __PYX_ERR(0, 576, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timesteps = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_timesteps", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 576, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_var_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timesteps), (&PyString_Type), 1, "timesteps", 1))) __PYX_ERR(0, 576, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 576, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_46define_var_timesteps(__pyx_self, __pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_46define_var_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_timesteps", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_var_timesteps(__pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_var_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":579
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+ * 
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_49define_var_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_var_timescale(PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_timescale", 0);
+
+  /* "adios.pyx":580
+ * 
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timescale, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 580, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 580, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 580, __pyx_L1_error)
+  __pyx_r = adios_define_var_timescale(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":579
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+ * 
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_var_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_49define_var_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_48define_var_timescale[] = "define_var_timescale(str timescale, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_49define_var_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timescale = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_timescale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timescale,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timescale)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timescale", 1, 3, 3, 1); __PYX_ERR(0, 579, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timescale", 1, 3, 3, 2); __PYX_ERR(0, 579, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_timescale") < 0)) __PYX_ERR(0, 579, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timescale = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 579, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_timescale", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 579, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_var_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timescale), (&PyString_Type), 1, "timescale", 1))) __PYX_ERR(0, 579, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 579, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_48define_var_timescale(__pyx_self, __pyx_v_timescale, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_48define_var_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_timescale", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_var_timescale(__pyx_v_timescale, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_var_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":582
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_51define_var_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_var_timeseriesformat(PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_timeseriesformat", 0);
+
+  /* "adios.pyx":583
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timeseries, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 583, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 583, __pyx_L1_error)
+  __pyx_r = adios_define_var_timeseriesformat(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":582
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_var_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_51define_var_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_50define_var_timeseriesformat[] = "define_var_timeseriesformat(str timeseries, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_51define_var_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timeseries = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_timeseriesformat (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeseries,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeseries)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timeseriesformat", 1, 3, 3, 1); __PYX_ERR(0, 582, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timeseriesformat", 1, 3, 3, 2); __PYX_ERR(0, 582, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_timeseriesformat") < 0)) __PYX_ERR(0, 582, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timeseries = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 582, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_timeseriesformat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 582, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_var_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timeseries), (&PyString_Type), 1, "timeseries", 1))) __PYX_ERR(0, 582, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 582, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_50define_var_timeseriesformat(__pyx_self, __pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_50define_var_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_timeseriesformat", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_var_timeseriesformat(__pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_var_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":585
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_53define_var_hyperslab(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_var_hyperslab(PyObject *__pyx_v_hyperslab, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_hyperslab", 0);
+
+  /* "adios.pyx":586
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_hyperslab, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 586, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 586, __pyx_L1_error)
+  __pyx_r = adios_define_var_hyperslab(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":585
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_var_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_53define_var_hyperslab(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_52define_var_hyperslab[] = "define_var_hyperslab(str hyperslab, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_53define_var_hyperslab(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_hyperslab = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_hyperslab (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hyperslab,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_hyperslab)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_hyperslab", 1, 3, 3, 1); __PYX_ERR(0, 585, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_hyperslab", 1, 3, 3, 2); __PYX_ERR(0, 585, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_hyperslab") < 0)) __PYX_ERR(0, 585, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_hyperslab = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 585, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_hyperslab", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 585, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_var_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hyperslab), (&PyString_Type), 1, "hyperslab", 1))) __PYX_ERR(0, 585, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 585, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_52define_var_hyperslab(__pyx_self, __pyx_v_hyperslab, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_52define_var_hyperslab(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hyperslab, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_hyperslab", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_var_hyperslab(__pyx_v_hyperslab, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_var_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":588
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_55define_mesh_timevarying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_timevarying(PyObject *__pyx_v_timevarying, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timevarying", 0);
+
+  /* "adios.pyx":589
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timevarying, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 589, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 589, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 589, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timevarying(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":588
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_mesh_timevarying", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_55define_mesh_timevarying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_54define_mesh_timevarying[] = "define_mesh_timevarying(str timevarying, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_55define_mesh_timevarying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timevarying = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timevarying (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timevarying,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timevarying)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timevarying", 1, 3, 3, 1); __PYX_ERR(0, 588, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timevarying", 1, 3, 3, 2); __PYX_ERR(0, 588, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timevarying") < 0)) __PYX_ERR(0, 588, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timevarying = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 588, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timevarying", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 588, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_timevarying", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timevarying), (&PyString_Type), 1, "timevarying", 1))) __PYX_ERR(0, 588, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 588, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_54define_mesh_timevarying(__pyx_self, __pyx_v_timevarying, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_54define_mesh_timevarying(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timevarying, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timevarying", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_timevarying(__pyx_v_timevarying, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_timevarying", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":591
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_57define_mesh_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_timesteps(PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timesteps", 0);
+
+  /* "adios.pyx":592
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timesteps, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timesteps(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":591
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_mesh_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_57define_mesh_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_56define_mesh_timesteps[] = "define_mesh_timesteps(str timesteps, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_57define_mesh_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timesteps = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timesteps (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timesteps,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timesteps)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timesteps", 1, 3, 3, 1); __PYX_ERR(0, 591, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timesteps", 1, 3, 3, 2); __PYX_ERR(0, 591, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timesteps") < 0)) __PYX_ERR(0, 591, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timesteps = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 591, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timesteps", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 591, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timesteps), (&PyString_Type), 1, "timesteps", 1))) __PYX_ERR(0, 591, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_56define_mesh_timesteps(__pyx_self, __pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_56define_mesh_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timesteps", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_timesteps(__pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":594
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_59define_mesh_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_timescale(PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timescale", 0);
+
+  /* "adios.pyx":595
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timescale, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timescale(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":594
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_mesh_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_59define_mesh_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_58define_mesh_timescale[] = "define_mesh_timescale(str timescale, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_59define_mesh_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timescale = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timescale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timescale,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timescale)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timescale", 1, 3, 3, 1); __PYX_ERR(0, 594, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timescale", 1, 3, 3, 2); __PYX_ERR(0, 594, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timescale") < 0)) __PYX_ERR(0, 594, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timescale = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 594, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timescale", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 594, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timescale), (&PyString_Type), 1, "timescale", 1))) __PYX_ERR(0, 594, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_58define_mesh_timescale(__pyx_self, __pyx_v_timescale, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_58define_mesh_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timescale", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_timescale(__pyx_v_timescale, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":597
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_61define_mesh_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_timeseriesformat(PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timeseriesformat", 0);
+
+  /* "adios.pyx":598
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_uniform (str dimensions,
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_timeseries, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timeseriesformat(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":597
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios.define_mesh_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_61define_mesh_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_60define_mesh_timeseriesformat[] = "define_mesh_timeseriesformat(str timeseries, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_61define_mesh_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timeseries = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timeseriesformat (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeseries,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeseries)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timeseriesformat", 1, 3, 3, 1); __PYX_ERR(0, 597, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timeseriesformat", 1, 3, 3, 2); __PYX_ERR(0, 597, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timeseriesformat") < 0)) __PYX_ERR(0, 597, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timeseries = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 597, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timeseriesformat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 597, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timeseries), (&PyString_Type), 1, "timeseries", 1))) __PYX_ERR(0, 597, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_60define_mesh_timeseriesformat(__pyx_self, __pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_60define_mesh_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timeseriesformat", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_timeseriesformat(__pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":600
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_uniform (str dimensions,             # <<<<<<<<<<<<<<
+ *                                    str origin,
+ *                                    str spacing,
+ */
+
+static PyObject *__pyx_pw_5adios_63define_mesh_uniform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_uniform(PyObject *__pyx_v_dimensions, PyObject *__pyx_v_origin, PyObject *__pyx_v_spacing, PyObject *__pyx_v_maximum, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  char *__pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  char const *__pyx_t_12;
+  __Pyx_RefNannySetupContext("define_mesh_uniform", 0);
+
+  /* "adios.pyx":608
+ *                                    str name
+ *                                   ):
+ *     return adios_define_mesh_uniform (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                    s2b(origin),
+ *                                    s2b(spacing),
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 608, __pyx_L1_error)
+
+  /* "adios.pyx":609
+ *                                   ):
+ *     return adios_define_mesh_uniform (s2b(dimensions),
+ *                                    s2b(origin),             # <<<<<<<<<<<<<<
+ *                                    s2b(spacing),
+ *                                    s2b(maximum),
+ */
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_origin, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 609, __pyx_L1_error)
+
+  /* "adios.pyx":610
+ *     return adios_define_mesh_uniform (s2b(dimensions),
+ *                                    s2b(origin),
+ *                                    s2b(spacing),             # <<<<<<<<<<<<<<
+ *                                    s2b(maximum),
+ *                                    s2b(nspace),
+ */
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_spacing, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 610, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 610, __pyx_L1_error)
+
+  /* "adios.pyx":611
+ *                                    s2b(origin),
+ *                                    s2b(spacing),
+ *                                    s2b(maximum),             # <<<<<<<<<<<<<<
+ *                                    s2b(nspace),
+ *                                    group_id,
+ */
+  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_maximum, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 611, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 611, __pyx_L1_error)
+
+  /* "adios.pyx":612
+ *                                    s2b(spacing),
+ *                                    s2b(maximum),
+ *                                    s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                    group_id,
+ *                                    s2b(name)
+ */
+  __pyx_t_9 = __pyx_f_5adios_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 612, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 612, __pyx_L1_error)
+
+  /* "adios.pyx":614
+ *                                    s2b(nspace),
+ *                                    group_id,
+ *                                    s2b(name)             # <<<<<<<<<<<<<<
+ *                                   )
+ * 
+ */
+  __pyx_t_11 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 614, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_t_11); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 614, __pyx_L1_error)
+
+  /* "adios.pyx":608
+ *                                    str name
+ *                                   ):
+ *     return adios_define_mesh_uniform (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                    s2b(origin),
+ *                                    s2b(spacing),
+ */
+  __pyx_r = adios_define_mesh_uniform(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_8, __pyx_t_10, __pyx_v_group_id, __pyx_t_12);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":600
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_uniform (str dimensions,             # <<<<<<<<<<<<<<
+ *                                    str origin,
+ *                                    str spacing,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_WriteUnraisable("adios.define_mesh_uniform", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_63define_mesh_uniform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_62define_mesh_uniform[] = "define_mesh_uniform(str dimensions, str origin, str spacing, str maximum, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_63define_mesh_uniform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_origin = 0;
+  PyObject *__pyx_v_spacing = 0;
+  PyObject *__pyx_v_maximum = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_uniform (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dimensions,&__pyx_n_s_origin,&__pyx_n_s_spacing,&__pyx_n_s_maximum,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_origin)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 1); __PYX_ERR(0, 600, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spacing)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 2); __PYX_ERR(0, 600, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maximum)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 3); __PYX_ERR(0, 600, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 4); __PYX_ERR(0, 600, __pyx_L3_error)
+        }
+        case  5:
+        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 5); __PYX_ERR(0, 600, __pyx_L3_error)
+        }
+        case  6:
+        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 6); __PYX_ERR(0, 600, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_uniform") < 0)) __PYX_ERR(0, 600, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+    }
+    __pyx_v_dimensions = ((PyObject*)values[0]);
+    __pyx_v_origin = ((PyObject*)values[1]);
+    __pyx_v_spacing = ((PyObject*)values[2]);
+    __pyx_v_maximum = ((PyObject*)values[3]);
+    __pyx_v_nspace = ((PyObject*)values[4]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[5]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 605, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[6]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 600, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_uniform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 600, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_origin), (&PyString_Type), 1, "origin", 1))) __PYX_ERR(0, 601, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_spacing), (&PyString_Type), 1, "spacing", 1))) __PYX_ERR(0, 602, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_maximum), (&PyString_Type), 1, "maximum", 1))) __PYX_ERR(0, 603, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 604, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_62define_mesh_uniform(__pyx_self, __pyx_v_dimensions, __pyx_v_origin, __pyx_v_spacing, __pyx_v_maximum, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_62define_mesh_uniform(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_origin, PyObject *__pyx_v_spacing, PyObject *__pyx_v_maximum, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_uniform", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_uniform(__pyx_v_dimensions, __pyx_v_origin, __pyx_v_spacing, __pyx_v_maximum, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_uniform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":617
+ *                                   )
+ * 
+ * cpdef int define_mesh_rectilinear (str dimensions,             # <<<<<<<<<<<<<<
+ *                                        str coordinates,
+ *                                        str nspace,
+ */
+
+static PyObject *__pyx_pw_5adios_65define_mesh_rectilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_rectilinear(PyObject *__pyx_v_dimensions, PyObject *__pyx_v_coordinates, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char const *__pyx_t_8;
+  __Pyx_RefNannySetupContext("define_mesh_rectilinear", 0);
+
+  /* "adios.pyx":623
+ *                                        str name
+ *                                       ):
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                        s2b(coordinates),
+ *                                        s2b(nspace),
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 623, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 623, __pyx_L1_error)
+
+  /* "adios.pyx":624
+ *                                       ):
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),
+ *                                        s2b(coordinates),             # <<<<<<<<<<<<<<
+ *                                        s2b(nspace),
+ *                                        group_id,
+ */
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_coordinates, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 624, __pyx_L1_error)
+
+  /* "adios.pyx":625
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),
+ *                                        s2b(coordinates),
+ *                                        s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                        group_id,
+ *                                        s2b(name)
+ */
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 625, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 625, __pyx_L1_error)
+
+  /* "adios.pyx":627
+ *                                        s2b(nspace),
+ *                                        group_id,
+ *                                        s2b(name)             # <<<<<<<<<<<<<<
+ *                                       )
+ * 
+ */
+  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 627, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 627, __pyx_L1_error)
+
+  /* "adios.pyx":623
+ *                                        str name
+ *                                       ):
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                        s2b(coordinates),
+ *                                        s2b(nspace),
+ */
+  __pyx_r = adios_define_mesh_rectilinear(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_v_group_id, __pyx_t_8);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":617
+ *                                   )
+ * 
+ * cpdef int define_mesh_rectilinear (str dimensions,             # <<<<<<<<<<<<<<
+ *                                        str coordinates,
+ *                                        str nspace,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("adios.define_mesh_rectilinear", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_65define_mesh_rectilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_64define_mesh_rectilinear[] = "define_mesh_rectilinear(str dimensions, str coordinates, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_65define_mesh_rectilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_coordinates = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_rectilinear (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dimensions,&__pyx_n_s_coordinates,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coordinates)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 1); __PYX_ERR(0, 617, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 2); __PYX_ERR(0, 617, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 3); __PYX_ERR(0, 617, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 4); __PYX_ERR(0, 617, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_rectilinear") < 0)) __PYX_ERR(0, 617, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+    }
+    __pyx_v_dimensions = ((PyObject*)values[0]);
+    __pyx_v_coordinates = ((PyObject*)values[1]);
+    __pyx_v_nspace = ((PyObject*)values[2]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[3]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 620, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 617, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_rectilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 617, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_coordinates), (&PyString_Type), 1, "coordinates", 1))) __PYX_ERR(0, 618, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 619, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 621, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_64define_mesh_rectilinear(__pyx_self, __pyx_v_dimensions, __pyx_v_coordinates, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_64define_mesh_rectilinear(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_coordinates, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_rectilinear", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_rectilinear(__pyx_v_dimensions, __pyx_v_coordinates, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_rectilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":630
+ *                                       )
+ * 
+ * cpdef int define_mesh_structured (str dimensions,             # <<<<<<<<<<<<<<
+ *                                       str points,
+ *                                       str nspace,
+ */
+
+static PyObject *__pyx_pw_5adios_67define_mesh_structured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_structured(PyObject *__pyx_v_dimensions, PyObject *__pyx_v_points, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char const *__pyx_t_8;
+  __Pyx_RefNannySetupContext("define_mesh_structured", 0);
+
+  /* "adios.pyx":636
+ *                                       str name
+ *                                      ):
+ *     return adios_define_mesh_structured (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                       s2b(points),
+ *                                       s2b(nspace),
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L1_error)
+
+  /* "adios.pyx":637
+ *                                      ):
+ *     return adios_define_mesh_structured (s2b(dimensions),
+ *                                       s2b(points),             # <<<<<<<<<<<<<<
+ *                                       s2b(nspace),
+ *                                       group_id,
+ */
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_points, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 637, __pyx_L1_error)
+
+  /* "adios.pyx":638
+ *     return adios_define_mesh_structured (s2b(dimensions),
+ *                                       s2b(points),
+ *                                       s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                       group_id,
+ *                                       s2b(name)
+ */
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 638, __pyx_L1_error)
+
+  /* "adios.pyx":640
+ *                                       s2b(nspace),
+ *                                       group_id,
+ *                                       s2b(name)             # <<<<<<<<<<<<<<
+ *                                      )
+ * 
+ */
+  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 640, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 640, __pyx_L1_error)
+
+  /* "adios.pyx":636
+ *                                       str name
+ *                                      ):
+ *     return adios_define_mesh_structured (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                       s2b(points),
+ *                                       s2b(nspace),
+ */
+  __pyx_r = adios_define_mesh_structured(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_v_group_id, __pyx_t_8);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":630
+ *                                       )
+ * 
+ * cpdef int define_mesh_structured (str dimensions,             # <<<<<<<<<<<<<<
+ *                                       str points,
+ *                                       str nspace,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("adios.define_mesh_structured", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_67define_mesh_structured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_66define_mesh_structured[] = "define_mesh_structured(str dimensions, str points, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_67define_mesh_structured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_points = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_structured (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dimensions,&__pyx_n_s_points,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_points)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 1); __PYX_ERR(0, 630, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 2); __PYX_ERR(0, 630, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 3); __PYX_ERR(0, 630, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 4); __PYX_ERR(0, 630, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_structured") < 0)) __PYX_ERR(0, 630, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+    }
+    __pyx_v_dimensions = ((PyObject*)values[0]);
+    __pyx_v_points = ((PyObject*)values[1]);
+    __pyx_v_nspace = ((PyObject*)values[2]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[3]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 633, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 630, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_structured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 630, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyString_Type), 1, "points", 1))) __PYX_ERR(0, 631, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 632, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 634, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_66define_mesh_structured(__pyx_self, __pyx_v_dimensions, __pyx_v_points, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_66define_mesh_structured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_points, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_structured", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_structured(__pyx_v_dimensions, __pyx_v_points, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 630, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_structured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":643
+ *                                      )
+ * 
+ * cpdef int define_mesh_unstructured (str points,             # <<<<<<<<<<<<<<
+ *                                         str data,
+ *                                         str count,
+ */
+
+static PyObject *__pyx_pw_5adios_69define_mesh_unstructured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_mesh_unstructured(PyObject *__pyx_v_points, PyObject *__pyx_v_data, PyObject *__pyx_v_count, PyObject *__pyx_v_cell_type, PyObject *__pyx_v_npoints, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  char *__pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  char *__pyx_t_12;
+  PyObject *__pyx_t_13 = NULL;
+  char const *__pyx_t_14;
+  __Pyx_RefNannySetupContext("define_mesh_unstructured", 0);
+
+  /* "adios.pyx":652
+ *                                         str name
+ *                                        ):
+ *     return adios_define_mesh_unstructured (s2b(points),             # <<<<<<<<<<<<<<
+ *                                         s2b(data),
+ *                                         s2b(count),
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_points, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 652, __pyx_L1_error)
+
+  /* "adios.pyx":653
+ *                                        ):
+ *     return adios_define_mesh_unstructured (s2b(points),
+ *                                         s2b(data),             # <<<<<<<<<<<<<<
+ *                                         s2b(count),
+ *                                         s2b(cell_type),
+ */
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_data, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 653, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 653, __pyx_L1_error)
+
+  /* "adios.pyx":654
+ *     return adios_define_mesh_unstructured (s2b(points),
+ *                                         s2b(data),
+ *                                         s2b(count),             # <<<<<<<<<<<<<<
+ *                                         s2b(cell_type),
+ *                                         s2b(npoints),
+ */
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_count, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 654, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 654, __pyx_L1_error)
+
+  /* "adios.pyx":655
+ *                                         s2b(data),
+ *                                         s2b(count),
+ *                                         s2b(cell_type),             # <<<<<<<<<<<<<<
+ *                                         s2b(npoints),
+ *                                         s2b(nspace),
+ */
+  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_cell_type, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 655, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 655, __pyx_L1_error)
+
+  /* "adios.pyx":656
+ *                                         s2b(count),
+ *                                         s2b(cell_type),
+ *                                         s2b(npoints),             # <<<<<<<<<<<<<<
+ *                                         s2b(nspace),
+ *                                         group_id,
+ */
+  __pyx_t_9 = __pyx_f_5adios_s2b(__pyx_v_npoints, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 656, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error)
+
+  /* "adios.pyx":657
+ *                                         s2b(cell_type),
+ *                                         s2b(npoints),
+ *                                         s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                         group_id,
+ *                                         s2b(name)
+ */
+  __pyx_t_11 = __pyx_f_5adios_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_t_11); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 657, __pyx_L1_error)
+
+  /* "adios.pyx":659
+ *                                         s2b(nspace),
+ *                                         group_id,
+ *                                         s2b(name)             # <<<<<<<<<<<<<<
+ *                                        )
+ * 
+ */
+  __pyx_t_13 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_13); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 659, __pyx_L1_error)
+
+  /* "adios.pyx":652
+ *                                         str name
+ *                                        ):
+ *     return adios_define_mesh_unstructured (s2b(points),             # <<<<<<<<<<<<<<
+ *                                         s2b(data),
+ *                                         s2b(count),
+ */
+  __pyx_r = adios_define_mesh_unstructured(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_8, __pyx_t_10, __pyx_t_12, __pyx_v_group_id, __pyx_t_14);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":643
+ *                                      )
+ * 
+ * cpdef int define_mesh_unstructured (str points,             # <<<<<<<<<<<<<<
+ *                                         str data,
+ *                                         str count,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_WriteUnraisable("adios.define_mesh_unstructured", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_69define_mesh_unstructured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_68define_mesh_unstructured[] = "define_mesh_unstructured(str points, str data, str count, str cell_type, str npoints, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_5adios_69define_mesh_unstructured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_points = 0;
+  PyObject *__pyx_v_data = 0;
+  PyObject *__pyx_v_count = 0;
+  PyObject *__pyx_v_cell_type = 0;
+  PyObject *__pyx_v_npoints = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_unstructured (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_data,&__pyx_n_s_count,&__pyx_n_s_cell_type,&__pyx_n_s_npoints,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[8] = {0,0,0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
+        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_points)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 1); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 2); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cell_type)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 3); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_npoints)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 4); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+        case  5:
+        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 5); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+        case  6:
+        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 6); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+        case  7:
+        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 7); __PYX_ERR(0, 643, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_unstructured") < 0)) __PYX_ERR(0, 643, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
+    }
+    __pyx_v_points = ((PyObject*)values[0]);
+    __pyx_v_data = ((PyObject*)values[1]);
+    __pyx_v_count = ((PyObject*)values[2]);
+    __pyx_v_cell_type = ((PyObject*)values[3]);
+    __pyx_v_npoints = ((PyObject*)values[4]);
+    __pyx_v_nspace = ((PyObject*)values[5]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[6]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 649, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[7]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 643, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_mesh_unstructured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyString_Type), 1, "points", 1))) __PYX_ERR(0, 643, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), (&PyString_Type), 1, "data", 1))) __PYX_ERR(0, 644, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyString_Type), 1, "count", 1))) __PYX_ERR(0, 645, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cell_type), (&PyString_Type), 1, "cell_type", 1))) __PYX_ERR(0, 646, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_npoints), (&PyString_Type), 1, "npoints", 1))) __PYX_ERR(0, 647, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 648, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 650, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_68define_mesh_unstructured(__pyx_self, __pyx_v_points, __pyx_v_data, __pyx_v_count, __pyx_v_cell_type, __pyx_v_npoints, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_68define_mesh_unstructured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_points, PyObject *__pyx_v_data, PyObject *__pyx_v_count, PyObject *__pyx_v_cell_type, PyObject *__pyx_v_npoints, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_unstructured", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_mesh_unstructured(__pyx_v_points, __pyx_v_data, __pyx_v_count, __pyx_v_cell_type, __pyx_v_npoints, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_mesh_unstructured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":662
+ *                                        )
+ * 
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
+ */
+
+static PyObject *__pyx_pw_5adios_71define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_attribute(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  __Pyx_RefNannySetupContext("define_attribute", 0);
+
+  /* "adios.pyx":669
+ *                             str var):
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),             # <<<<<<<<<<<<<<
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 669, __pyx_L1_error)
+
+  /* "adios.pyx":670
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),
+ *                                    s2b(path),             # <<<<<<<<<<<<<<
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
+ */
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 670, __pyx_L1_error)
+
+  /* "adios.pyx":672
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),             # <<<<<<<<<<<<<<
+ *                                    s2b(var))
+ * 
+ */
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_value, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 672, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 672, __pyx_L1_error)
+
+  /* "adios.pyx":673
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
+ *                                    s2b(var))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_attribute_byvalue (int64_t group,
+ */
+  __pyx_t_7 = __pyx_f_5adios_s2b(__pyx_v_var, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 673, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 673, __pyx_L1_error)
+
+  /* "adios.pyx":668
+ *                             str value,
+ *                             str var):
+ *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
+ *                                    s2b(name),
+ *                                    s2b(path),
+ */
+  __pyx_r = adios_define_attribute(__pyx_v_group, __pyx_t_2, __pyx_t_4, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_t_6, __pyx_t_8);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":662
+ *                                        )
+ * 
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_71define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_70define_attribute[] = "define_attribute(int64_t group, str name, str path, int atype, str value, str var) -> int";
+static PyObject *__pyx_pw_5adios_71define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_path = 0;
+  int __pyx_v_atype;
+  PyObject *__pyx_v_value = 0;
+  PyObject *__pyx_v_var = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_value,&__pyx_n_s_var,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 1); __PYX_ERR(0, 662, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 2); __PYX_ERR(0, 662, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 3); __PYX_ERR(0, 662, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 4); __PYX_ERR(0, 662, __pyx_L3_error)
+        }
+        case  5:
+        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); __PYX_ERR(0, 662, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute") < 0)) __PYX_ERR(0, 662, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 662, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[1]);
+    __pyx_v_path = ((PyObject*)values[2]);
+    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 665, __pyx_L3_error)
+    __pyx_v_value = ((PyObject*)values[4]);
+    __pyx_v_var = ((PyObject*)values[5]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 662, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 663, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 664, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyString_Type), 1, "value", 1))) __PYX_ERR(0, 666, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), (&PyString_Type), 1, "var", 1))) __PYX_ERR(0, 667, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_70define_attribute(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_70define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_attribute(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":675
+ *                                    s2b(var))
+ * 
+ * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
+ *                                     str name,
+ *                                     str path,
+ */
+
+static PyObject *__pyx_pw_5adios_73define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyArrayObject *__pyx_v_val_ = 0;
+  PyObject *__pyx_v_atype = NULL;
+  char *__pyx_v_pt1;
+  char **__pyx_v_pt2;
+  PyObject *__pyx_v_bstr = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  char *__pyx_t_7;
+  char *__pyx_t_8;
+  ADIOS_DATATYPES __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  int __pyx_t_11;
+  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
+
+  /* "adios.pyx":680
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
+ */
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5numpy_ndarray); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":681
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 681, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 681, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_2) {
+
+      /* "adios.pyx":682
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:
+ *             val_ = val             # <<<<<<<<<<<<<<
+ *         else:
+ *             val_ = np.array(val, copy=True)
+ */
+      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 682, __pyx_L1_error)
+      __pyx_t_4 = __pyx_v_val;
+      __Pyx_INCREF(__pyx_t_4);
+      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_4);
+      __pyx_t_4 = 0;
+
+      /* "adios.pyx":681
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "adios.pyx":684
+ *             val_ = val
+ *         else:
+ *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
+ *     else:
+ *         val_ = np.array(val)
+ */
+    /*else*/ {
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 684, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 684, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
+      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 684, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 684, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 684, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 684, __pyx_L1_error)
+      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
+      __pyx_t_6 = 0;
+    }
+    __pyx_L4:;
+
+    /* "adios.pyx":680
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios.pyx":686
+ *             val_ = np.array(val, copy=True)
+ *     else:
+ *         val_ = np.array(val)             # <<<<<<<<<<<<<<
+ * 
+ *     atype = np2adiostype(val_.dtype)
+ */
+  /*else*/ {
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 686, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 686, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (!__pyx_t_5) {
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 686, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+    } else {
+      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 686, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_val);
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 686, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 686, __pyx_L1_error)
+    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
+  }
+  __pyx_L3:;
+
+  /* "adios.pyx":688
+ *         val_ = np.array(val)
+ * 
+ *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef char * pt1
+ */
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 688, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 688, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_5adios_np2adiostype(((PyArray_Descr *)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_atype = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "adios.pyx":513
+  /* "adios.pyx":692
  *     cdef char * pt1
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
  *         if (val_.size == 1):
  *             bstr = s2b(str(val))
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_char); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_char); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 692, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 692, __pyx_L1_error)
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 513, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 692, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_1;
   __pyx_L6_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":514
+    /* "adios.pyx":693
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):
  *         if (val_.size == 1):             # <<<<<<<<<<<<<<
  *             bstr = s2b(str(val))
  *             pt1 = PyBytes_AsString(bstr)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 514, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 514, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 693, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_1) {
 
-      /* "adios.pyx":515
+      /* "adios.pyx":694
  *     if (val_.dtype.char in ('S', 'U')):
  *         if (val_.size == 1):
  *             bstr = s2b(str(val))             # <<<<<<<<<<<<<<
  *             pt1 = PyBytes_AsString(bstr)
  *             adios_define_attribute_byvalue (group,
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 515, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 694, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 515, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 694, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 515, __pyx_L1_error)
-      __pyx_t_4 = __pyx_f_5adios_s2b(((PyObject*)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 515, __pyx_L1_error)
+      if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 694, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_5adios_s2b(((PyObject*)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 694, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_bstr = ((PyObject*)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "adios.pyx":516
+      /* "adios.pyx":695
  *         if (val_.size == 1):
  *             bstr = s2b(str(val))
  *             pt1 = PyBytes_AsString(bstr)             # <<<<<<<<<<<<<<
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),
  */
-      __pyx_t_7 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(0, 516, __pyx_L1_error)
+      __pyx_t_7 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(0, 695, __pyx_L1_error)
       __pyx_v_pt1 = __pyx_t_7;
 
-      /* "adios.pyx":518
+      /* "adios.pyx":697
  *             pt1 = PyBytes_AsString(bstr)
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),             # <<<<<<<<<<<<<<
  *                                             s2b(path),
  *                                             DATATYPE.string,
  */
-      __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 697, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 518, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 697, __pyx_L1_error)
 
-      /* "adios.pyx":519
+      /* "adios.pyx":698
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),
  *                                             s2b(path),             # <<<<<<<<<<<<<<
  *                                             DATATYPE.string,
  *                                             1,
  */
-      __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 519, __pyx_L1_error)
+      __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 698, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 519, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error)
 
-      /* "adios.pyx":520
+      /* "adios.pyx":699
  *                                             s2b(name),
  *                                             s2b(path),
  *                                             DATATYPE.string,             # <<<<<<<<<<<<<<
  *                                             1,
  *                                             <void *> pt1)
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 520, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 699, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 520, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 699, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_5)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 520, __pyx_L1_error)
+      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_5)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 699, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "adios.pyx":517
+      /* "adios.pyx":696
  *             bstr = s2b(str(val))
  *             pt1 = PyBytes_AsString(bstr)
  *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7228,7 +9968,7 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "adios.pyx":514
+      /* "adios.pyx":693
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):
  *         if (val_.size == 1):             # <<<<<<<<<<<<<<
@@ -7238,7 +9978,7 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
       goto __pyx_L8;
     }
 
-    /* "adios.pyx":524
+    /* "adios.pyx":703
  *                                             <void *> pt1)
  *         else:
  *             pt2 = to_cstring_array(val)             # <<<<<<<<<<<<<<
@@ -7248,53 +9988,53 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
     /*else*/ {
       __pyx_v_pt2 = __pyx_f_5adios_to_cstring_array(__pyx_v_val);
 
-      /* "adios.pyx":526
+      /* "adios.pyx":705
  *             pt2 = to_cstring_array(val)
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),             # <<<<<<<<<<<<<<
  *                                             s2b(path),
  *                                             DATATYPE.string_array,
  */
-      __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 526, __pyx_L1_error)
+      __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 705, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 526, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 705, __pyx_L1_error)
 
-      /* "adios.pyx":527
+      /* "adios.pyx":706
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),
  *                                             s2b(path),             # <<<<<<<<<<<<<<
  *                                             DATATYPE.string_array,
  *                                             len(val),
  */
-      __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 527, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 706, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 706, __pyx_L1_error)
 
-      /* "adios.pyx":528
+      /* "adios.pyx":707
  *                                             s2b(name),
  *                                             s2b(path),
  *                                             DATATYPE.string_array,             # <<<<<<<<<<<<<<
  *                                             len(val),
  *                                             <void *> pt2)
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 528, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 707, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 528, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error)
+      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 707, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "adios.pyx":529
+      /* "adios.pyx":708
  *                                             s2b(path),
  *                                             DATATYPE.string_array,
  *                                             len(val),             # <<<<<<<<<<<<<<
  *                                             <void *> pt2)
  *             free(pt2)
  */
-      __pyx_t_10 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 529, __pyx_L1_error)
+      __pyx_t_10 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 708, __pyx_L1_error)
 
-      /* "adios.pyx":525
+      /* "adios.pyx":704
  *         else:
  *             pt2 = to_cstring_array(val)
  *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7305,7 +10045,7 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "adios.pyx":531
+      /* "adios.pyx":710
  *                                             len(val),
  *                                             <void *> pt2)
  *             free(pt2)             # <<<<<<<<<<<<<<
@@ -7316,7 +10056,7 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
     }
     __pyx_L8:;
 
-    /* "adios.pyx":513
+    /* "adios.pyx":692
  *     cdef char * pt1
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
@@ -7326,7 +10066,7 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
     goto __pyx_L5;
   }
 
-  /* "adios.pyx":533
+  /* "adios.pyx":712
  *             free(pt2)
  *     else:
  *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7335,50 +10075,50 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
  */
   /*else*/ {
 
-    /* "adios.pyx":534
+    /* "adios.pyx":713
  *     else:
  *         adios_define_attribute_byvalue (group,
  *                                         s2b(name),             # <<<<<<<<<<<<<<
  *                                         s2b(path),
  *                                         <ADIOS_DATATYPES> atype,
  */
-    __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 534, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 713, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 713, __pyx_L1_error)
 
-    /* "adios.pyx":535
+    /* "adios.pyx":714
  *         adios_define_attribute_byvalue (group,
  *                                         s2b(name),
  *                                         s2b(path),             # <<<<<<<<<<<<<<
  *                                         <ADIOS_DATATYPES> atype,
  *                                         val_.size,
  */
-    __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 535, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_5adios_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 714, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 535, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 714, __pyx_L1_error)
 
-    /* "adios.pyx":536
+    /* "adios.pyx":715
  *                                         s2b(name),
  *                                         s2b(path),
  *                                         <ADIOS_DATATYPES> atype,             # <<<<<<<<<<<<<<
  *                                         val_.size,
  *                                         <void *> val_.data)
  */
-    __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 536, __pyx_L1_error)
+    __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 715, __pyx_L1_error)
 
-    /* "adios.pyx":537
+    /* "adios.pyx":716
  *                                         s2b(path),
  *                                         <ADIOS_DATATYPES> atype,
  *                                         val_.size,             # <<<<<<<<<<<<<<
  *                                         <void *> val_.data)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 537, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 716, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L1_error)
+    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 716, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":533
+    /* "adios.pyx":712
  *             free(pt2)
  *     else:
  *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7391,7 +10131,7 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
   }
   __pyx_L5:;
 
-  /* "adios.pyx":496
+  /* "adios.pyx":675
  *                                    s2b(var))
  * 
  * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
@@ -7418,9 +10158,9 @@ static int __pyx_f_5adios_define_attribute_byvalue(int64_t __pyx_v_group, PyObje
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_43define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_42define_attribute_byvalue[] = "define_attribute_byvalue(int64_t group, str name, str path, val) -> int";
-static PyObject *__pyx_pw_5adios_43define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_73define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_72define_attribute_byvalue[] = "define_attribute_byvalue(int64_t group, str name, str path, val) -> int";
+static PyObject *__pyx_pw_5adios_73define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_group;
   PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_path = 0;
@@ -7450,21 +10190,21 @@ static PyObject *__pyx_pw_5adios_43define_attribute_byvalue(PyObject *__pyx_self
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 1); __PYX_ERR(0, 496, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 1); __PYX_ERR(0, 675, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 2); __PYX_ERR(0, 496, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 2); __PYX_ERR(0, 675, __pyx_L3_error)
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 3); __PYX_ERR(0, 496, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 3); __PYX_ERR(0, 675, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute_byvalue") < 0)) __PYX_ERR(0, 496, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute_byvalue") < 0)) __PYX_ERR(0, 675, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -7474,22 +10214,22 @@ static PyObject *__pyx_pw_5adios_43define_attribute_byvalue(PyObject *__pyx_self
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 496, __pyx_L3_error)
+    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 675, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_path = ((PyObject*)values[2]);
     __pyx_v_val = values[3];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 496, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 675, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 497, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 498, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_42define_attribute_byvalue(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 676, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 677, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_72define_attribute_byvalue(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val);
 
   /* function exit code */
   goto __pyx_L0;
@@ -7500,13 +10240,13 @@ static PyObject *__pyx_pw_5adios_43define_attribute_byvalue(PyObject *__pyx_self
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_42define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val) {
+static PyObject *__pyx_pf_5adios_72define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -7523,7 +10263,7 @@ static PyObject *__pyx_pf_5adios_42define_attribute_byvalue(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "adios.pyx":540
+/* "adios.pyx":719
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
@@ -7531,7 +10271,7 @@ static PyObject *__pyx_pf_5adios_42define_attribute_byvalue(CYTHON_UNUSED PyObje
  *                          str parameters = "",
  */
 
-static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_5adios_75select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_f_5adios_select_method(int64_t __pyx_v_group, PyObject *__pyx_v_method, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_select_method *__pyx_optional_args) {
   PyObject *__pyx_v_parameters = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_base_path = ((PyObject*)__pyx_kp_s__10);
@@ -7553,40 +10293,40 @@ static int __pyx_f_5adios_select_method(int64_t __pyx_v_group, PyObject *__pyx_v
     }
   }
 
-  /* "adios.pyx":545
+  /* "adios.pyx":724
  *                          str base_path = ""):
  *     return adios_select_method (group,
  *                                 s2b(method),             # <<<<<<<<<<<<<<
  *                                 s2b(parameters),
  *                                 s2b(base_path))
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_method, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_method, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 724, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 545, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 724, __pyx_L1_error)
 
-  /* "adios.pyx":546
+  /* "adios.pyx":725
  *     return adios_select_method (group,
  *                                 s2b(method),
  *                                 s2b(parameters),             # <<<<<<<<<<<<<<
  *                                 s2b(base_path))
  * 
  */
-  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 546, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_5adios_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 546, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 725, __pyx_L1_error)
 
-  /* "adios.pyx":547
+  /* "adios.pyx":726
  *                                 s2b(method),
  *                                 s2b(parameters),
  *                                 s2b(base_path))             # <<<<<<<<<<<<<<
  * 
- * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):
  */
-  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_base_path, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 547, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_5adios_s2b(__pyx_v_base_path, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 726, __pyx_L1_error)
 
-  /* "adios.pyx":544
+  /* "adios.pyx":723
  *                          str parameters = "",
  *                          str base_path = ""):
  *     return adios_select_method (group,             # <<<<<<<<<<<<<<
@@ -7599,7 +10339,7 @@ static int __pyx_f_5adios_select_method(int64_t __pyx_v_group, PyObject *__pyx_v
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":540
+  /* "adios.pyx":719
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
@@ -7620,9 +10360,9 @@ static int __pyx_f_5adios_select_method(int64_t __pyx_v_group, PyObject *__pyx_v
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_44select_method[] = "select_method(int64_t group, str method, str parameters='', str base_path='') -> int";
-static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_75select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_74select_method[] = "select_method(int64_t group, str method, str parameters='', str base_path='') -> int";
+static PyObject *__pyx_pw_5adios_75select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_group;
   PyObject *__pyx_v_method = 0;
   PyObject *__pyx_v_parameters = 0;
@@ -7654,7 +10394,7 @@ static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); __PYX_ERR(0, 540, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); __PYX_ERR(0, 719, __pyx_L3_error)
         }
         case  2:
         if (kw_args > 0) {
@@ -7668,7 +10408,7 @@ static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_method") < 0)) __PYX_ERR(0, 540, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_method") < 0)) __PYX_ERR(0, 719, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -7680,23 +10420,23 @@ static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L3_error)
+    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 719, __pyx_L3_error)
     __pyx_v_method = ((PyObject*)values[1]);
     __pyx_v_parameters = ((PyObject*)values[2]);
     __pyx_v_base_path = ((PyObject*)values[3]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 540, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 719, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 541, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 542, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base_path), (&PyString_Type), 1, "base_path", 1))) __PYX_ERR(0, 543, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_44select_method(__pyx_self, __pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 720, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 721, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base_path), (&PyString_Type), 1, "base_path", 1))) __PYX_ERR(0, 722, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_74select_method(__pyx_self, __pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
 
   /* function exit code */
   goto __pyx_L0;
@@ -7707,7 +10447,7 @@ static PyObject *__pyx_pw_5adios_45select_method(PyObject *__pyx_self, PyObject
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_44select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path) {
+static PyObject *__pyx_pf_5adios_74select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -7719,7 +10459,7 @@ static PyObject *__pyx_pf_5adios_44select_method(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_2.parameters = __pyx_v_parameters;
   __pyx_t_2.base_path = __pyx_v_base_path;
   __pyx_t_1 = __pyx_f_5adios_select_method(__pyx_v_group, __pyx_v_method, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 540, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 719, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -7736,7 +10476,352 @@ static PyObject *__pyx_pf_5adios_44select_method(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":554
+/* "adios.pyx":728
+ *                                 s2b(base_path))
+ * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):             # <<<<<<<<<<<<<<
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_77set_transform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_set_transform(int64_t __pyx_v_var_id, PyObject *__pyx_v_transform_type_str, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  __Pyx_RefNannySetupContext("set_transform", 0);
+
+  /* "adios.pyx":729
+ * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):
+ *     return adios_set_transform (var_id, s2b(transform_type_str))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):
+ */
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_transform_type_str, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 729, __pyx_L1_error)
+  __pyx_r = adios_set_transform(__pyx_v_var_id, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":728
+ *                                 s2b(base_path))
+ * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):             # <<<<<<<<<<<<<<
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios.set_transform", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_77set_transform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_76set_transform[] = "set_transform(int64_t var_id, str transform_type_str) -> int";
+static PyObject *__pyx_pw_5adios_77set_transform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_var_id;
+  PyObject *__pyx_v_transform_type_str = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_transform (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var_id,&__pyx_n_s_transform_type_str,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var_id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform_type_str)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_transform", 1, 2, 2, 1); __PYX_ERR(0, 728, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_transform") < 0)) __PYX_ERR(0, 728, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_var_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_var_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 728, __pyx_L3_error)
+    __pyx_v_transform_type_str = ((PyObject*)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_transform", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 728, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.set_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_transform_type_str), (&PyString_Type), 1, "transform_type_str", 1))) __PYX_ERR(0, 728, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_76set_transform(__pyx_self, __pyx_v_var_id, __pyx_v_transform_type_str);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_76set_transform(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_var_id, PyObject *__pyx_v_transform_type_str) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_transform", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_set_transform(__pyx_v_var_id, __pyx_v_transform_type_str, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 728, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.set_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":731
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):             # <<<<<<<<<<<<<<
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ */
+
+static PyObject *__pyx_pw_5adios_79set_max_buffer_size(PyObject *__pyx_self, PyObject *__pyx_arg_max_buffer_size_MB); /*proto*/
+static void __pyx_f_5adios_set_max_buffer_size(int64_t __pyx_v_max_buffer_size_MB, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_max_buffer_size", 0);
+
+  /* "adios.pyx":732
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):
+ *     adios_set_max_buffer_size (max_buffer_size_MB)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int set_time_aggregation (int64_t groupid,
+ */
+  adios_set_max_buffer_size(__pyx_v_max_buffer_size_MB);
+
+  /* "adios.pyx":731
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):             # <<<<<<<<<<<<<<
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ */
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_79set_max_buffer_size(PyObject *__pyx_self, PyObject *__pyx_arg_max_buffer_size_MB); /*proto*/
+static char __pyx_doc_5adios_78set_max_buffer_size[] = "set_max_buffer_size(int64_t max_buffer_size_MB) -> void";
+static PyObject *__pyx_pw_5adios_79set_max_buffer_size(PyObject *__pyx_self, PyObject *__pyx_arg_max_buffer_size_MB) {
+  int64_t __pyx_v_max_buffer_size_MB;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_max_buffer_size (wrapper)", 0);
+  assert(__pyx_arg_max_buffer_size_MB); {
+    __pyx_v_max_buffer_size_MB = __Pyx_PyInt_As_int64_t(__pyx_arg_max_buffer_size_MB); if (unlikely((__pyx_v_max_buffer_size_MB == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 731, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.set_max_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_78set_max_buffer_size(__pyx_self, ((int64_t)__pyx_v_max_buffer_size_MB));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_78set_max_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_max_buffer_size_MB) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_max_buffer_size", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_void_to_None(__pyx_f_5adios_set_max_buffer_size(__pyx_v_max_buffer_size_MB, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.set_max_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":734
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ * cpdef int set_time_aggregation (int64_t groupid,             # <<<<<<<<<<<<<<
+ *                                       uint64_t buffersize,
+ *                                       int64_t syncgroupid):
+ */
+
+static PyObject *__pyx_pw_5adios_81set_time_aggregation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_5adios_set_time_aggregation(int64_t __pyx_v_groupid, uint64_t __pyx_v_buffersize, int64_t __pyx_v_syncgroupid, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_time_aggregation", 0);
+
+  /* "adios.pyx":737
+ *                                       uint64_t buffersize,
+ *                                       int64_t syncgroupid):
+ *     return adios_set_time_aggregation (groupid,             # <<<<<<<<<<<<<<
+ *                                        buffersize,
+ *                                        syncgroupid)
+ */
+  __pyx_r = adios_set_time_aggregation(__pyx_v_groupid, __pyx_v_buffersize, __pyx_v_syncgroupid);
+  goto __pyx_L0;
+
+  /* "adios.pyx":734
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ * cpdef int set_time_aggregation (int64_t groupid,             # <<<<<<<<<<<<<<
+ *                                       uint64_t buffersize,
+ *                                       int64_t syncgroupid):
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_81set_time_aggregation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_80set_time_aggregation[] = "set_time_aggregation(int64_t groupid, uint64_t buffersize, int64_t syncgroupid) -> int";
+static PyObject *__pyx_pw_5adios_81set_time_aggregation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_groupid;
+  uint64_t __pyx_v_buffersize;
+  int64_t __pyx_v_syncgroupid;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_time_aggregation (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_groupid,&__pyx_n_s_buffersize,&__pyx_n_s_syncgroupid,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_groupid)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffersize)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 1, 3, 3, 1); __PYX_ERR(0, 734, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_syncgroupid)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 1, 3, 3, 2); __PYX_ERR(0, 734, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_time_aggregation") < 0)) __PYX_ERR(0, 734, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_groupid = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_groupid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L3_error)
+    __pyx_v_buffersize = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_buffersize == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 735, __pyx_L3_error)
+    __pyx_v_syncgroupid = __Pyx_PyInt_As_int64_t(values[2]); if (unlikely((__pyx_v_syncgroupid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 736, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 734, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_80set_time_aggregation(__pyx_self, __pyx_v_groupid, __pyx_v_buffersize, __pyx_v_syncgroupid);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_80set_time_aggregation(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_groupid, uint64_t __pyx_v_buffersize, int64_t __pyx_v_syncgroupid) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_time_aggregation", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_5adios_set_time_aggregation(__pyx_v_groupid, __pyx_v_buffersize, __pyx_v_syncgroupid, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":746
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -7744,7 +10829,7 @@ static PyObject *__pyx_pf_5adios_44select_method(CYTHON_UNUSED PyObject *__pyx_s
  *     cdef np.dtype ntype = None
  */
 
-static PyObject *__pyx_pw_5adios_47adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_5adios_83adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_adios2npdtype *__pyx_optional_args) {
   int __pyx_v_strlen = ((int)1);
   PyArray_Descr *__pyx_v_ntype = 0;
@@ -7760,7 +10845,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
     }
   }
 
-  /* "adios.pyx":556
+  /* "adios.pyx":748
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
  *     """ strlen apply only to string type """
  *     cdef np.dtype ntype = None             # <<<<<<<<<<<<<<
@@ -7770,7 +10855,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
   __Pyx_INCREF(Py_None);
   __pyx_v_ntype = ((PyArray_Descr *)Py_None);
 
-  /* "adios.pyx":557
+  /* "adios.pyx":749
  *     """ strlen apply only to string type """
  *     cdef np.dtype ntype = None
  *     if t == adios_byte:             # <<<<<<<<<<<<<<
@@ -7780,30 +10865,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
   switch (__pyx_v_t) {
     case adios_byte:
 
-    /* "adios.pyx":558
+    /* "adios.pyx":750
  *     cdef np.dtype ntype = None
  *     if t == adios_byte:
  *         ntype = np.dtype(np.int8)             # <<<<<<<<<<<<<<
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":557
+    /* "adios.pyx":749
  *     """ strlen apply only to string type """
  *     cdef np.dtype ntype = None
  *     if t == adios_byte:             # <<<<<<<<<<<<<<
@@ -7812,7 +10897,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":559
+    /* "adios.pyx":751
  *     if t == adios_byte:
  *         ntype = np.dtype(np.int8)
  *     elif t == adios_short:             # <<<<<<<<<<<<<<
@@ -7821,30 +10906,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_short:
 
-    /* "adios.pyx":560
+    /* "adios.pyx":752
  *         ntype = np.dtype(np.int8)
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)             # <<<<<<<<<<<<<<
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 752, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 560, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 752, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 560, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":559
+    /* "adios.pyx":751
  *     if t == adios_byte:
  *         ntype = np.dtype(np.int8)
  *     elif t == adios_short:             # <<<<<<<<<<<<<<
@@ -7853,7 +10938,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":561
+    /* "adios.pyx":753
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)
  *     elif t == adios_integer:             # <<<<<<<<<<<<<<
@@ -7862,30 +10947,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_integer:
 
-    /* "adios.pyx":562
+    /* "adios.pyx":754
  *         ntype = np.dtype(np.int16)
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)             # <<<<<<<<<<<<<<
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 754, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":561
+    /* "adios.pyx":753
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)
  *     elif t == adios_integer:             # <<<<<<<<<<<<<<
@@ -7894,7 +10979,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":563
+    /* "adios.pyx":755
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)
  *     elif t == adios_long:             # <<<<<<<<<<<<<<
@@ -7903,30 +10988,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_long:
 
-    /* "adios.pyx":564
+    /* "adios.pyx":756
  *         ntype = np.dtype(np.int32)
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 564, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":563
+    /* "adios.pyx":755
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)
  *     elif t == adios_long:             # <<<<<<<<<<<<<<
@@ -7935,7 +11020,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":565
+    /* "adios.pyx":757
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)
  *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
@@ -7944,30 +11029,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_unsigned_byte:
 
-    /* "adios.pyx":566
+    /* "adios.pyx":758
  *         ntype = np.dtype(np.int64)
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":565
+    /* "adios.pyx":757
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)
  *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
@@ -7976,7 +11061,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":567
+    /* "adios.pyx":759
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)
  *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
@@ -7985,30 +11070,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_unsigned_short:
 
-    /* "adios.pyx":568
+    /* "adios.pyx":760
  *         ntype = np.dtype(np.uint8)
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 760, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 760, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":567
+    /* "adios.pyx":759
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)
  *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
@@ -8017,7 +11102,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":569
+    /* "adios.pyx":761
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)
  *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
@@ -8026,30 +11111,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_unsigned_integer:
 
-    /* "adios.pyx":570
+    /* "adios.pyx":762
  *         ntype = np.dtype(np.uint16)
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":569
+    /* "adios.pyx":761
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)
  *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
@@ -8058,7 +11143,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":571
+    /* "adios.pyx":763
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)
  *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
@@ -8067,30 +11152,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_unsigned_long:
 
-    /* "adios.pyx":572
+    /* "adios.pyx":764
  *         ntype = np.dtype(np.uint32)
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)             # <<<<<<<<<<<<<<
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":571
+    /* "adios.pyx":763
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)
  *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
@@ -8099,7 +11184,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":573
+    /* "adios.pyx":765
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)
  *     elif t == adios_real:             # <<<<<<<<<<<<<<
@@ -8108,30 +11193,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_real:
 
-    /* "adios.pyx":574
+    /* "adios.pyx":766
  *         ntype = np.dtype(np.uint64)
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)             # <<<<<<<<<<<<<<
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":573
+    /* "adios.pyx":765
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)
  *     elif t == adios_real:             # <<<<<<<<<<<<<<
@@ -8140,7 +11225,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":575
+    /* "adios.pyx":767
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)
  *     elif t == adios_double:             # <<<<<<<<<<<<<<
@@ -8149,30 +11234,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_double:
 
-    /* "adios.pyx":576
+    /* "adios.pyx":768
  *         ntype = np.dtype(np.float32)
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)             # <<<<<<<<<<<<<<
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":575
+    /* "adios.pyx":767
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)
  *     elif t == adios_double:             # <<<<<<<<<<<<<<
@@ -8181,7 +11266,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":577
+    /* "adios.pyx":769
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)
  *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
@@ -8190,30 +11275,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_long_double:
 
-    /* "adios.pyx":578
+    /* "adios.pyx":770
  *         ntype = np.dtype(np.float64)
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)             # <<<<<<<<<<<<<<
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 770, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 578, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 770, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 770, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 578, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 770, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":577
+    /* "adios.pyx":769
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)
  *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
@@ -8222,7 +11307,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":579
+    /* "adios.pyx":771
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)
  *     elif t == adios_complex:             # <<<<<<<<<<<<<<
@@ -8231,30 +11316,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_complex:
 
-    /* "adios.pyx":580
+    /* "adios.pyx":772
  *         ntype = np.dtype(np.float128)
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)             # <<<<<<<<<<<<<<
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 580, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 772, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 580, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 772, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":579
+    /* "adios.pyx":771
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)
  *     elif t == adios_complex:             # <<<<<<<<<<<<<<
@@ -8263,7 +11348,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":581
+    /* "adios.pyx":773
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)
  *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
@@ -8272,30 +11357,30 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_double_complex:
 
-    /* "adios.pyx":582
+    /* "adios.pyx":774
  *         ntype = np.dtype(np.complex64)
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)             # <<<<<<<<<<<<<<
  *     elif t == adios_string:
  *         ## Use string_ instead of str_ for py3
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 582, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 582, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":581
+    /* "adios.pyx":773
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)
  *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
@@ -8304,7 +11389,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     break;
 
-    /* "adios.pyx":583
+    /* "adios.pyx":775
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)
  *     elif t == adios_string:             # <<<<<<<<<<<<<<
@@ -8313,21 +11398,21 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
  */
     case adios_string:
 
-    /* "adios.pyx":585
+    /* "adios.pyx":777
  *     elif t == adios_string:
  *         ## Use string_ instead of str_ for py3
  *         ntype = np.dtype((np.string_, strlen))             # <<<<<<<<<<<<<<
  *     else:
  *         ntype = None
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_strlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_strlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -8335,18 +11420,18 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
     __pyx_t_1 = 0;
     __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 777, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":583
+    /* "adios.pyx":775
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)
  *     elif t == adios_string:             # <<<<<<<<<<<<<<
@@ -8356,7 +11441,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
     break;
     default:
 
-    /* "adios.pyx":587
+    /* "adios.pyx":779
  *         ntype = np.dtype((np.string_, strlen))
  *     else:
  *         ntype = None             # <<<<<<<<<<<<<<
@@ -8368,7 +11453,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
     break;
   }
 
-  /* "adios.pyx":589
+  /* "adios.pyx":781
  *         ntype = None
  * 
  *     return ntype             # <<<<<<<<<<<<<<
@@ -8380,7 +11465,7 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
   __pyx_r = __pyx_v_ntype;
   goto __pyx_L0;
 
-  /* "adios.pyx":554
+  /* "adios.pyx":746
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -8403,9 +11488,9 @@ static PyArray_Descr *__pyx_f_5adios_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CY
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_47adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_46adios2npdtype[] = "adios2npdtype(ADIOS_DATATYPES t, int strlen=1) -> dtype\n strlen apply only to string type ";
-static PyObject *__pyx_pw_5adios_47adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_83adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_82adios2npdtype[] = "adios2npdtype(ADIOS_DATATYPES t, int strlen=1) -> dtype\n strlen apply only to string type ";
+static PyObject *__pyx_pw_5adios_83adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   ADIOS_DATATYPES __pyx_v_t;
   int __pyx_v_strlen;
   PyObject *__pyx_r = 0;
@@ -8435,7 +11520,7 @@ static PyObject *__pyx_pw_5adios_47adios2npdtype(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) __PYX_ERR(0, 554, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) __PYX_ERR(0, 746, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -8445,29 +11530,29 @@ static PyObject *__pyx_pw_5adios_47adios2npdtype(PyObject *__pyx_self, PyObject
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_t = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 554, __pyx_L3_error)
+    __pyx_v_t = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 746, __pyx_L3_error)
     if (values[1]) {
-      __pyx_v_strlen = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_strlen == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 554, __pyx_L3_error)
+      __pyx_v_strlen = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_strlen == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 746, __pyx_L3_error)
     } else {
       __pyx_v_strlen = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 554, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 746, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_46adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
+  __pyx_r = __pyx_pf_5adios_82adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
+static PyObject *__pyx_pf_5adios_82adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -8476,7 +11561,7 @@ static PyObject *__pyx_pf_5adios_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_s
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.strlen = __pyx_v_strlen;
-  __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_t, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_t, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -8493,7 +11578,7 @@ static PyObject *__pyx_pf_5adios_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":591
+/* "adios.pyx":783
  *     return ntype
  * 
  * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
@@ -8511,16 +11596,16 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("printfile", 0);
 
-  /* "adios.pyx":592
+  /* "adios.pyx":784
  * 
  * cdef printfile(ADIOS_FILE * f):
  *     print ('%15s : %lu' % ('fh', f.fh))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('nvars', f.nvars))
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->fh); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->fh); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fh);
   __Pyx_GIVEREF(__pyx_n_s_fh);
@@ -8528,29 +11613,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":593
+  /* "adios.pyx":785
  * cdef printfile(ADIOS_FILE * f):
  *     print ('%15s : %lu' % ('fh', f.fh))
  *     print ('%15s : %d' % ('nvars', f.nvars))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_nvars);
   __Pyx_GIVEREF(__pyx_n_s_nvars);
@@ -8558,37 +11643,37 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":594
+  /* "adios.pyx":786
  *     print ('%15s : %lu' % ('fh', f.fh))
  *     print ('%15s : %d' % ('nvars', f.nvars))
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_f->nvars;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 786, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 594, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 786, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_var_namelist);
   __Pyx_GIVEREF(__pyx_n_s_var_namelist);
@@ -8596,29 +11681,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":595
+  /* "adios.pyx":787
  *     print ('%15s : %d' % ('nvars', f.nvars))
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  *     print ('%15s : %d' % ('nattrs', f.nattrs))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  *     print ('%15s : %d' % ('current_step', f.current_step))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_nattrs);
   __Pyx_GIVEREF(__pyx_n_s_nattrs);
@@ -8626,37 +11711,37 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":596
+  /* "adios.pyx":788
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('current_step', f.current_step))
  *     print ('%15s : %d' % ('last_step', f.last_step))
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_f->nattrs;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 596, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 788, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_attr_namelist);
   __Pyx_GIVEREF(__pyx_n_s_attr_namelist);
@@ -8664,29 +11749,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":597
+  /* "adios.pyx":789
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  *     print ('%15s : %d' % ('current_step', f.current_step))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('last_step', f.last_step))
  *     print ('%15s : %s' % ('path', f.path))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_current_step);
   __Pyx_GIVEREF(__pyx_n_s_current_step);
@@ -8694,29 +11779,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":598
+  /* "adios.pyx":790
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  *     print ('%15s : %d' % ('current_step', f.current_step))
  *     print ('%15s : %d' % ('last_step', f.last_step))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('path', f.path))
  *     print ('%15s : %d' % ('endianness', f.endianness))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_last_step);
   __Pyx_GIVEREF(__pyx_n_s_last_step);
@@ -8724,29 +11809,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":599
+  /* "adios.pyx":791
  *     print ('%15s : %d' % ('current_step', f.current_step))
  *     print ('%15s : %d' % ('last_step', f.last_step))
  *     print ('%15s : %s' % ('path', f.path))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('endianness', f.endianness))
  *     print ('%15s : %d' % ('version', f.version))
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_f->path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_f->path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_path);
   __Pyx_GIVEREF(__pyx_n_s_path);
@@ -8754,29 +11839,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":600
+  /* "adios.pyx":792
  *     print ('%15s : %d' % ('last_step', f.last_step))
  *     print ('%15s : %s' % ('path', f.path))
  *     print ('%15s : %d' % ('endianness', f.endianness))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('version', f.version))
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_endianness);
   __Pyx_GIVEREF(__pyx_n_s_endianness);
@@ -8784,29 +11869,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":601
+  /* "adios.pyx":793
  *     print ('%15s : %s' % ('path', f.path))
  *     print ('%15s : %d' % ('endianness', f.endianness))
  *     print ('%15s : %d' % ('version', f.version))             # <<<<<<<<<<<<<<
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_version);
   __Pyx_GIVEREF(__pyx_n_s_version);
@@ -8814,29 +11899,29 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":602
+  /* "adios.pyx":794
  *     print ('%15s : %d' % ('endianness', f.endianness))
  *     print ('%15s : %d' % ('version', f.version))
  *     print ('%15s : %lu' % ('file_size', f.file_size))             # <<<<<<<<<<<<<<
  * 
  * cdef printvar(ADIOS_VARINFO * v):
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 602, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_file_size);
   __Pyx_GIVEREF(__pyx_n_s_file_size);
@@ -8844,20 +11929,20 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 602, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":591
+  /* "adios.pyx":783
  *     return ntype
  * 
  * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
@@ -8879,7 +11964,7 @@ static PyObject *__pyx_f_5adios_printfile(ADIOS_FILE *__pyx_v_f) {
   return __pyx_r;
 }
 
-/* "adios.pyx":604
+/* "adios.pyx":796
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
  * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
@@ -8897,16 +11982,16 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("printvar", 0);
 
-  /* "adios.pyx":605
+  /* "adios.pyx":797
  * 
  * cdef printvar(ADIOS_VARINFO * v):
  *     print ('%15s : %d' % ('varid', v.varid))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  *     print ('%15s : %d' % ('ndim', v.ndim))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_varid);
   __Pyx_GIVEREF(__pyx_n_s_varid);
@@ -8914,29 +11999,29 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":606
+  /* "adios.pyx":798
  * cdef printvar(ADIOS_VARINFO * v):
  *     print ('%15s : %d' % ('varid', v.varid))
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('ndim', v.ndim))
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_v->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_v->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_type);
   __Pyx_GIVEREF(__pyx_n_s_type);
@@ -8944,29 +12029,29 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":607
+  /* "adios.pyx":799
  *     print ('%15s : %d' % ('varid', v.varid))
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  *     print ('%15s : %d' % ('ndim', v.ndim))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_ndim);
   __Pyx_GIVEREF(__pyx_n_s_ndim);
@@ -8974,37 +12059,37 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":608
+  /* "adios.pyx":800
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  *     print ('%15s : %d' % ('ndim', v.ndim))
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_v->ndim;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_2 = __Pyx_PyInt_From_uint64_t((__pyx_v_v->dims[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_uint64_t((__pyx_v_v->dims[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 608, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 800, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_dims);
   __Pyx_GIVEREF(__pyx_n_s_dims);
@@ -9012,29 +12097,29 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":609
+  /* "adios.pyx":801
  *     print ('%15s : %d' % ('ndim', v.ndim))
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))
  *     print ('%15s : %d' % ('nsteps', v.nsteps))             # <<<<<<<<<<<<<<
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_nsteps);
   __Pyx_GIVEREF(__pyx_n_s_nsteps);
@@ -9042,20 +12127,20 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":604
+  /* "adios.pyx":796
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
  * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
@@ -9077,7 +12162,7 @@ static PyObject *__pyx_f_5adios_printvar(ADIOS_VARINFO *__pyx_v_v) {
   return __pyx_r;
 }
 
-/* "adios.pyx":611
+/* "adios.pyx":803
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
@@ -9095,32 +12180,32 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
   ADIOS_READ_METHOD __pyx_t_4;
   __Pyx_RefNannySetupContext("str2adiosreadmethod", 0);
 
-  /* "adios.pyx":612
+  /* "adios.pyx":804
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  *     if (name == "BP"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 612, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 804, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios.pyx":613
+    /* "adios.pyx":805
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  *     if (name == "BP"):
  *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 613, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_BP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_BP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_method = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":612
+    /* "adios.pyx":804
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  *     if (name == "BP"):             # <<<<<<<<<<<<<<
@@ -9130,32 +12215,32 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":614
+  /* "adios.pyx":806
  *     if (name == "BP"):
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP_AGGREGATE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 614, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP_AGGREGATE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 806, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios.pyx":615
+    /* "adios.pyx":807
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE             # <<<<<<<<<<<<<<
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 807, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP_AGGREGATE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 615, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP_AGGREGATE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 807, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":614
+    /* "adios.pyx":806
  *     if (name == "BP"):
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
@@ -9165,32 +12250,32 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":616
+  /* "adios.pyx":808
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DATASPACES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 616, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DATASPACES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 808, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios.pyx":617
+    /* "adios.pyx":809
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES             # <<<<<<<<<<<<<<
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 809, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DATASPACES); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DATASPACES); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 809, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_method = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":616
+    /* "adios.pyx":808
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
@@ -9200,32 +12285,32 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":618
+  /* "adios.pyx":810
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DIMES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 618, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DIMES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 810, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios.pyx":619
+    /* "adios.pyx":811
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES             # <<<<<<<<<<<<<<
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 811, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DIMES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 619, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DIMES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 811, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":618
+    /* "adios.pyx":810
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
@@ -9235,32 +12320,32 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":620
+  /* "adios.pyx":812
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FLEXPATH, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 620, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FLEXPATH, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 812, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios.pyx":621
+    /* "adios.pyx":813
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH             # <<<<<<<<<<<<<<
  *     elif (name == "ICEE"):
  *         method = READ_METHOD.ICEE
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 621, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 813, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FLEXPATH); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 621, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FLEXPATH); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 813, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_method = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":620
+    /* "adios.pyx":812
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
@@ -9270,32 +12355,32 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":622
+  /* "adios.pyx":814
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.ICEE
  *     else:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ICEE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 622, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ICEE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 814, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios.pyx":623
+    /* "adios.pyx":815
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):
  *         method = READ_METHOD.ICEE             # <<<<<<<<<<<<<<
  *     else:
  *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 623, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 815, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ICEE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ICEE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":622
+    /* "adios.pyx":814
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
@@ -9305,7 +12390,7 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":625
+  /* "adios.pyx":817
  *         method = READ_METHOD.ICEE
  *     else:
  *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')             # <<<<<<<<<<<<<<
@@ -9313,7 +12398,7 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
  * 
  */
   /*else*/ {
-    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 625, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_kp_s_WARN_Invalid_read_method_name);
     __Pyx_GIVEREF(__pyx_kp_s_WARN_Invalid_read_method_name);
@@ -9324,21 +12409,21 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
     __Pyx_INCREF(__pyx_kp_s_Use_default_BP_method);
     __Pyx_GIVEREF(__pyx_kp_s_Use_default_BP_method);
     PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_s_Use_default_BP_method);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 625, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":626
+    /* "adios.pyx":818
  *     else:
  *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')
  *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
  * 
  *     return method
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 626, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 818, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 818, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
@@ -9346,18 +12431,18 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
   }
   __pyx_L3:;
 
-  /* "adios.pyx":628
+  /* "adios.pyx":820
  *         method = READ_METHOD.BP
  * 
  *     return method             # <<<<<<<<<<<<<<
  * 
  * cpdef np2adiostype(np.dtype nptype):
  */
-  __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 628, __pyx_L1_error)
+  __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 820, __pyx_L1_error)
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios.pyx":611
+  /* "adios.pyx":803
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
@@ -9377,7 +12462,7 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
   return __pyx_r;
 }
 
-/* "adios.pyx":630
+/* "adios.pyx":822
  *     return method
  * 
  * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
@@ -9385,7 +12470,7 @@ static ADIOS_READ_METHOD __pyx_f_5adios_str2adiosreadmethod(PyObject *__pyx_v_na
  *     """
  */
 
-static PyObject *__pyx_pw_5adios_49np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
+static PyObject *__pyx_pw_5adios_85np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
 static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_v_atype = 0;
   PyObject *__pyx_r = NULL;
@@ -9396,55 +12481,55 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("np2adiostype", 0);
 
-  /* "adios.pyx":634
+  /* "adios.pyx":826
  *     """
  * 
  *     cdef atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
  * 
  *     if (nptype == np.bool_):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 826, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_atype = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":636
+  /* "adios.pyx":828
  *     cdef atype = DATATYPE.unknown
  * 
  *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 828, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":637
+    /* "adios.pyx":829
  * 
  *     if (nptype == np.bool_):
  *         atype = DATATYPE.byte             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_byte); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_byte); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":636
+    /* "adios.pyx":828
  *     cdef atype = DATATYPE.unknown
  * 
  *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
@@ -9454,40 +12539,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":638
+  /* "adios.pyx":830
  *     if (nptype == np.bool_):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 638, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 638, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 638, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 830, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":639
+    /* "adios.pyx":831
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":638
+    /* "adios.pyx":830
  *     if (nptype == np.bool_):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
@@ -9497,40 +12582,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":640
+  /* "adios.pyx":832
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 640, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":641
+    /* "adios.pyx":833
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":640
+    /* "adios.pyx":832
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
@@ -9540,40 +12625,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":642
+  /* "adios.pyx":834
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 834, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 834, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":643
+    /* "adios.pyx":835
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 835, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":642
+    /* "adios.pyx":834
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
@@ -9583,40 +12668,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":644
+  /* "adios.pyx":836
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 644, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":645
+    /* "adios.pyx":837
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 837, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 645, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":644
+    /* "adios.pyx":836
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
@@ -9626,40 +12711,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":646
+  /* "adios.pyx":838
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 646, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":647
+    /* "adios.pyx":839
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 839, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 839, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":646
+    /* "adios.pyx":838
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
@@ -9669,40 +12754,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":648
+  /* "adios.pyx":840
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 648, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 840, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 840, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 648, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 840, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 648, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 840, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":649
+    /* "adios.pyx":841
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 841, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":648
+    /* "adios.pyx":840
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
@@ -9712,40 +12797,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":650
+  /* "adios.pyx":842
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 650, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 842, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 650, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 842, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":651
+    /* "adios.pyx":843
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":650
+    /* "adios.pyx":842
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
@@ -9755,40 +12840,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":652
+  /* "adios.pyx":844
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 652, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 844, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":653
+    /* "adios.pyx":845
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 845, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":652
+    /* "adios.pyx":844
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
@@ -9798,40 +12883,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":654
+  /* "adios.pyx":846
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 846, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 846, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 846, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 654, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 846, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":655
+    /* "adios.pyx":847
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 847, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":654
+    /* "adios.pyx":846
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
@@ -9841,40 +12926,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":656
+  /* "adios.pyx":848
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 848, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 848, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 848, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 656, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 848, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":657
+    /* "adios.pyx":849
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 849, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_real); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_real); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 849, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":656
+    /* "adios.pyx":848
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
@@ -9884,40 +12969,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":658
+  /* "adios.pyx":850
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 658, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 850, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 658, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 850, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":659
+    /* "adios.pyx":851
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 851, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_real); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_real); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 851, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":658
+    /* "adios.pyx":850
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
@@ -9927,40 +13012,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":660
+  /* "adios.pyx":852
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 660, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 852, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":661
+    /* "adios.pyx":853
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 853, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_double); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_double); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 853, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":660
+    /* "adios.pyx":852
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
@@ -9970,40 +13055,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":662
+  /* "adios.pyx":854
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 854, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 854, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 854, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 662, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 854, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":663
+    /* "adios.pyx":855
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 855, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 663, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 855, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":662
+    /* "adios.pyx":854
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
@@ -10013,40 +13098,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":664
+  /* "adios.pyx":856
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 856, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 664, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 856, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 664, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 856, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":665
+    /* "adios.pyx":857
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex             # <<<<<<<<<<<<<<
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 857, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":664
+    /* "adios.pyx":856
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
@@ -10056,40 +13141,40 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":666
+  /* "adios.pyx":858
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 666, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 858, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":667
+    /* "adios.pyx":859
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
  *     elif (nptype.char in ('S', 'U')):
  *         atype = DATATYPE.string
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 859, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":666
+    /* "adios.pyx":858
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
@@ -10099,44 +13184,44 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":668
+  /* "adios.pyx":860
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.string
  *     else:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nptype), __pyx_n_s_char); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nptype), __pyx_n_s_char); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 668, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 860, __pyx_L1_error)
   if (!__pyx_t_4) {
   } else {
     __pyx_t_3 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 668, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 860, __pyx_L1_error)
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "adios.pyx":669
+    /* "adios.pyx":861
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):
  *         atype = DATATYPE.string             # <<<<<<<<<<<<<<
  *     else:
  *         atype = DATATYPE.unknown
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 669, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 861, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":668
+    /* "adios.pyx":860
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
@@ -10146,7 +13231,7 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":671
+  /* "adios.pyx":863
  *         atype = DATATYPE.string
  *     else:
  *         atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
@@ -10154,9 +13239,9 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
  *     return atype
  */
   /*else*/ {
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
@@ -10164,7 +13249,7 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
   }
   __pyx_L3:;
 
-  /* "adios.pyx":673
+  /* "adios.pyx":865
  *         atype = DATATYPE.unknown
  * 
  *     return atype             # <<<<<<<<<<<<<<
@@ -10176,7 +13261,7 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
   __pyx_r = __pyx_v_atype;
   goto __pyx_L0;
 
-  /* "adios.pyx":630
+  /* "adios.pyx":822
  *     return method
  * 
  * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
@@ -10198,14 +13283,14 @@ static PyObject *__pyx_f_5adios_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTH
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_49np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
-static char __pyx_doc_5adios_48np2adiostype[] = "np2adiostype(dtype nptype)\n Convert Numpy.dtype to Adios Datatype\n    ";
-static PyObject *__pyx_pw_5adios_49np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype) {
+static PyObject *__pyx_pw_5adios_85np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
+static char __pyx_doc_5adios_84np2adiostype[] = "np2adiostype(dtype nptype)\n Convert Numpy.dtype to Adios Datatype\n    ";
+static PyObject *__pyx_pw_5adios_85np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("np2adiostype (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nptype), __pyx_ptype_5numpy_dtype, 1, "nptype", 0))) __PYX_ERR(0, 630, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_48np2adiostype(__pyx_self, ((PyArray_Descr *)__pyx_v_nptype));
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nptype), __pyx_ptype_5numpy_dtype, 1, "nptype", 0))) __PYX_ERR(0, 822, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_84np2adiostype(__pyx_self, ((PyArray_Descr *)__pyx_v_nptype));
 
   /* function exit code */
   goto __pyx_L0;
@@ -10216,13 +13301,13 @@ static PyObject *__pyx_pw_5adios_49np2adiostype(PyObject *__pyx_self, PyObject *
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
+static PyObject *__pyx_pf_5adios_84np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("np2adiostype", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_np2adiostype(__pyx_v_nptype, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 630, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_np2adiostype(__pyx_v_nptype, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -10239,7 +13324,7 @@ static PyObject *__pyx_pf_5adios_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "adios.pyx":675
+/* "adios.pyx":867
  *     return atype
  * 
  * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
@@ -10247,7 +13332,7 @@ static PyObject *__pyx_pf_5adios_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_se
  * 
  */
 
-static PyObject *__pyx_pw_5adios_51adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
+static PyObject *__pyx_pw_5adios_87adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
 static PyObject *__pyx_f_5adios_adiostype2string(ADIOS_DATATYPES __pyx_v_type, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -10255,7 +13340,7 @@ static PyObject *__pyx_f_5adios_adiostype2string(ADIOS_DATATYPES __pyx_v_type, C
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("adiostype2string", 0);
 
-  /* "adios.pyx":676
+  /* "adios.pyx":868
  * 
  * cpdef str adiostype2string (ADIOS_DATATYPES type):
  *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))             # <<<<<<<<<<<<<<
@@ -10263,22 +13348,22 @@ static PyObject *__pyx_f_5adios_adiostype2string(ADIOS_DATATYPES __pyx_v_type, C
  * ## ====================
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBytes_FromString(adios_type_to_string(((ADIOS_DATATYPES)__pyx_v_type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBytes_FromString(adios_type_to_string(((ADIOS_DATATYPES)__pyx_v_type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 868, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 868, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 676, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 868, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 676, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 868, __pyx_L1_error)
   __pyx_r = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":675
+  /* "adios.pyx":867
  *     return atype
  * 
  * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
@@ -10299,15 +13384,15 @@ static PyObject *__pyx_f_5adios_adiostype2string(ADIOS_DATATYPES __pyx_v_type, C
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_51adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
-static char __pyx_doc_5adios_50adiostype2string[] = "adiostype2string(ADIOS_DATATYPES type) -> str";
-static PyObject *__pyx_pw_5adios_51adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
+static PyObject *__pyx_pw_5adios_87adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
+static char __pyx_doc_5adios_86adiostype2string[] = "adiostype2string(ADIOS_DATATYPES type) -> str";
+static PyObject *__pyx_pw_5adios_87adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
   ADIOS_DATATYPES __pyx_v_type;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("adiostype2string (wrapper)", 0);
   assert(__pyx_arg_type); {
-    __pyx_v_type = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_arg_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 675, __pyx_L3_error)
+    __pyx_v_type = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_arg_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 867, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -10315,20 +13400,20 @@ static PyObject *__pyx_pw_5adios_51adiostype2string(PyObject *__pyx_self, PyObje
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_50adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
+  __pyx_r = __pyx_pf_5adios_86adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_50adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
+static PyObject *__pyx_pf_5adios_86adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("adiostype2string", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_adiostype2string(__pyx_v_type, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_adiostype2string(__pyx_v_type, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -10345,7 +13430,7 @@ static PyObject *__pyx_pf_5adios_50adiostype2string(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":683
+/* "adios.pyx":875
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
@@ -10353,10 +13438,10 @@ static PyObject *__pyx_pf_5adios_50adiostype2string(CYTHON_UNUSED PyObject *__py
  *                     str parameters = ""):
  */
 
-static PyObject *__pyx_pw_5adios_53read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_5adios_89read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_f_5adios_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_read_init *__pyx_optional_args) {
   PyObject *__pyx_v_method_name = ((PyObject*)__pyx_n_s_BP);
-  MPI_Comm __pyx_v_comm = __pyx_k__11;
+  MPI_Comm __pyx_v_comm = __pyx_k__12;
   PyObject *__pyx_v_parameters = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_method = 0;
   int __pyx_r;
@@ -10377,7 +13462,7 @@ static int __pyx_f_5adios_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, struc
     }
   }
 
-  /* "adios.pyx":687
+  /* "adios.pyx":879
  *                     str parameters = ""):
  *     global read_init_comm
  *     read_init_comm = comm             # <<<<<<<<<<<<<<
@@ -10386,34 +13471,34 @@ static int __pyx_f_5adios_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, struc
  */
   __pyx_v_5adios_read_init_comm = __pyx_v_comm;
 
-  /* "adios.pyx":688
+  /* "adios.pyx":880
  *     global read_init_comm
  *     read_init_comm = comm
  *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  *     return adios_read_init_method (method, read_init_comm, s2b(parameters))
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_5adios_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_5adios_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":689
+  /* "adios.pyx":881
  *     read_init_comm = comm
  *     cdef method = str2adiosreadmethod(method_name)
  *     return adios_read_init_method (method, read_init_comm, s2b(parameters))             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_2 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 689, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
+  __pyx_t_2 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 881, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 881, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 689, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 881, __pyx_L1_error)
   __pyx_r = adios_read_init_method(__pyx_t_2, __pyx_v_5adios_read_init_comm, __pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":683
+  /* "adios.pyx":875
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
@@ -10433,9 +13518,9 @@ static int __pyx_f_5adios_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, struc
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_53read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_52read_init[] = "read_init(str method_name='BP', MPI_Comm comm=MPI_COMM_WORLD, str parameters='') -> int";
-static PyObject *__pyx_pw_5adios_53read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_89read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_88read_init[] = "read_init(str method_name='BP', MPI_Comm comm=MPI_COMM_WORLD, str parameters='') -> int";
+static PyObject *__pyx_pw_5adios_89read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_method_name = 0;
   MPI_Comm __pyx_v_comm;
   PyObject *__pyx_v_parameters = 0;
@@ -10476,7 +13561,7 @@ static PyObject *__pyx_pw_5adios_53read_init(PyObject *__pyx_self, PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) __PYX_ERR(0, 683, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) __PYX_ERR(0, 875, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -10489,23 +13574,23 @@ static PyObject *__pyx_pw_5adios_53read_init(PyObject *__pyx_self, PyObject *__p
     }
     __pyx_v_method_name = ((PyObject*)values[0]);
     if (values[1]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[1]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 684, __pyx_L3_error)
+      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[1]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 876, __pyx_L3_error)
     } else {
-      __pyx_v_comm = __pyx_k__11;
+      __pyx_v_comm = __pyx_k__12;
     }
     __pyx_v_parameters = ((PyObject*)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 683, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 875, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 683, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 685, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_52read_init(__pyx_self, __pyx_v_method_name, __pyx_v_comm, __pyx_v_parameters);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 875, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 877, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_88read_init(__pyx_self, __pyx_v_method_name, __pyx_v_comm, __pyx_v_parameters);
 
   /* function exit code */
   goto __pyx_L0;
@@ -10516,7 +13601,7 @@ static PyObject *__pyx_pw_5adios_53read_init(PyObject *__pyx_self, PyObject *__p
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_52read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_parameters) {
+static PyObject *__pyx_pf_5adios_88read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, MPI_Comm __pyx_v_comm, PyObject *__pyx_v_parameters) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -10529,7 +13614,7 @@ static PyObject *__pyx_pf_5adios_52read_init(CYTHON_UNUSED PyObject *__pyx_self,
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_t_2.parameters = __pyx_v_parameters;
   __pyx_t_1 = __pyx_f_5adios_read_init(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -10546,7 +13631,7 @@ static PyObject *__pyx_pf_5adios_52read_init(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios.pyx":693
+/* "adios.pyx":885
  * 
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
@@ -10554,7 +13639,7 @@ static PyObject *__pyx_pf_5adios_52read_init(CYTHON_UNUSED PyObject *__pyx_self,
  *     return adios_read_finalize_method (s2b(method))
  */
 
-static PyObject *__pyx_pw_5adios_55read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_5adios_91read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_f_5adios_read_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_read_finalize *__pyx_optional_args) {
   PyObject *__pyx_v_method_name = ((PyObject*)__pyx_n_s_BP);
   PyObject *__pyx_v_method = 0;
@@ -10569,34 +13654,34 @@ static int __pyx_f_5adios_read_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, s
     }
   }
 
-  /* "adios.pyx":694
+  /* "adios.pyx":886
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):
  *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  *     return adios_read_finalize_method (s2b(method))
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_5adios_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_5adios_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":695
+  /* "adios.pyx":887
  * cpdef int read_finalize(str method_name = "BP"):
  *     cdef method = str2adiosreadmethod(method_name)
  *     return adios_read_finalize_method (s2b(method))             # <<<<<<<<<<<<<<
  * 
  * ## dict for handling '/' prefix
  */
-  if (!(likely(PyString_CheckExact(__pyx_v_method))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_method)->tp_name), 0))) __PYX_ERR(0, 695, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_5adios_s2b(((PyObject*)__pyx_v_method), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_v_method))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_method)->tp_name), 0))) __PYX_ERR(0, 887, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(((PyObject*)__pyx_v_method), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 695, __pyx_L1_error)
+  __pyx_t_2 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 887, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = adios_read_finalize_method(__pyx_t_2);
   goto __pyx_L0;
 
-  /* "adios.pyx":693
+  /* "adios.pyx":885
  * 
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
@@ -10616,9 +13701,9 @@ static int __pyx_f_5adios_read_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, s
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_55read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_54read_finalize[] = "read_finalize(str method_name='BP') -> int";
-static PyObject *__pyx_pw_5adios_55read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_91read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_90read_finalize[] = "read_finalize(str method_name='BP') -> int";
+static PyObject *__pyx_pw_5adios_91read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_method_name = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -10644,7 +13729,7 @@ static PyObject *__pyx_pw_5adios_55read_finalize(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_finalize") < 0)) __PYX_ERR(0, 693, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_finalize") < 0)) __PYX_ERR(0, 885, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -10657,14 +13742,14 @@ static PyObject *__pyx_pw_5adios_55read_finalize(PyObject *__pyx_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 693, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 885, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 693, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_54read_finalize(__pyx_self, __pyx_v_method_name);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 885, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_90read_finalize(__pyx_self, __pyx_v_method_name);
 
   /* function exit code */
   goto __pyx_L0;
@@ -10675,7 +13760,7 @@ static PyObject *__pyx_pw_5adios_55read_finalize(PyObject *__pyx_self, PyObject
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_54read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name) {
+static PyObject *__pyx_pf_5adios_90read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -10686,7 +13771,7 @@ static PyObject *__pyx_pf_5adios_54read_finalize(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.method_name = __pyx_v_method_name;
   __pyx_t_1 = __pyx_f_5adios_read_finalize(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 885, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -10703,7 +13788,7 @@ static PyObject *__pyx_pf_5adios_54read_finalize(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios.pyx":699
+/* "adios.pyx":891
  * ## dict for handling '/' prefix
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -10738,7 +13823,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios.pyx":700
+  /* "adios.pyx":892
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -10749,14 +13834,14 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":701
+    /* "adios.pyx":893
  *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 701, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 893, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -10764,7 +13849,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":700
+    /* "adios.pyx":892
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -10773,37 +13858,37 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
   }
 
-  /* "adios.pyx":703
+  /* "adios.pyx":895
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 703, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 895, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":704
+    /* "adios.pyx":896
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 896, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 896, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 704, __pyx_L1_error)
+    __PYX_ERR(0, 896, __pyx_L1_error)
 
-    /* "adios.pyx":703
+    /* "adios.pyx":895
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -10812,7 +13897,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
   }
 
-  /* "adios.pyx":706
+  /* "adios.pyx":898
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -10823,26 +13908,26 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 706, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 898, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 706, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 898, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 706, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 898, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 706, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 706, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 898, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 706, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -10852,7 +13937,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 706, __pyx_L1_error)
+          else __PYX_ERR(0, 898, __pyx_L1_error)
         }
         break;
       }
@@ -10861,7 +13946,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":707
+    /* "adios.pyx":899
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -10872,20 +13957,20 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":708
+      /* "adios.pyx":900
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 708, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 900, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 708, __pyx_L1_error)
+      __PYX_ERR(0, 900, __pyx_L1_error)
 
-      /* "adios.pyx":707
+      /* "adios.pyx":899
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -10894,35 +13979,35 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
     }
 
-    /* "adios.pyx":710
+    /* "adios.pyx":902
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 710, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 710, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 902, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 710, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 902, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios.pyx":711
+      /* "adios.pyx":903
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in dict.keys(self):
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__14, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 711, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__15, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 903, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":710
+      /* "adios.pyx":902
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -10931,7 +14016,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
     }
 
-    /* "adios.pyx":713
+    /* "adios.pyx":905
  *                 key_ = key_[1:]
  * 
  *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -10940,16 +14025,16 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
     if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
       PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "keys", "dict");
-      __PYX_ERR(0, 713, __pyx_L1_error)
+      __PYX_ERR(0, 905, __pyx_L1_error)
     }
-    __pyx_t_7 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 713, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 905, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 713, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 905, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":714
+      /* "adios.pyx":906
  * 
  *             if key_ in dict.keys(self):
  *                 return dict.get(self, key_)             # <<<<<<<<<<<<<<
@@ -10959,16 +14044,16 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
         PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "get", "dict");
-        __PYX_ERR(0, 714, __pyx_L1_error)
+        __PYX_ERR(0, 906, __pyx_L1_error)
       }
-      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 714, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 906, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_r = __pyx_t_7;
       __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":713
+      /* "adios.pyx":905
  *                 key_ = key_[1:]
  * 
  *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -10977,28 +14062,28 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
     }
 
-    /* "adios.pyx":716
+    /* "adios.pyx":908
  *                 return dict.get(self, key_)
  * 
  *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
  *                 return dict.get(self, '/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 908, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
       PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "keys", "dict");
-      __PYX_ERR(0, 716, __pyx_L1_error)
+      __PYX_ERR(0, 908, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 716, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 908, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 716, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 908, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":717
+      /* "adios.pyx":909
  * 
  *             if '/'+key_ in dict.keys(self):
  *                 return dict.get(self, '/'+key_)             # <<<<<<<<<<<<<<
@@ -11008,11 +14093,11 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
         PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "get", "dict");
-        __PYX_ERR(0, 717, __pyx_L1_error)
+        __PYX_ERR(0, 909, __pyx_L1_error)
       }
-      __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 717, __pyx_L1_error)
+      __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 909, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_t_3, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 717, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_t_3, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 909, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
@@ -11020,7 +14105,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":716
+      /* "adios.pyx":908
  *                 return dict.get(self, key_)
  * 
  *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -11029,7 +14114,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
  */
     }
 
-    /* "adios.pyx":706
+    /* "adios.pyx":898
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -11039,27 +14124,27 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":719
+  /* "adios.pyx":911
  *                 return dict.get(self, '/'+key_)
  * 
  *         raise KeyError(key_)             # <<<<<<<<<<<<<<
  * 
  * ## Python class for ADIOS_FILE structure
  */
-  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 719, __pyx_L1_error) }
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 719, __pyx_L1_error)
+  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 911, __pyx_L1_error) }
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 911, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_key_);
   __Pyx_GIVEREF(__pyx_v_key_);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key_);
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 719, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 911, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_Raise(__pyx_t_7, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __PYX_ERR(0, 719, __pyx_L1_error)
+  __PYX_ERR(0, 911, __pyx_L1_error)
 
-  /* "adios.pyx":699
+  /* "adios.pyx":891
  * ## dict for handling '/' prefix
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -11082,7 +14167,7 @@ static PyObject *__pyx_pf_5adios_8softdict___getitem__(struct __pyx_obj_5adios_s
   return __pyx_r;
 }
 
-/* "adios.pyx":760
+/* "adios.pyx":952
  *     property name:
  *         """ The filename (or stream name) associated with. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11108,7 +14193,7 @@ static PyObject *__pyx_pf_5adios_4file_4name___get__(struct __pyx_obj_5adios_fil
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":761
+  /* "adios.pyx":953
  *         """ The filename (or stream name) associated with. """
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -11120,7 +14205,7 @@ static PyObject *__pyx_pf_5adios_4file_4name___get__(struct __pyx_obj_5adios_fil
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios.pyx":760
+  /* "adios.pyx":952
  *     property name:
  *         """ The filename (or stream name) associated with. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11135,7 +14220,7 @@ static PyObject *__pyx_pf_5adios_4file_4name___get__(struct __pyx_obj_5adios_fil
   return __pyx_r;
 }
 
-/* "adios.pyx":765
+/* "adios.pyx":957
  *     property nvars:
  *         """ The number of variables. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11162,7 +14247,7 @@ static PyObject *__pyx_pf_5adios_4file_5nvars___get__(struct __pyx_obj_5adios_fi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":766
+  /* "adios.pyx":958
  *         """ The number of variables. """
  *         def __get__(self):
  *             return self.nvars             # <<<<<<<<<<<<<<
@@ -11170,13 +14255,13 @@ static PyObject *__pyx_pf_5adios_4file_5nvars___get__(struct __pyx_obj_5adios_fi
  *     property nattrs:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 958, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":765
+  /* "adios.pyx":957
  *     property nvars:
  *         """ The number of variables. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11195,7 +14280,7 @@ static PyObject *__pyx_pf_5adios_4file_5nvars___get__(struct __pyx_obj_5adios_fi
   return __pyx_r;
 }
 
-/* "adios.pyx":770
+/* "adios.pyx":962
  *     property nattrs:
  *         """ The number of attributes. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11222,7 +14307,7 @@ static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_f
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":771
+  /* "adios.pyx":963
  *         """ The number of attributes. """
  *         def __get__(self):
  *             return self.nattrs             # <<<<<<<<<<<<<<
@@ -11230,13 +14315,13 @@ static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_f
  *     property current_step:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":770
+  /* "adios.pyx":962
  *     property nattrs:
  *         """ The number of attributes. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11255,7 +14340,7 @@ static PyObject *__pyx_pf_5adios_4file_6nattrs___get__(struct __pyx_obj_5adios_f
   return __pyx_r;
 }
 
-/* "adios.pyx":775
+/* "adios.pyx":967
  *     property current_step:
  *         """ The current timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11282,7 +14367,7 @@ static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":776
+  /* "adios.pyx":968
  *         """ The current timestep index. """
  *         def __get__(self):
  *             return self.current_step             # <<<<<<<<<<<<<<
@@ -11290,13 +14375,13 @@ static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5
  *     property last_step:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 776, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 968, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":775
+  /* "adios.pyx":967
  *     property current_step:
  *         """ The current timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11315,7 +14400,7 @@ static PyObject *__pyx_pf_5adios_4file_12current_step___get__(struct __pyx_obj_5
   return __pyx_r;
 }
 
-/* "adios.pyx":780
+/* "adios.pyx":972
  *     property last_step:
  *         """ The last timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11342,7 +14427,7 @@ static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adio
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":781
+  /* "adios.pyx":973
  *         """ The last timestep index. """
  *         def __get__(self):
  *             return self.last_step             # <<<<<<<<<<<<<<
@@ -11350,13 +14435,13 @@ static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adio
  *     property endianness:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":780
+  /* "adios.pyx":972
  *     property last_step:
  *         """ The last timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11375,7 +14460,7 @@ static PyObject *__pyx_pf_5adios_4file_9last_step___get__(struct __pyx_obj_5adio
   return __pyx_r;
 }
 
-/* "adios.pyx":785
+/* "adios.pyx":977
  *     property endianness:
  *         """ The endianness of the stored data. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11402,7 +14487,7 @@ static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5ad
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":786
+  /* "adios.pyx":978
  *         """ The endianness of the stored data. """
  *         def __get__(self):
  *             return self.endianness             # <<<<<<<<<<<<<<
@@ -11410,13 +14495,13 @@ static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5ad
  *     property version:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 978, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":785
+  /* "adios.pyx":977
  *     property endianness:
  *         """ The endianness of the stored data. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11435,7 +14520,7 @@ static PyObject *__pyx_pf_5adios_4file_10endianness___get__(struct __pyx_obj_5ad
   return __pyx_r;
 }
 
-/* "adios.pyx":790
+/* "adios.pyx":982
  *     property version:
  *         """ The version of Adios. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11462,7 +14547,7 @@ static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":791
+  /* "adios.pyx":983
  *         """ The version of Adios. """
  *         def __get__(self):
  *             return self.version             # <<<<<<<<<<<<<<
@@ -11470,13 +14555,13 @@ static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_
  *     property file_size:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 983, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":790
+  /* "adios.pyx":982
  *     property version:
  *         """ The version of Adios. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11495,7 +14580,7 @@ static PyObject *__pyx_pf_5adios_4file_7version___get__(struct __pyx_obj_5adios_
   return __pyx_r;
 }
 
-/* "adios.pyx":795
+/* "adios.pyx":987
  *     property file_size:
  *         """ The size of Adios file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11522,7 +14607,7 @@ static PyObject *__pyx_pf_5adios_4file_9file_size___get__(struct __pyx_obj_5adio
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":796
+  /* "adios.pyx":988
  *         """ The size of Adios file. """
  *         def __get__(self):
  *             return self.file_size             # <<<<<<<<<<<<<<
@@ -11530,13 +14615,13 @@ static PyObject *__pyx_pf_5adios_4file_9file_size___get__(struct __pyx_obj_5adio
  *     property is_stream:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":795
+  /* "adios.pyx":987
  *     property file_size:
  *         """ The size of Adios file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11555,7 +14640,7 @@ static PyObject *__pyx_pf_5adios_4file_9file_size___get__(struct __pyx_obj_5adio
   return __pyx_r;
 }
 
-/* "adios.pyx":800
+/* "adios.pyx":992
  *     property is_stream:
  *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11582,7 +14667,7 @@ static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adio
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":801
+  /* "adios.pyx":993
  *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):
  *             return self.is_stream             # <<<<<<<<<<<<<<
@@ -11590,13 +14675,13 @@ static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adio
  *     def __init__(self, str fname,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":800
+  /* "adios.pyx":992
  *     property is_stream:
  *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11615,7 +14700,7 @@ static PyObject *__pyx_pf_5adios_4file_9is_stream___get__(struct __pyx_obj_5adio
   return __pyx_r;
 }
 
-/* "adios.pyx":803
+/* "adios.pyx":995
  *             return self.is_stream
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
@@ -11640,7 +14725,7 @@ static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__p
     PyObject* values[6] = {0,0,0,0,0,0};
     values[1] = ((PyObject*)__pyx_n_s_BP);
 
-    /* "adios.pyx":806
+    /* "adios.pyx":998
  *                  str method_name = "BP",
  *                  MPI_Comm comm = MPI_COMM_WORLD,
  *                  is_stream = False,             # <<<<<<<<<<<<<<
@@ -11693,7 +14778,7 @@ static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 803, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 995, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -11710,35 +14795,35 @@ static int __pyx_pw_5adios_4file_1__init__(PyObject *__pyx_v_self, PyObject *__p
     __pyx_v_fname = ((PyObject*)values[0]);
     __pyx_v_method_name = ((PyObject*)values[1]);
     if (values[2]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[2]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 805, __pyx_L3_error)
+      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[2]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 997, __pyx_L3_error)
     } else {
-      __pyx_v_comm = __pyx_k__15;
+      __pyx_v_comm = __pyx_k__16;
     }
     __pyx_v_is_stream = values[3];
     if (values[4]) {
-      __pyx_v_lock_mode = ((ADIOS_LOCKMODE)__Pyx_PyInt_As_ADIOS_LOCKMODE(values[4])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 807, __pyx_L3_error)
+      __pyx_v_lock_mode = ((ADIOS_LOCKMODE)__Pyx_PyInt_As_ADIOS_LOCKMODE(values[4])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 999, __pyx_L3_error)
     } else {
-      __pyx_v_lock_mode = __pyx_k__16;
+      __pyx_v_lock_mode = __pyx_k__17;
     }
     if (values[5]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 808, __pyx_L3_error)
+      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1000, __pyx_L3_error)
     } else {
       __pyx_v_timeout_sec = ((float)0.0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 803, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 995, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 803, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 804, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 995, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 996, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_4file___init__(((struct __pyx_obj_5adios_file *)__pyx_v_self), __pyx_v_fname, __pyx_v_method_name, __pyx_v_comm, __pyx_v_is_stream, __pyx_v_lock_mode, __pyx_v_timeout_sec);
 
-  /* "adios.pyx":803
+  /* "adios.pyx":995
  *             return self.is_stream
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
@@ -11774,7 +14859,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":809
+  /* "adios.pyx":1001
  *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
  *                  float timeout_sec = 0.0):
  *         self.fp = NULL             # <<<<<<<<<<<<<<
@@ -11783,14 +14868,14 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
  */
   __pyx_v_self->fp = NULL;
 
-  /* "adios.pyx":810
+  /* "adios.pyx":1002
  *                  float timeout_sec = 0.0):
  *         self.fp = NULL
  *         self.vars = softdict()             # <<<<<<<<<<<<<<
  *         self.attrs = softdict()
  *         self.is_stream = is_stream
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 810, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1002, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->vars);
@@ -11798,14 +14883,14 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":811
+  /* "adios.pyx":1003
  *         self.fp = NULL
  *         self.vars = softdict()
  *         self.attrs = softdict()             # <<<<<<<<<<<<<<
  *         self.is_stream = is_stream
  *         cdef method = str2adiosreadmethod(method_name)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 811, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1003, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -11813,51 +14898,51 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":812
+  /* "adios.pyx":1004
  *         self.vars = softdict()
  *         self.attrs = softdict()
  *         self.is_stream = is_stream             # <<<<<<<<<<<<<<
  *         cdef method = str2adiosreadmethod(method_name)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 812, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1004, __pyx_L1_error)
   __pyx_v_self->is_stream = __pyx_t_2;
 
-  /* "adios.pyx":813
+  /* "adios.pyx":1005
  *         self.attrs = softdict()
  *         self.is_stream = is_stream
  *         cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  * 
  *         if (is_stream):
  */
-  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_5adios_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 813, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_5adios_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1005, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":815
+  /* "adios.pyx":1007
  *         cdef method = str2adiosreadmethod(method_name)
  * 
  *         if (is_stream):             # <<<<<<<<<<<<<<
  *             self.fp = adios_read_open(s2b(fname), method, comm,
  *                                       lock_mode, timeout_sec)
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 815, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1007, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "adios.pyx":816
+    /* "adios.pyx":1008
  * 
  *         if (is_stream):
  *             self.fp = adios_read_open(s2b(fname), method, comm,             # <<<<<<<<<<<<<<
  *                                       lock_mode, timeout_sec)
  *         else:
  */
-    __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1008, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 816, __pyx_L1_error)
-    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 816, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1008, __pyx_L1_error)
+    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1008, __pyx_L1_error)
 
-    /* "adios.pyx":817
+    /* "adios.pyx":1009
  *         if (is_stream):
  *             self.fp = adios_read_open(s2b(fname), method, comm,
  *                                       lock_mode, timeout_sec)             # <<<<<<<<<<<<<<
@@ -11867,7 +14952,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
     __pyx_v_self->fp = adios_read_open(__pyx_t_3, __pyx_t_4, __pyx_v_comm, __pyx_v_lock_mode, __pyx_v_timeout_sec);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":815
+    /* "adios.pyx":1007
  *         cdef method = str2adiosreadmethod(method_name)
  * 
  *         if (is_stream):             # <<<<<<<<<<<<<<
@@ -11877,7 +14962,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":819
+  /* "adios.pyx":1011
  *                                       lock_mode, timeout_sec)
  *         else:
  *             self.fp = adios_read_open_file(s2b(fname), method, comm)             # <<<<<<<<<<<<<<
@@ -11885,16 +14970,16 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
  *         assert self.fp != NULL, 'Not an open file'
  */
   /*else*/ {
-    __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 819, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 819, __pyx_L1_error)
-    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 819, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1011, __pyx_L1_error)
+    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1011, __pyx_L1_error)
     __pyx_v_self->fp = adios_read_open_file(__pyx_t_5, __pyx_t_4, __pyx_v_comm);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __pyx_L3:;
 
-  /* "adios.pyx":821
+  /* "adios.pyx":1013
  *             self.fp = adios_read_open_file(s2b(fname), method, comm)
  * 
  *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -11905,34 +14990,34 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 821, __pyx_L1_error)
+      __PYX_ERR(0, 1013, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":823
+  /* "adios.pyx":1015
  *         assert self.fp != NULL, 'Not an open file'
  * 
  *         self.name = fname.split('/')[-1]  ## basename             # <<<<<<<<<<<<<<
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 823, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1015, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 823, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1015, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->name);
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":824
+  /* "adios.pyx":1016
  * 
  *         self.name = fname.split('/')[-1]  ## basename
  *         self.nvars = self.fp.nvars             # <<<<<<<<<<<<<<
@@ -11942,7 +15027,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_7 = __pyx_v_self->fp->nvars;
   __pyx_v_self->nvars = __pyx_t_7;
 
-  /* "adios.pyx":825
+  /* "adios.pyx":1017
  *         self.name = fname.split('/')[-1]  ## basename
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs             # <<<<<<<<<<<<<<
@@ -11952,7 +15037,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_7 = __pyx_v_self->fp->nattrs;
   __pyx_v_self->nattrs = __pyx_t_7;
 
-  /* "adios.pyx":826
+  /* "adios.pyx":1018
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs
  *         self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
@@ -11962,7 +15047,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_7 = __pyx_v_self->fp->current_step;
   __pyx_v_self->current_step = __pyx_t_7;
 
-  /* "adios.pyx":827
+  /* "adios.pyx":1019
  *         self.nattrs = self.fp.nattrs
  *         self.current_step = self.fp.current_step
  *         self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
@@ -11972,7 +15057,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_7 = __pyx_v_self->fp->last_step;
   __pyx_v_self->last_step = __pyx_t_7;
 
-  /* "adios.pyx":828
+  /* "adios.pyx":1020
  *         self.current_step = self.fp.current_step
  *         self.last_step = self.fp.last_step
  *         self.endianness = self.fp.endianness             # <<<<<<<<<<<<<<
@@ -11982,7 +15067,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_7 = __pyx_v_self->fp->endianness;
   __pyx_v_self->endianness = __pyx_t_7;
 
-  /* "adios.pyx":829
+  /* "adios.pyx":1021
  *         self.last_step = self.fp.last_step
  *         self.endianness = self.fp.endianness
  *         self.version = self.fp.version             # <<<<<<<<<<<<<<
@@ -11992,7 +15077,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_7 = __pyx_v_self->fp->version;
   __pyx_v_self->version = __pyx_t_7;
 
-  /* "adios.pyx":830
+  /* "adios.pyx":1022
  *         self.endianness = self.fp.endianness
  *         self.version = self.fp.version
  *         self.file_size = self.fp.file_size             # <<<<<<<<<<<<<<
@@ -12002,21 +15087,21 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_t_8 = __pyx_v_self->fp->file_size;
   __pyx_v_self->file_size = __pyx_t_8;
 
-  /* "adios.pyx":832
+  /* "adios.pyx":1024
  *         self.file_size = self.fp.file_size
  * 
  *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
  *             self.attrs[b2s(name)] = attr(self, b2s(name))
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __pyx_v_self->nattrs;
   for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_7; __pyx_t_9+=1) {
     __pyx_v_i = __pyx_t_9;
-    __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 832, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 832, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
@@ -12024,25 +15109,25 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   for (;;) {
     if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 832, __pyx_L1_error)
+    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1024, __pyx_L1_error)
     #else
-    __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
+    __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":833
+    /* "adios.pyx":1025
  * 
  *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
  *             self.attrs[b2s(name)] = attr(self, b2s(name))             # <<<<<<<<<<<<<<
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
  */
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 833, __pyx_L1_error)
-    __pyx_t_1 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1025, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1025, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 833, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1025, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -12050,17 +15135,17 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attr), __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attr), __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1025, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 833, __pyx_L1_error)
-    __pyx_t_11 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 833, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1025, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1025, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
-    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_11, __pyx_t_1) < 0)) __PYX_ERR(0, 833, __pyx_L1_error)
+    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_11, __pyx_t_1) < 0)) __PYX_ERR(0, 1025, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":832
+    /* "adios.pyx":1024
  *         self.file_size = self.fp.file_size
  * 
  *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
@@ -12070,21 +15155,21 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios.pyx":835
+  /* "adios.pyx":1027
  *             self.attrs[b2s(name)] = attr(self, b2s(name))
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
  *             self.vars[b2s(name)] = var(self, b2s(name))
  * 
  */
-  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __pyx_L1_error)
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1027, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = __pyx_v_self->nvars;
   for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_7; __pyx_t_9+=1) {
     __pyx_v_i = __pyx_t_9;
-    __pyx_t_1 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 835, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
@@ -12092,25 +15177,25 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   for (;;) {
     if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 835, __pyx_L1_error)
+    __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1027, __pyx_L1_error)
     #else
-    __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __pyx_L1_error)
+    __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "adios.pyx":836
+    /* "adios.pyx":1028
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
  *             self.vars[b2s(name)] = var(self, b2s(name))             # <<<<<<<<<<<<<<
  * 
  *         self.var = self.vars
  */
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 836, __pyx_L1_error)
-    __pyx_t_6 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 836, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1028, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 836, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1028, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -12118,17 +15203,17 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
     __Pyx_GIVEREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_var), __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 836, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_var), __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1028, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 836, __pyx_L1_error)
-    __pyx_t_11 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 836, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1028, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_5adios_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1028, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
-    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_11, __pyx_t_6) < 0)) __PYX_ERR(0, 836, __pyx_L1_error)
+    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_11, __pyx_t_6) < 0)) __PYX_ERR(0, 1028, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "adios.pyx":835
+    /* "adios.pyx":1027
  *             self.attrs[b2s(name)] = attr(self, b2s(name))
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
@@ -12138,7 +15223,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":838
+  /* "adios.pyx":1030
  *             self.vars[b2s(name)] = var(self, b2s(name))
  * 
  *         self.var = self.vars             # <<<<<<<<<<<<<<
@@ -12153,7 +15238,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_v_self->var = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":839
+  /* "adios.pyx":1031
  * 
  *         self.var = self.vars
  *         self.attr = self.attrs             # <<<<<<<<<<<<<<
@@ -12168,7 +15253,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   __pyx_v_self->attr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":803
+  /* "adios.pyx":995
  *             return self.is_stream
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
@@ -12192,7 +15277,7 @@ static int __pyx_pf_5adios_4file___init__(struct __pyx_obj_5adios_file *__pyx_v_
   return __pyx_r;
 }
 
-/* "adios.pyx":841
+/* "adios.pyx":1033
  *         self.attr = self.attrs
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -12220,18 +15305,18 @@ static PyObject *__pyx_pf_5adios_4file_2__del__(struct __pyx_obj_5adios_file *__
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__del__", 0);
 
-  /* "adios.pyx":843
+  /* "adios.pyx":1035
  *     def __del__(self):
  *         """ Close file on destruction. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     def __enter__(self):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":841
+  /* "adios.pyx":1033
  *         self.attr = self.attrs
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -12252,17 +15337,17 @@ static PyObject *__pyx_pf_5adios_4file_2__del__(struct __pyx_obj_5adios_file *__
   return __pyx_r;
 }
 
-/* "adios.pyx":845
+/* "adios.pyx":1037
  *         self.close()
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_5adios_4file_5__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_4file_4__enter__[] = "file.__enter__(self)\n Enter for with statemetn ";
+static char __pyx_doc_5adios_4file_4__enter__[] = "file.__enter__(self)\n Enter for with statement ";
 static PyObject *__pyx_pw_5adios_4file_5__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -12279,9 +15364,9 @@ static PyObject *__pyx_pf_5adios_4file_4__enter__(struct __pyx_obj_5adios_file *
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "adios.pyx":847
+  /* "adios.pyx":1039
  *     def __enter__(self):
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self             # <<<<<<<<<<<<<<
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):
@@ -12291,11 +15376,11 @@ static PyObject *__pyx_pf_5adios_4file_4__enter__(struct __pyx_obj_5adios_file *
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "adios.pyx":845
+  /* "adios.pyx":1037
  *         self.close()
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
@@ -12306,7 +15391,7 @@ static PyObject *__pyx_pf_5adios_4file_4__enter__(struct __pyx_obj_5adios_file *
   return __pyx_r;
 }
 
-/* "adios.pyx":849
+/* "adios.pyx":1041
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -12345,16 +15430,16 @@ static PyObject *__pyx_pw_5adios_4file_7__exit__(PyObject *__pyx_v_self, PyObjec
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 849, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 1041, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 849, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 1041, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 849, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 1041, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -12369,7 +15454,7 @@ static PyObject *__pyx_pw_5adios_4file_7__exit__(PyObject *__pyx_v_self, PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 849, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1041, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.file.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12388,18 +15473,18 @@ static PyObject *__pyx_pf_5adios_4file_6__exit__(struct __pyx_obj_5adios_file *_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "adios.pyx":851
+  /* "adios.pyx":1043
  *     def __exit__(self, exception_type, exception_value, traceback):
  *         """ Close file on exit. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     cpdef close(self):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 851, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1043, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":849
+  /* "adios.pyx":1041
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -12420,7 +15505,7 @@ static PyObject *__pyx_pf_5adios_4file_6__exit__(struct __pyx_obj_5adios_file *_
   return __pyx_r;
 }
 
-/* "adios.pyx":853
+/* "adios.pyx":1045
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -12441,7 +15526,7 @@ static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 853, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_9close)) {
       __Pyx_XDECREF(__pyx_r);
@@ -12457,10 +15542,10 @@ static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 853, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 853, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12472,7 +15557,7 @@ static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":855
+  /* "adios.pyx":1047
  *     cpdef close(self):
  *         """ Close the open file. """
  *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -12483,12 +15568,12 @@ static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 855, __pyx_L1_error)
+      __PYX_ERR(0, 1047, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":856
+  /* "adios.pyx":1048
  *         """ Close the open file. """
  *         assert self.fp != NULL, 'Not an open file'
  *         adios_read_close(self.fp)             # <<<<<<<<<<<<<<
@@ -12497,7 +15582,7 @@ static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_
  */
   adios_read_close(__pyx_v_self->fp);
 
-  /* "adios.pyx":857
+  /* "adios.pyx":1049
  *         assert self.fp != NULL, 'Not an open file'
  *         adios_read_close(self.fp)
  *         self.fp = NULL             # <<<<<<<<<<<<<<
@@ -12506,7 +15591,7 @@ static PyObject *__pyx_f_5adios_4file_close(struct __pyx_obj_5adios_file *__pyx_
  */
   __pyx_v_self->fp = NULL;
 
-  /* "adios.pyx":853
+  /* "adios.pyx":1045
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -12550,7 +15635,7 @@ static PyObject *__pyx_pf_5adios_4file_8close(struct __pyx_obj_5adios_file *__py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_4file_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 853, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_4file_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -12567,7 +15652,7 @@ static PyObject *__pyx_pf_5adios_4file_8close(struct __pyx_obj_5adios_file *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":859
+/* "adios.pyx":1051
  *         self.fp = NULL
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -12588,7 +15673,7 @@ static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 859, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_11printself)) {
       __Pyx_XDECREF(__pyx_r);
@@ -12604,10 +15689,10 @@ static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1051, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1051, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12619,7 +15704,7 @@ static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":861
+  /* "adios.pyx":1053
  *     cpdef printself(self):
  *         """ Print native ADIOS_FILE structure. """
  *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -12630,32 +15715,32 @@ static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 861, __pyx_L1_error)
+      __PYX_ERR(0, 1053, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":862
+  /* "adios.pyx":1054
  *         """ Print native ADIOS_FILE structure. """
  *         assert self.fp != NULL, 'Not an open file'
  *         print ('=== AdiosFile ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  *         printfile(self.fp)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":863
+  /* "adios.pyx":1055
  *         assert self.fp != NULL, 'Not an open file'
  *         print ('=== AdiosFile ===')
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))             # <<<<<<<<<<<<<<
  *         printfile(self.fp)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fp);
   __Pyx_GIVEREF(__pyx_n_s_fp);
@@ -12663,31 +15748,31 @@ static PyObject *__pyx_f_5adios_4file_printself(struct __pyx_obj_5adios_file *__
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":864
+  /* "adios.pyx":1056
  *         print ('=== AdiosFile ===')
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  *         printfile(self.fp)             # <<<<<<<<<<<<<<
  * 
  *     cpdef release_step(self):
  */
-  __pyx_t_1 = __pyx_f_5adios_printfile(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 864, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_printfile(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":859
+  /* "adios.pyx":1051
  *         self.fp = NULL
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -12731,7 +15816,7 @@ static PyObject *__pyx_pf_5adios_4file_10printself(struct __pyx_obj_5adios_file
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("printself", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_4file_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 859, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_4file_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -12748,7 +15833,7 @@ static PyObject *__pyx_pf_5adios_4file_10printself(struct __pyx_obj_5adios_file
   return __pyx_r;
 }
 
-/* "adios.pyx":866
+/* "adios.pyx":1058
  *         printfile(self.fp)
  * 
  *     cpdef release_step(self):             # <<<<<<<<<<<<<<
@@ -12769,7 +15854,7 @@ static PyObject *__pyx_f_5adios_4file_release_step(struct __pyx_obj_5adios_file
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_release_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_release_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1058, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_13release_step)) {
       __Pyx_XDECREF(__pyx_r);
@@ -12785,10 +15870,10 @@ static PyObject *__pyx_f_5adios_4file_release_step(struct __pyx_obj_5adios_file
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 866, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1058, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 866, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1058, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12800,7 +15885,7 @@ static PyObject *__pyx_f_5adios_4file_release_step(struct __pyx_obj_5adios_file
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":868
+  /* "adios.pyx":1060
  *     cpdef release_step(self):
  *         """ Release the current step lock and let the writer code to progress """
  *         adios_release_step(self.fp)             # <<<<<<<<<<<<<<
@@ -12809,7 +15894,7 @@ static PyObject *__pyx_f_5adios_4file_release_step(struct __pyx_obj_5adios_file
  */
   adios_release_step(__pyx_v_self->fp);
 
-  /* "adios.pyx":866
+  /* "adios.pyx":1058
  *         printfile(self.fp)
  * 
  *     cpdef release_step(self):             # <<<<<<<<<<<<<<
@@ -12853,7 +15938,7 @@ static PyObject *__pyx_pf_5adios_4file_12release_step(struct __pyx_obj_5adios_fi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("release_step", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_4file_release_step(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_4file_release_step(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1058, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -12870,7 +15955,7 @@ static PyObject *__pyx_pf_5adios_4file_12release_step(struct __pyx_obj_5adios_fi
   return __pyx_r;
 }
 
-/* "adios.pyx":870
+/* "adios.pyx":1062
  *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
@@ -12910,13 +15995,13 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 870, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1062, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_4file_15advance)) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_last); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 870, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_last); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1062, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_timeout_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 870, __pyx_L1_error)
+      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_timeout_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1062, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
@@ -12931,7 +16016,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
           __pyx_t_7 = 1;
         }
       }
-      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 870, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1062, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       if (__pyx_t_6) {
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -12942,7 +16027,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
       PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
       __pyx_t_3 = 0;
       __pyx_t_4 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 870, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1062, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -12954,7 +16039,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":881
+  /* "adios.pyx":1073
  *             int: 0 if successful, non-zero otherwise.
  *         """
  *         val = adios_advance_step(self.fp, last, timeout_sec)             # <<<<<<<<<<<<<<
@@ -12963,7 +16048,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
  */
   __pyx_v_val = adios_advance_step(__pyx_v_self->fp, __pyx_v_last, __pyx_v_timeout_sec);
 
-  /* "adios.pyx":882
+  /* "adios.pyx":1074
  *         """
  *         val = adios_advance_step(self.fp, last, timeout_sec)
  *         if (val >= 0):             # <<<<<<<<<<<<<<
@@ -12973,7 +16058,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
   __pyx_t_9 = ((__pyx_v_val >= 0) != 0);
   if (__pyx_t_9) {
 
-    /* "adios.pyx":883
+    /* "adios.pyx":1075
  *         val = adios_advance_step(self.fp, last, timeout_sec)
  *         if (val >= 0):
  *             self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
@@ -12983,7 +16068,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
     __pyx_t_10 = __pyx_v_self->fp->current_step;
     __pyx_v_self->current_step = __pyx_t_10;
 
-    /* "adios.pyx":884
+    /* "adios.pyx":1076
  *         if (val >= 0):
  *             self.current_step = self.fp.current_step
  *             self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
@@ -12993,14 +16078,14 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
     __pyx_t_10 = __pyx_v_self->fp->last_step;
     __pyx_v_self->last_step = __pyx_t_10;
 
-    /* "adios.pyx":886
+    /* "adios.pyx":1078
  *             self.last_step = self.fp.last_step
  * 
  *             for v in self.vars.values():             # <<<<<<<<<<<<<<
  *                 v.advance()
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1078, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -13013,10 +16098,10 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -13024,9 +16109,9 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
       __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
       __pyx_t_11 = NULL;
     } else {
-      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error)
+      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1078, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 886, __pyx_L1_error)
+      __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1078, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     for (;;) {
@@ -13034,17 +16119,17 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
         if (likely(PyList_CheckExact(__pyx_t_2))) {
           if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 886, __pyx_L1_error)
+          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1078, __pyx_L1_error)
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           #endif
         } else {
           if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 886, __pyx_L1_error)
+          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1078, __pyx_L1_error)
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           #endif
         }
@@ -13054,7 +16139,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 886, __pyx_L1_error)
+            else __PYX_ERR(0, 1078, __pyx_L1_error)
           }
           break;
         }
@@ -13063,14 +16148,14 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
       __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "adios.pyx":887
+      /* "adios.pyx":1079
  * 
  *             for v in self.vars.values():
  *                 v.advance()             # <<<<<<<<<<<<<<
  * 
  *         return val
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_advance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 887, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_advance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1079, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -13083,16 +16168,16 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
         }
       }
       if (__pyx_t_8) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios.pyx":886
+      /* "adios.pyx":1078
  *             self.last_step = self.fp.last_step
  * 
  *             for v in self.vars.values():             # <<<<<<<<<<<<<<
@@ -13102,7 +16187,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios.pyx":882
+    /* "adios.pyx":1074
  *         """
  *         val = adios_advance_step(self.fp, last, timeout_sec)
  *         if (val >= 0):             # <<<<<<<<<<<<<<
@@ -13111,7 +16196,7 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
  */
   }
 
-  /* "adios.pyx":889
+  /* "adios.pyx":1081
  *                 v.advance()
  * 
  *         return val             # <<<<<<<<<<<<<<
@@ -13119,13 +16204,13 @@ static PyObject *__pyx_f_5adios_4file_advance(struct __pyx_obj_5adios_file *__py
  *     def __getitem__(self, varname):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 889, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1081, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":870
+  /* "adios.pyx":1062
  *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
@@ -13186,7 +16271,7 @@ static PyObject *__pyx_pw_5adios_4file_15advance(PyObject *__pyx_v_self, PyObjec
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) __PYX_ERR(0, 870, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) __PYX_ERR(0, 1062, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -13197,19 +16282,19 @@ static PyObject *__pyx_pw_5adios_4file_15advance(PyObject *__pyx_v_self, PyObjec
       }
     }
     if (values[0]) {
-      __pyx_v_last = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_last == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L3_error)
+      __pyx_v_last = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_last == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1062, __pyx_L3_error)
     } else {
       __pyx_v_last = ((int)0);
     }
     if (values[1]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 870, __pyx_L3_error)
+      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1062, __pyx_L3_error)
     } else {
       __pyx_v_timeout_sec = ((float)0.0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("advance", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 870, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("advance", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1062, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13232,7 +16317,7 @@ static PyObject *__pyx_pf_5adios_4file_14advance(struct __pyx_obj_5adios_file *_
   __pyx_t_2.__pyx_n = 2;
   __pyx_t_2.last = __pyx_v_last;
   __pyx_t_2.timeout_sec = __pyx_v_timeout_sec;
-  __pyx_t_1 = __pyx_vtabptr_5adios_file->advance(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 870, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_5adios_file->advance(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1062, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -13249,7 +16334,7 @@ static PyObject *__pyx_pf_5adios_4file_14advance(struct __pyx_obj_5adios_file *_
   return __pyx_r;
 }
 
-/* "adios.pyx":891
+/* "adios.pyx":1083
  *         return val
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -13295,7 +16380,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios.pyx":902
+  /* "adios.pyx":1094
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -13306,14 +16391,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":903
+    /* "adios.pyx":1095
  *         """
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1095, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -13321,7 +16406,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":902
+    /* "adios.pyx":1094
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -13330,37 +16415,37 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
   }
 
-  /* "adios.pyx":905
+  /* "adios.pyx":1097
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 905, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1097, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":906
+    /* "adios.pyx":1098
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 906, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1098, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 906, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1098, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 906, __pyx_L1_error)
+    __PYX_ERR(0, 1098, __pyx_L1_error)
 
-    /* "adios.pyx":905
+    /* "adios.pyx":1097
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -13369,7 +16454,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
   }
 
-  /* "adios.pyx":908
+  /* "adios.pyx":1100
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -13380,26 +16465,26 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 908, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1100, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 908, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1100, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 908, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1100, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 908, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1100, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 908, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1100, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 908, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1100, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -13409,7 +16494,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 908, __pyx_L1_error)
+          else __PYX_ERR(0, 1100, __pyx_L1_error)
         }
         break;
       }
@@ -13418,7 +16503,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":909
+    /* "adios.pyx":1101
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -13429,20 +16514,20 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":910
+      /* "adios.pyx":1102
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 910, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1102, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 910, __pyx_L1_error)
+      __PYX_ERR(0, 1102, __pyx_L1_error)
 
-      /* "adios.pyx":909
+      /* "adios.pyx":1101
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -13451,35 +16536,35 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
     }
 
-    /* "adios.pyx":912
+    /* "adios.pyx":1104
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 912, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1104, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 912, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1104, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 912, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1104, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios.pyx":913
+      /* "adios.pyx":1105
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__21, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 913, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__22, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1105, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":912
+      /* "adios.pyx":1104
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -13488,14 +16573,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
     }
 
-    /* "adios.pyx":915
+    /* "adios.pyx":1107
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1107, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13508,19 +16593,19 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 915, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1107, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 915, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1107, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 915, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1107, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":916
+      /* "adios.pyx":1108
  * 
  *             if key_ in self.vars.keys():
  *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
@@ -13528,7 +16613,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  *             if key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 916, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1108, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13541,16 +16626,16 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 916, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1108, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 916, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1108, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 916, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1108, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -13560,7 +16645,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":915
+      /* "adios.pyx":1107
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -13569,14 +16654,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
     }
 
-    /* "adios.pyx":918
+    /* "adios.pyx":1110
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1110, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13589,19 +16674,19 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 918, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1110, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 918, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1110, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 918, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1110, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":919
+      /* "adios.pyx":1111
  * 
  *             if key_ in self.attrs.keys():
  *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
@@ -13609,7 +16694,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  *             if '/'+key_ in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 919, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1111, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13622,16 +16707,16 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 919, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1111, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 919, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1111, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 919, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1111, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
@@ -13641,7 +16726,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":918
+      /* "adios.pyx":1110
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -13650,16 +16735,16 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
     }
 
-    /* "adios.pyx":921
+    /* "adios.pyx":1113
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get('/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 921, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -13672,20 +16757,20 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 921, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1113, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":922
+      /* "adios.pyx":1114
  * 
  *             if '/'+key_ in self.vars.keys():
  *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -13693,9 +16778,9 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  *             if '/'+key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 922, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1114, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 922, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1114, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -13708,17 +16793,17 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1114, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 922, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1114, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1114, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
@@ -13728,7 +16813,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":921
+      /* "adios.pyx":1113
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -13737,16 +16822,16 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
     }
 
-    /* "adios.pyx":924
+    /* "adios.pyx":1116
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get('/'+key_)
  * 
  */
-    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1116, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 924, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1116, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -13759,20 +16844,20 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1116, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1116, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 924, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1116, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":925
+      /* "adios.pyx":1117
  * 
  *             if '/'+key_ in self.attrs.keys():
  *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -13780,9 +16865,9 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  *             for name in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 925, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1117, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 925, __pyx_L1_error)
+      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1117, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13795,17 +16880,17 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1117, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 925, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1117, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
         __pyx_t_10 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1117, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -13815,7 +16900,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":924
+      /* "adios.pyx":1116
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -13824,14 +16909,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
     }
 
-    /* "adios.pyx":927
+    /* "adios.pyx":1119
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 927, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1119, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13844,10 +16929,10 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 927, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1119, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 927, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1119, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13855,9 +16940,9 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 927, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1119, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 927, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1119, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -13865,17 +16950,17 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 927, __pyx_L1_error)
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1119, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 927, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1119, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 927, __pyx_L1_error)
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1119, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 927, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1119, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         }
@@ -13885,7 +16970,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 927, __pyx_L1_error)
+            else __PYX_ERR(0, 1119, __pyx_L1_error)
           }
           break;
         }
@@ -13894,14 +16979,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":929
+      /* "adios.pyx":1121
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self, key_)
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 929, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1121, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -13914,30 +16999,30 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 929, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1121, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L16_bool_binop_done;
       }
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 929, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1121, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 929, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1121, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -13950,28 +17035,28 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 929, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1121, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L16_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios.pyx":930
+        /* "adios.pyx":1122
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self, key_)             # <<<<<<<<<<<<<<
@@ -13979,7 +17064,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  *             for name in self.attrs.keys():
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 930, __pyx_L1_error)
+        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1122, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_INCREF(((PyObject *)__pyx_v_self));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -13987,7 +17072,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_key_);
-        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 930, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1122, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_r = __pyx_t_9;
@@ -13996,7 +17081,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         goto __pyx_L0;
 
-        /* "adios.pyx":929
+        /* "adios.pyx":1121
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -14005,7 +17090,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
       }
 
-      /* "adios.pyx":927
+      /* "adios.pyx":1119
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -14015,14 +17100,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":932
+    /* "adios.pyx":1124
  *                     return group(self, key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 932, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1124, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -14035,10 +17120,10 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       }
     }
     if (__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 932, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1124, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 932, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1124, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -14046,9 +17131,9 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 932, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1124, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 932, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1124, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     for (;;) {
@@ -14056,17 +17141,17 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         if (likely(PyList_CheckExact(__pyx_t_9))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 932, __pyx_L1_error)
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1124, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 932, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1124, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 932, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1124, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 932, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1124, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -14076,7 +17161,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 932, __pyx_L1_error)
+            else __PYX_ERR(0, 1124, __pyx_L1_error)
           }
           break;
         }
@@ -14085,14 +17170,14 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "adios.pyx":934
+      /* "adios.pyx":1126
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self, key_)
  * 
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 934, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1126, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -14105,30 +17190,30 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 934, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1126, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L21_bool_binop_done;
       }
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 934, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1126, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 934, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1126, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -14141,28 +17226,28 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 934, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1126, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L21_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios.pyx":935
+        /* "adios.pyx":1127
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self, key_)             # <<<<<<<<<<<<<<
@@ -14170,7 +17255,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  *         raise KeyError(key_)
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 935, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1127, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_v_self));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -14178,7 +17263,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 935, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1127, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_7;
@@ -14187,7 +17272,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         goto __pyx_L0;
 
-        /* "adios.pyx":934
+        /* "adios.pyx":1126
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -14196,7 +17281,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
  */
       }
 
-      /* "adios.pyx":932
+      /* "adios.pyx":1124
  *                     return group(self, key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -14206,7 +17291,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
     }
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-    /* "adios.pyx":908
+    /* "adios.pyx":1100
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -14216,27 +17301,27 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":937
+  /* "adios.pyx":1129
  *                     return group(self, key_)
  * 
  *         raise KeyError(key_)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 937, __pyx_L1_error) }
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 937, __pyx_L1_error)
+  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 1129, __pyx_L1_error) }
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1129, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_key_);
   __Pyx_GIVEREF(__pyx_v_key_);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key_);
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 937, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1129, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_Raise(__pyx_t_9, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __PYX_ERR(0, 937, __pyx_L1_error)
+  __PYX_ERR(0, 1129, __pyx_L1_error)
 
-  /* "adios.pyx":891
+  /* "adios.pyx":1083
  *         return val
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -14264,7 +17349,7 @@ static PyObject *__pyx_pf_5adios_4file_16__getitem__(struct __pyx_obj_5adios_fil
   return __pyx_r;
 }
 
-/* "adios.pyx":940
+/* "adios.pyx":1132
  * 
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -14303,7 +17388,7 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":942
+  /* "adios.pyx":1134
  *     def __repr__(self):
  *         """ Return string representation. """
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "             # <<<<<<<<<<<<<<
@@ -14312,7 +17397,7 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":944
+  /* "adios.pyx":1136
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \
  *                 (self.fp.path if self.fp != NULL else None,             # <<<<<<<<<<<<<<
@@ -14320,7 +17405,7 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
  *                  self.vars.keys(),
  */
   if (((__pyx_v_self->fp != NULL) != 0)) {
-    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_self->fp->path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_self->fp->path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1136, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -14329,24 +17414,24 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
     __pyx_t_1 = Py_None;
   }
 
-  /* "adios.pyx":945
+  /* "adios.pyx":1137
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \
  *                 (self.fp.path if self.fp != NULL else None,
  *                  self.nvars,             # <<<<<<<<<<<<<<
  *                  self.vars.keys(),
  *                  self.nattrs,
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 945, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":946
+  /* "adios.pyx":1138
  *                 (self.fp.path if self.fp != NULL else None,
  *                  self.nvars,
  *                  self.vars.keys(),             # <<<<<<<<<<<<<<
  *                  self.nattrs,
  *                  self.attrs.keys(),
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 946, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -14359,32 +17444,32 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 946, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":947
+  /* "adios.pyx":1139
  *                  self.nvars,
  *                  self.vars.keys(),
  *                  self.nattrs,             # <<<<<<<<<<<<<<
  *                  self.attrs.keys(),
  *                  self.current_step,
  */
-  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 947, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1139, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
-  /* "adios.pyx":948
+  /* "adios.pyx":1140
  *                  self.vars.keys(),
  *                  self.nattrs,
  *                  self.attrs.keys(),             # <<<<<<<<<<<<<<
  *                  self.current_step,
  *                  self.last_step,
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 948, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1140, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -14397,52 +17482,52 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
     }
   }
   if (__pyx_t_7) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 948, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1140, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 948, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1140, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios.pyx":949
+  /* "adios.pyx":1141
  *                  self.nattrs,
  *                  self.attrs.keys(),
  *                  self.current_step,             # <<<<<<<<<<<<<<
  *                  self.last_step,
  *                  self.file_size)
  */
-  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 949, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
 
-  /* "adios.pyx":950
+  /* "adios.pyx":1142
  *                  self.attrs.keys(),
  *                  self.current_step,
  *                  self.last_step,             # <<<<<<<<<<<<<<
  *                  self.file_size)
  * 
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 950, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1142, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
 
-  /* "adios.pyx":951
+  /* "adios.pyx":1143
  *                  self.current_step,
  *                  self.last_step,
  *                  self.file_size)             # <<<<<<<<<<<<<<
  * 
  *     ## For access var/attr/group as an attribute
  */
-  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 951, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1143, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
 
-  /* "adios.pyx":944
+  /* "adios.pyx":1136
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \
  *                 (self.fp.path if self.fp != NULL else None,             # <<<<<<<<<<<<<<
  *                  self.nvars,
  *                  self.vars.keys(),
  */
-  __pyx_t_9 = PyTuple_New(8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 944, __pyx_L1_error)
+  __pyx_t_9 = PyTuple_New(8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1136, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
@@ -14469,21 +17554,21 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
   __pyx_t_7 = 0;
   __pyx_t_8 = 0;
 
-  /* "adios.pyx":943
+  /* "adios.pyx":1135
  *         """ Return string representation. """
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.fp.path if self.fp != NULL else None,
  *                  self.nvars,
  */
-  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 943, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __pyx_r = __pyx_t_8;
   __pyx_t_8 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":940
+  /* "adios.pyx":1132
  * 
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -14510,7 +17595,7 @@ static PyObject *__pyx_pf_5adios_4file_18__repr__(struct __pyx_obj_5adios_file *
   return __pyx_r;
 }
 
-/* "adios.pyx":954
+/* "adios.pyx":1146
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -14540,7 +17625,7 @@ static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_fil
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios.pyx":955
+  /* "adios.pyx":1147
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):
  *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
@@ -14548,7 +17633,7 @@ static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_fil
  *     ## To support ipython tab completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 955, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1147, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -14561,16 +17646,16 @@ static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_fil
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 955, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 955, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1147, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 955, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -14579,7 +17664,7 @@ static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_fil
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":954
+  /* "adios.pyx":1146
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -14601,7 +17686,7 @@ static PyObject *__pyx_pf_5adios_4file_20__getattr__(struct __pyx_obj_5adios_fil
   return __pyx_r;
 }
 
-/* "adios.pyx":958
+/* "adios.pyx":1150
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -14636,28 +17721,28 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios.pyx":959
+  /* "adios.pyx":1151
  *     ## To support ipython tab completion
  *     def __dir__(self):
  *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/var1'] == f.var1
  */
-  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 959, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1151, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_k0 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":962
+  /* "adios.pyx":1154
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/var1'] == f.var1
  *         k1 = normalize_key(self.vars.keys())             # <<<<<<<<<<<<<<
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 962, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 962, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -14670,10 +17755,10 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1154, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -14688,17 +17773,17 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -14706,16 +17791,16 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
   __pyx_v_k1 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":963
+  /* "adios.pyx":1155
  *         ## E.g., f['/var1'] == f.var1
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
  *         return k0 + k1 + k2
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 963, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 963, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14728,10 +17813,10 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 963, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 963, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1155, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14746,17 +17831,17 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 963, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1155, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -14764,7 +17849,7 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
   __pyx_v_k2 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":964
+  /* "adios.pyx":1156
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
@@ -14772,16 +17857,16 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
  *     ## Require for dictionary key completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 964, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 964, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1156, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":958
+  /* "adios.pyx":1150
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -14807,7 +17892,7 @@ static PyObject *__pyx_pf_5adios_4file_22__dir__(struct __pyx_obj_5adios_file *_
   return __pyx_r;
 }
 
-/* "adios.pyx":967
+/* "adios.pyx":1159
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -14838,7 +17923,7 @@ static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__py
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios.pyx":968
+  /* "adios.pyx":1160
  *     ## Require for dictionary key completion
  *     def keys(self):
  *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
@@ -14846,7 +17931,7 @@ static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__py
  *     def is_open(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 968, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -14859,14 +17944,14 @@ static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__py
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 968, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 968, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 968, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14879,14 +17964,14 @@ static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__py
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 968, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1160, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 968, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1160, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 968, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1160, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -14894,7 +17979,7 @@ static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__py
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":967
+  /* "adios.pyx":1159
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -14916,7 +18001,7 @@ static PyObject *__pyx_pf_5adios_4file_24keys(struct __pyx_obj_5adios_file *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":970
+/* "adios.pyx":1162
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def is_open(self):             # <<<<<<<<<<<<<<
@@ -14944,7 +18029,7 @@ static PyObject *__pyx_pf_5adios_4file_26is_open(struct __pyx_obj_5adios_file *_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("is_open", 0);
 
-  /* "adios.pyx":972
+  /* "adios.pyx":1164
  *     def is_open(self):
  *         """ Check whether file is open or closed """
  *         return True if self.fp != NULL else False             # <<<<<<<<<<<<<<
@@ -14963,7 +18048,7 @@ static PyObject *__pyx_pf_5adios_4file_26is_open(struct __pyx_obj_5adios_file *_
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":970
+  /* "adios.pyx":1162
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def is_open(self):             # <<<<<<<<<<<<<<
@@ -14978,7 +18063,7 @@ static PyObject *__pyx_pf_5adios_4file_26is_open(struct __pyx_obj_5adios_file *_
   return __pyx_r;
 }
 
-/* "adios.pyx":975
+/* "adios.pyx":1167
  * 
  *     ## for py2
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -15008,14 +18093,14 @@ static int __pyx_pf_5adios_4file_28__nonzero__(struct __pyx_obj_5adios_file *__p
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
 
-  /* "adios.pyx":976
+  /* "adios.pyx":1168
  *     ## for py2
  *     def __nonzero__(self):
  *         return self.is_open()             # <<<<<<<<<<<<<<
  * 
  *     ## for py3
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1168, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15028,19 +18113,19 @@ static int __pyx_pf_5adios_4file_28__nonzero__(struct __pyx_obj_5adios_file *__p
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 976, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1168, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios.pyx":975
+  /* "adios.pyx":1167
  * 
  *     ## for py2
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -15060,7 +18145,7 @@ static int __pyx_pf_5adios_4file_28__nonzero__(struct __pyx_obj_5adios_file *__p
   return __pyx_r;
 }
 
-/* "adios.pyx":979
+/* "adios.pyx":1171
  * 
  *     ## for py3
  *     def __bool__(self):             # <<<<<<<<<<<<<<
@@ -15090,14 +18175,14 @@ static int __pyx_pf_5adios_4file_30__bool__(struct __pyx_obj_5adios_file *__pyx_
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__bool__", 0);
 
-  /* "adios.pyx":981
+  /* "adios.pyx":1173
  *     def __bool__(self):
  *         """ Check whether file is open or closed """
  *         return self.is_open()             # <<<<<<<<<<<<<<
  * 
  *     def dirs(self):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15110,19 +18195,19 @@ static int __pyx_pf_5adios_4file_30__bool__(struct __pyx_obj_5adios_file *__pyx_
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 981, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 981, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1173, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios.pyx":979
+  /* "adios.pyx":1171
  * 
  *     ## for py3
  *     def __bool__(self):             # <<<<<<<<<<<<<<
@@ -15142,7 +18227,7 @@ static int __pyx_pf_5adios_4file_30__bool__(struct __pyx_obj_5adios_file *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":983
+/* "adios.pyx":1175
  *         return self.is_open()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -15180,26 +18265,26 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("dirs", 0);
 
-  /* "adios.pyx":985
+  /* "adios.pyx":1177
  *     def dirs(self):
  *         """ Return child dir names """
  *         s = set()             # <<<<<<<<<<<<<<
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_s = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":986
+  /* "adios.pyx":1178
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15212,10 +18297,10 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -15223,9 +18308,9 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1178, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1178, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -15233,17 +18318,17 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 986, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1178, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 986, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1178, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -15253,7 +18338,7 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 986, __pyx_L1_error)
+          else __PYX_ERR(0, 1178, __pyx_L1_error)
         }
         break;
       }
@@ -15262,40 +18347,40 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":987
+    /* "adios.pyx":1179
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__23, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__24, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios.pyx":988
+    /* "adios.pyx":1180
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_7 = NULL;
@@ -15309,33 +18394,33 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
       }
     }
     if (!__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 988, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1180, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 988, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1180, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 988, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1180, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":986
+    /* "adios.pyx":1178
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -15345,14 +18430,14 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":989
+  /* "adios.pyx":1181
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 989, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1181, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -15365,10 +18450,10 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15376,9 +18461,9 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1181, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1181, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -15386,17 +18471,17 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 989, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1181, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 989, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1181, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -15406,7 +18491,7 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 989, __pyx_L1_error)
+          else __PYX_ERR(0, 1181, __pyx_L1_error)
         }
         break;
       }
@@ -15415,40 +18500,40 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":990
+    /* "adios.pyx":1182
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__26, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__27, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios.pyx":991
+    /* "adios.pyx":1183
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_8 = NULL;
@@ -15462,33 +18547,33 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
       }
     }
     if (!__pyx_t_8) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 991, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1183, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 991, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1183, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 991, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1183, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 991, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1183, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios.pyx":989
+    /* "adios.pyx":1181
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -15498,7 +18583,7 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":992
+  /* "adios.pyx":1184
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))             # <<<<<<<<<<<<<<
@@ -15506,20 +18591,20 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
  * cdef class blockinfo(object):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 992, __pyx_L1_error)
-  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error)
+  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 1184, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1184, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":983
+  /* "adios.pyx":1175
  *         return self.is_open()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -15544,7 +18629,7 @@ static PyObject *__pyx_pf_5adios_4file_32dirs(struct __pyx_obj_5adios_file *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":753
+/* "adios.pyx":945
  * 
  *     ## Public Memeber
  *     cpdef public softdict vars             # <<<<<<<<<<<<<<
@@ -15599,7 +18684,7 @@ static int __pyx_pf_5adios_4file_4vars_2__set__(struct __pyx_obj_5adios_file *__
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 753, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 945, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -15649,7 +18734,7 @@ static int __pyx_pf_5adios_4file_4vars_4__del__(struct __pyx_obj_5adios_file *__
   return __pyx_r;
 }
 
-/* "adios.pyx":754
+/* "adios.pyx":946
  *     ## Public Memeber
  *     cpdef public softdict vars
  *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
@@ -15704,7 +18789,7 @@ static int __pyx_pf_5adios_4file_5attrs_2__set__(struct __pyx_obj_5adios_file *_
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 754, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 946, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -15754,7 +18839,7 @@ static int __pyx_pf_5adios_4file_5attrs_4__del__(struct __pyx_obj_5adios_file *_
   return __pyx_r;
 }
 
-/* "adios.pyx":755
+/* "adios.pyx":947
  *     cpdef public softdict vars
  *     cpdef public softdict attrs
  *     cpdef public var             # <<<<<<<<<<<<<<
@@ -15849,7 +18934,7 @@ static int __pyx_pf_5adios_4file_3var_4__del__(struct __pyx_obj_5adios_file *__p
   return __pyx_r;
 }
 
-/* "adios.pyx":756
+/* "adios.pyx":948
  *     cpdef public softdict attrs
  *     cpdef public var
  *     cpdef public attr             # <<<<<<<<<<<<<<
@@ -15944,7 +19029,7 @@ static int __pyx_pf_5adios_4file_4attr_4__del__(struct __pyx_obj_5adios_file *__
   return __pyx_r;
 }
 
-/* "adios.pyx":1001
+/* "adios.pyx":1193
  * 
  *     property start:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -15970,7 +19055,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_5start___get__(struct __pyx_obj_5adi
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1002
+  /* "adios.pyx":1194
  *     property start:
  *         def __get__(self):
  *             return self.start             # <<<<<<<<<<<<<<
@@ -15982,7 +19067,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_5start___get__(struct __pyx_obj_5adi
   __pyx_r = __pyx_v_self->start;
   goto __pyx_L0;
 
-  /* "adios.pyx":1001
+  /* "adios.pyx":1193
  * 
  *     property start:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -15997,7 +19082,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_5start___get__(struct __pyx_obj_5adi
   return __pyx_r;
 }
 
-/* "adios.pyx":1005
+/* "adios.pyx":1197
  * 
  *     property count:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16023,7 +19108,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_5count___get__(struct __pyx_obj_5adi
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1006
+  /* "adios.pyx":1198
  *     property count:
  *         def __get__(self):
  *             return self.count             # <<<<<<<<<<<<<<
@@ -16035,7 +19120,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_5count___get__(struct __pyx_obj_5adi
   __pyx_r = __pyx_v_self->count;
   goto __pyx_L0;
 
-  /* "adios.pyx":1005
+  /* "adios.pyx":1197
  * 
  *     property count:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16050,7 +19135,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_5count___get__(struct __pyx_obj_5adi
   return __pyx_r;
 }
 
-/* "adios.pyx":1009
+/* "adios.pyx":1201
  * 
  *     property process_id:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16077,7 +19162,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_10process_id___get__(struct __pyx_ob
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1010
+  /* "adios.pyx":1202
  *     property process_id:
  *         def __get__(self):
  *             return self.process_id             # <<<<<<<<<<<<<<
@@ -16085,13 +19170,13 @@ static PyObject *__pyx_pf_5adios_9blockinfo_10process_id___get__(struct __pyx_ob
  *     property time_index:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1010, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1202, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1009
+  /* "adios.pyx":1201
  * 
  *     property process_id:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16110,7 +19195,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_10process_id___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "adios.pyx":1013
+/* "adios.pyx":1205
  * 
  *     property time_index:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16137,7 +19222,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_10time_index___get__(struct __pyx_ob
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1014
+  /* "adios.pyx":1206
  *     property time_index:
  *         def __get__(self):
  *             return self.time_index             # <<<<<<<<<<<<<<
@@ -16145,13 +19230,13 @@ static PyObject *__pyx_pf_5adios_9blockinfo_10time_index___get__(struct __pyx_ob
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1013
+  /* "adios.pyx":1205
  * 
  *     property time_index:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16170,7 +19255,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_10time_index___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "adios.pyx":1016
+/* "adios.pyx":1208
  *             return self.time_index
  * 
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
@@ -16210,21 +19295,21 @@ static int __pyx_pw_5adios_9blockinfo_1__init__(PyObject *__pyx_v_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 1016, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 1208, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_process_id)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 1016, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 1208, __pyx_L3_error)
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 1016, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 1208, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1016, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1208, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -16236,19 +19321,19 @@ static int __pyx_pw_5adios_9blockinfo_1__init__(PyObject *__pyx_v_self, PyObject
     }
     __pyx_v_start = ((PyObject*)values[0]);
     __pyx_v_count = ((PyObject*)values[1]);
-    __pyx_v_process_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_process_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1016, __pyx_L3_error)
-    __pyx_v_time_index = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_time_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1016, __pyx_L3_error)
+    __pyx_v_process_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_process_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1208, __pyx_L3_error)
+    __pyx_v_time_index = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_time_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1208, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1016, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1208, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.blockinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyTuple_Type), 1, "start", 1))) __PYX_ERR(0, 1016, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1016, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyTuple_Type), 1, "start", 1))) __PYX_ERR(0, 1208, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1208, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_9blockinfo___init__(((struct __pyx_obj_5adios_blockinfo *)__pyx_v_self), __pyx_v_start, __pyx_v_count, __pyx_v_process_id, __pyx_v_time_index);
 
   /* function exit code */
@@ -16265,7 +19350,7 @@ static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1017
+  /* "adios.pyx":1209
  * 
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
  *         self.start = start             # <<<<<<<<<<<<<<
@@ -16278,7 +19363,7 @@ static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo
   __Pyx_DECREF(__pyx_v_self->start);
   __pyx_v_self->start = __pyx_v_start;
 
-  /* "adios.pyx":1018
+  /* "adios.pyx":1210
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
  *         self.start = start
  *         self.count = count             # <<<<<<<<<<<<<<
@@ -16291,7 +19376,7 @@ static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo
   __Pyx_DECREF(__pyx_v_self->count);
   __pyx_v_self->count = __pyx_v_count;
 
-  /* "adios.pyx":1019
+  /* "adios.pyx":1211
  *         self.start = start
  *         self.count = count
  *         self.process_id = process_id             # <<<<<<<<<<<<<<
@@ -16300,7 +19385,7 @@ static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo
  */
   __pyx_v_self->process_id = __pyx_v_process_id;
 
-  /* "adios.pyx":1020
+  /* "adios.pyx":1212
  *         self.count = count
  *         self.process_id = process_id
  *         self.time_index = time_index             # <<<<<<<<<<<<<<
@@ -16309,7 +19394,7 @@ static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo
  */
   __pyx_v_self->time_index = __pyx_v_time_index;
 
-  /* "adios.pyx":1016
+  /* "adios.pyx":1208
  *             return self.time_index
  * 
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
@@ -16323,7 +19408,7 @@ static int __pyx_pf_5adios_9blockinfo___init__(struct __pyx_obj_5adios_blockinfo
   return __pyx_r;
 }
 
-/* "adios.pyx":1022
+/* "adios.pyx":1214
  *         self.time_index = time_index
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -16352,7 +19437,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_2__repr__(struct __pyx_obj_5adios_bl
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1023
+  /* "adios.pyx":1215
  * 
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
@@ -16361,34 +19446,34 @@ static PyObject *__pyx_pf_5adios_9blockinfo_2__repr__(struct __pyx_obj_5adios_bl
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":1024
+  /* "adios.pyx":1216
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
  *                (self.process_id,             # <<<<<<<<<<<<<<
  *                 self.time_index,
  *                 self.start,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios.pyx":1025
+  /* "adios.pyx":1217
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
  *                (self.process_id,
  *                 self.time_index,             # <<<<<<<<<<<<<<
  *                 self.start,
  *                 self.count)
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1025, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1217, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":1024
+  /* "adios.pyx":1216
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
  *                (self.process_id,             # <<<<<<<<<<<<<<
  *                 self.time_index,
  *                 self.start,
  */
-  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1024, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1216, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -16403,21 +19488,21 @@ static PyObject *__pyx_pf_5adios_9blockinfo_2__repr__(struct __pyx_obj_5adios_bl
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1023
+  /* "adios.pyx":1215
  * 
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
  *                (self.process_id,
  *                 self.time_index,
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosBlockinfo_process_id_r_time, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1023, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosBlockinfo_process_id_r_time, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1022
+  /* "adios.pyx":1214
  *         self.time_index = time_index
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -16438,7 +19523,7 @@ static PyObject *__pyx_pf_5adios_9blockinfo_2__repr__(struct __pyx_obj_5adios_bl
   return __pyx_r;
 }
 
-/* "adios.pyx":1059
+/* "adios.pyx":1251
  *     property name:
  *         """ The variable name. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16464,7 +19549,7 @@ static PyObject *__pyx_pf_5adios_3var_4name___get__(struct __pyx_obj_5adios_var
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1060
+  /* "adios.pyx":1252
  *         """ The variable name. """
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -16476,7 +19561,7 @@ static PyObject *__pyx_pf_5adios_3var_4name___get__(struct __pyx_obj_5adios_var
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios.pyx":1059
+  /* "adios.pyx":1251
  *     property name:
  *         """ The variable name. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16491,7 +19576,7 @@ static PyObject *__pyx_pf_5adios_3var_4name___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1064
+/* "adios.pyx":1256
  *     property varid:
  *         """ Internal variable id. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16518,7 +19603,7 @@ static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1065
+  /* "adios.pyx":1257
  *         """ Internal variable id. """
  *         def __get__(self):
  *             return self.varid             # <<<<<<<<<<<<<<
@@ -16526,13 +19611,13 @@ static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var
  *     property dtype:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1064
+  /* "adios.pyx":1256
  *     property varid:
  *         """ Internal variable id. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16551,7 +19636,7 @@ static PyObject *__pyx_pf_5adios_3var_5varid___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1069
+/* "adios.pyx":1261
  *     property dtype:
  *         """ Variable type as in numpy.dtype. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16577,7 +19662,7 @@ static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1070
+  /* "adios.pyx":1262
  *         """ Variable type as in numpy.dtype. """
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -16589,7 +19674,7 @@ static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var
   __pyx_r = ((PyObject *)__pyx_v_self->dtype);
   goto __pyx_L0;
 
-  /* "adios.pyx":1069
+  /* "adios.pyx":1261
  *     property dtype:
  *         """ Variable type as in numpy.dtype. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16604,7 +19689,7 @@ static PyObject *__pyx_pf_5adios_3var_5dtype___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1074
+/* "adios.pyx":1266
  *     property ndim:
  *         """ The number of dimensions of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16631,7 +19716,7 @@ static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1075
+  /* "adios.pyx":1267
  *         """ The number of dimensions of the variable. """
  *         def __get__(self):
  *             return self.ndim             # <<<<<<<<<<<<<<
@@ -16639,13 +19724,13 @@ static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var
  *     property dims:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1075, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1074
+  /* "adios.pyx":1266
  *     property ndim:
  *         """ The number of dimensions of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16664,7 +19749,7 @@ static PyObject *__pyx_pf_5adios_3var_4ndim___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1079
+/* "adios.pyx":1271
  *     property dims:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16690,7 +19775,7 @@ static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1080
+  /* "adios.pyx":1272
  *         """ The shape of the variable. """
  *         def __get__(self):
  *             return self.dims             # <<<<<<<<<<<<<<
@@ -16702,7 +19787,7 @@ static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var
   __pyx_r = __pyx_v_self->dims;
   goto __pyx_L0;
 
-  /* "adios.pyx":1079
+  /* "adios.pyx":1271
  *     property dims:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16717,7 +19802,7 @@ static PyObject *__pyx_pf_5adios_3var_4dims___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1084
+/* "adios.pyx":1276
  *     property shape:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16743,7 +19828,7 @@ static PyObject *__pyx_pf_5adios_3var_5shape___get__(struct __pyx_obj_5adios_var
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1085
+  /* "adios.pyx":1277
  *         """ The shape of the variable. """
  *         def __get__(self):
  *             return self.dims             # <<<<<<<<<<<<<<
@@ -16755,7 +19840,7 @@ static PyObject *__pyx_pf_5adios_3var_5shape___get__(struct __pyx_obj_5adios_var
   __pyx_r = __pyx_v_self->dims;
   goto __pyx_L0;
 
-  /* "adios.pyx":1084
+  /* "adios.pyx":1276
  *     property shape:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16770,7 +19855,7 @@ static PyObject *__pyx_pf_5adios_3var_5shape___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1089
+/* "adios.pyx":1281
  *     property size:
  *         """ The number of elements in the array. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16800,7 +19885,7 @@ static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1090
+  /* "adios.pyx":1282
  *         """ The number of elements in the array. """
  *         def __get__(self):
  *             return np.prod(self.dims)             # <<<<<<<<<<<<<<
@@ -16808,9 +19893,9 @@ static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var
  *     property nsteps:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1282, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_prod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1090, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_prod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1282, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -16824,16 +19909,16 @@ static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1090, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1282, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1090, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1282, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_self->dims);
     __Pyx_GIVEREF(__pyx_v_self->dims);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->dims);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1090, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1282, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -16842,7 +19927,7 @@ static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1089
+  /* "adios.pyx":1281
  *     property size:
  *         """ The number of elements in the array. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16864,7 +19949,7 @@ static PyObject *__pyx_pf_5adios_3var_4size___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1094
+/* "adios.pyx":1286
  *     property nsteps:
  *         """ The number of time steps of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16891,7 +19976,7 @@ static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_va
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1095
+  /* "adios.pyx":1287
  *         """ The number of time steps of the variable. """
  *         def __get__(self):
  *             return self.nsteps             # <<<<<<<<<<<<<<
@@ -16899,13 +19984,13 @@ static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_va
  *     property attrs:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1095, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1094
+  /* "adios.pyx":1286
  *     property nsteps:
  *         """ The number of time steps of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16924,7 +20009,7 @@ static PyObject *__pyx_pf_5adios_3var_6nsteps___get__(struct __pyx_obj_5adios_va
   return __pyx_r;
 }
 
-/* "adios.pyx":1099
+/* "adios.pyx":1291
  *     property attrs:
  *         """ Attributes associated with the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16950,7 +20035,7 @@ static PyObject *__pyx_pf_5adios_3var_5attrs___get__(struct __pyx_obj_5adios_var
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1100
+  /* "adios.pyx":1292
  *         """ Attributes associated with the variable. """
  *         def __get__(self):
  *             return self.attrs             # <<<<<<<<<<<<<<
@@ -16962,7 +20047,7 @@ static PyObject *__pyx_pf_5adios_3var_5attrs___get__(struct __pyx_obj_5adios_var
   __pyx_r = ((PyObject *)__pyx_v_self->attrs);
   goto __pyx_L0;
 
-  /* "adios.pyx":1099
+  /* "adios.pyx":1291
  *     property attrs:
  *         """ Attributes associated with the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16977,7 +20062,7 @@ static PyObject *__pyx_pf_5adios_3var_5attrs___get__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1104
+/* "adios.pyx":1296
  *     property blockinfo:
  *         """ Block information. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17026,7 +20111,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1105
+  /* "adios.pyx":1297
  *         """ Block information. """
  *         def __get__(self):
  *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
@@ -17037,19 +20122,19 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1106
+    /* "adios.pyx":1298
  *         def __get__(self):
  *             if self.blockinfo is None:
  *                 ll = list()             # <<<<<<<<<<<<<<
  *                 k = 0
  *                 for t in range(self.vp.nsteps):
  */
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1106, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1298, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_ll = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":1107
+    /* "adios.pyx":1299
  *             if self.blockinfo is None:
  *                 ll = list()
  *                 k = 0             # <<<<<<<<<<<<<<
@@ -17059,7 +20144,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
     __Pyx_INCREF(__pyx_int_0);
     __pyx_v_k = __pyx_int_0;
 
-    /* "adios.pyx":1108
+    /* "adios.pyx":1300
  *                 ll = list()
  *                 k = 0
  *                 for t in range(self.vp.nsteps):             # <<<<<<<<<<<<<<
@@ -17070,19 +20155,19 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
       __pyx_v_t = __pyx_t_5;
 
-      /* "adios.pyx":1109
+      /* "adios.pyx":1301
  *                 k = 0
  *                 for t in range(self.vp.nsteps):
  *                     l = list()             # <<<<<<<<<<<<<<
  *                     if self.vp.nblocks[t] == 0:
  *                         l.append(None)
  */
-      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1109, __pyx_L1_error)
+      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1301, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_XDECREF_SET(__pyx_v_l, ((PyObject*)__pyx_t_3));
       __pyx_t_3 = 0;
 
-      /* "adios.pyx":1110
+      /* "adios.pyx":1302
  *                 for t in range(self.vp.nsteps):
  *                     l = list()
  *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
@@ -17092,16 +20177,16 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
       __pyx_t_2 = (((__pyx_v_self->vp->nblocks[__pyx_v_t]) == 0) != 0);
       if (__pyx_t_2) {
 
-        /* "adios.pyx":1111
+        /* "adios.pyx":1303
  *                     l = list()
  *                     if self.vp.nblocks[t] == 0:
  *                         l.append(None)             # <<<<<<<<<<<<<<
  *                     for i in range(self.vp.nblocks[t]):
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])
  */
-        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, Py_None); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1111, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, Py_None); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1303, __pyx_L1_error)
 
-        /* "adios.pyx":1110
+        /* "adios.pyx":1302
  *                 for t in range(self.vp.nsteps):
  *                     l = list()
  *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
@@ -17110,7 +20195,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
  */
       }
 
-      /* "adios.pyx":1112
+      /* "adios.pyx":1304
  *                     if self.vp.nblocks[t] == 0:
  *                         l.append(None)
  *                     for i in range(self.vp.nblocks[t]):             # <<<<<<<<<<<<<<
@@ -17121,88 +20206,88 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
       for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
         __pyx_v_i = __pyx_t_8;
 
-        /* "adios.pyx":1113
+        /* "adios.pyx":1305
  *                         l.append(None)
  *                     for i in range(self.vp.nblocks[t]):
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])             # <<<<<<<<<<<<<<
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
  *                         process_id = self.vp.blockinfo[k].process_id
  */
-        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
+        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1305, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_9 = __pyx_v_self->vp->ndim;
         for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
           __pyx_v_d = __pyx_t_10;
-          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1113, __pyx_L1_error)
-          __pyx_t_12 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).start[__pyx_v_d])); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1113, __pyx_L1_error)
+          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1305, __pyx_L1_error)
+          __pyx_t_12 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).start[__pyx_v_d])); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1305, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_12);
-          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 1113, __pyx_L1_error)
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 1305, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
-        __pyx_t_12 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1113, __pyx_L1_error)
+        __pyx_t_12 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1305, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_XDECREF_SET(__pyx_v_start, ((PyObject*)__pyx_t_12));
         __pyx_t_12 = 0;
 
-        /* "adios.pyx":1114
+        /* "adios.pyx":1306
  *                     for i in range(self.vp.nblocks[t]):
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])             # <<<<<<<<<<<<<<
  *                         process_id = self.vp.blockinfo[k].process_id
  *                         time_index = self.vp.blockinfo[k].time_index
  */
-        __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1114, __pyx_L1_error)
+        __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1306, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __pyx_t_9 = __pyx_v_self->vp->ndim;
         for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
           __pyx_v_d = __pyx_t_10;
-          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1114, __pyx_L1_error)
-          __pyx_t_3 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).count[__pyx_v_d])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1114, __pyx_L1_error)
+          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1306, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).count[__pyx_v_d])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1306, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
-          if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1114, __pyx_L1_error)
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1306, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         }
-        __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1114, __pyx_L1_error)
+        __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1306, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_XDECREF_SET(__pyx_v_count, ((PyObject*)__pyx_t_3));
         __pyx_t_3 = 0;
 
-        /* "adios.pyx":1115
+        /* "adios.pyx":1307
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
  *                         process_id = self.vp.blockinfo[k].process_id             # <<<<<<<<<<<<<<
  *                         time_index = self.vp.blockinfo[k].time_index
  *                         binfo = blockinfo(start, count, process_id, time_index)
  */
-        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1115, __pyx_L1_error)
-        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).process_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1115, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1307, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).process_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1307, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_process_id, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "adios.pyx":1116
+        /* "adios.pyx":1308
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
  *                         process_id = self.vp.blockinfo[k].process_id
  *                         time_index = self.vp.blockinfo[k].time_index             # <<<<<<<<<<<<<<
  *                         binfo = blockinfo(start, count, process_id, time_index)
  *                         l.append(binfo)
  */
-        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1116, __pyx_L1_error)
-        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).time_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1116, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1308, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).time_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1308, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_time_index, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "adios.pyx":1117
+        /* "adios.pyx":1309
  *                         process_id = self.vp.blockinfo[k].process_id
  *                         time_index = self.vp.blockinfo[k].time_index
  *                         binfo = blockinfo(start, count, process_id, time_index)             # <<<<<<<<<<<<<<
  *                         l.append(binfo)
  *                         k += 1
  */
-        __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1117, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1309, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(__pyx_v_start);
         __Pyx_GIVEREF(__pyx_v_start);
@@ -17216,45 +20301,45 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
         __Pyx_INCREF(__pyx_v_time_index);
         __Pyx_GIVEREF(__pyx_v_time_index);
         PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_time_index);
-        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_blockinfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1117, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_blockinfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1309, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_XDECREF_SET(__pyx_v_binfo, ((struct __pyx_obj_5adios_blockinfo *)__pyx_t_12));
         __pyx_t_12 = 0;
 
-        /* "adios.pyx":1118
+        /* "adios.pyx":1310
  *                         time_index = self.vp.blockinfo[k].time_index
  *                         binfo = blockinfo(start, count, process_id, time_index)
  *                         l.append(binfo)             # <<<<<<<<<<<<<<
  *                         k += 1
  *                     ll.append(l)
  */
-        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, ((PyObject *)__pyx_v_binfo)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1118, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, ((PyObject *)__pyx_v_binfo)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1310, __pyx_L1_error)
 
-        /* "adios.pyx":1119
+        /* "adios.pyx":1311
  *                         binfo = blockinfo(start, count, process_id, time_index)
  *                         l.append(binfo)
  *                         k += 1             # <<<<<<<<<<<<<<
  *                     ll.append(l)
  *                 self.blockinfo = ll
  */
-        __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1119, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1311, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_12);
         __pyx_t_12 = 0;
       }
 
-      /* "adios.pyx":1120
+      /* "adios.pyx":1312
  *                         l.append(binfo)
  *                         k += 1
  *                     ll.append(l)             # <<<<<<<<<<<<<<
  *                 self.blockinfo = ll
  *             return (self.blockinfo)
  */
-      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ll, __pyx_v_l); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1120, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ll, __pyx_v_l); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1312, __pyx_L1_error)
     }
 
-    /* "adios.pyx":1121
+    /* "adios.pyx":1313
  *                         k += 1
  *                     ll.append(l)
  *                 self.blockinfo = ll             # <<<<<<<<<<<<<<
@@ -17267,7 +20352,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
     __Pyx_DECREF(__pyx_v_self->blockinfo);
     __pyx_v_self->blockinfo = __pyx_v_ll;
 
-    /* "adios.pyx":1105
+    /* "adios.pyx":1297
  *         """ Block information. """
  *         def __get__(self):
  *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
@@ -17276,7 +20361,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
  */
   }
 
-  /* "adios.pyx":1122
+  /* "adios.pyx":1314
  *                     ll.append(l)
  *                 self.blockinfo = ll
  *             return (self.blockinfo)             # <<<<<<<<<<<<<<
@@ -17288,7 +20373,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
   __pyx_r = __pyx_v_self->blockinfo;
   goto __pyx_L0;
 
-  /* "adios.pyx":1104
+  /* "adios.pyx":1296
  *     property blockinfo:
  *         """ Block information. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17316,7 +20401,7 @@ static PyObject *__pyx_pf_5adios_3var_9blockinfo___get__(struct __pyx_obj_5adios
   return __pyx_r;
 }
 
-/* "adios.pyx":1124
+/* "adios.pyx":1316
  *             return (self.blockinfo)
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -17352,11 +20437,11 @@ static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1124, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1316, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1124, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1316, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -17369,14 +20454,14 @@ static int __pyx_pw_5adios_3var_1__init__(PyObject *__pyx_v_self, PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1124, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1316, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_5adios_file, 1, "file", 0))) __PYX_ERR(0, 1124, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1124, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_5adios_file, 1, "file", 0))) __PYX_ERR(0, 1316, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1316, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_3var___init__(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
@@ -17411,7 +20496,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_name);
 
-  /* "adios.pyx":1125
+  /* "adios.pyx":1317
  * 
  *     def __init__(self, file file, str name):
  *         self.file = file             # <<<<<<<<<<<<<<
@@ -17424,7 +20509,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
   __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios.pyx":1126
+  /* "adios.pyx":1318
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.vp = NULL             # <<<<<<<<<<<<<<
@@ -17433,7 +20518,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  */
   __pyx_v_self->vp = NULL;
 
-  /* "adios.pyx":1128
+  /* "adios.pyx":1320
  *         self.vp = NULL
  * 
  *         assert self.file.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -17444,25 +20529,25 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->file->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 1128, __pyx_L1_error)
+      __PYX_ERR(0, 1320, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1129
+  /* "adios.pyx":1321
  * 
  *         assert self.file.fp != NULL, 'Not an open file'
  *         self.vp = adios_inq_var(self.file.fp, s2b(name))             # <<<<<<<<<<<<<<
  *         assert self.vp != NULL, 'Not a valid var'
  * 
  */
-  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1129, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1129, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1321, __pyx_L1_error)
   __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1130
+  /* "adios.pyx":1322
  *         assert self.file.fp != NULL, 'Not an open file'
  *         self.vp = adios_inq_var(self.file.fp, s2b(name))
  *         assert self.vp != NULL, 'Not a valid var'             # <<<<<<<<<<<<<<
@@ -17473,12 +20558,12 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      __PYX_ERR(0, 1130, __pyx_L1_error)
+      __PYX_ERR(0, 1322, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1133
+  /* "adios.pyx":1325
  * 
  *         ## Further populate vp.blockinfo
  *         adios_inq_var_blockinfo(self.file.fp, self.vp)             # <<<<<<<<<<<<<<
@@ -17487,7 +20572,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  */
   adios_inq_var_blockinfo(__pyx_v_self->file->fp, __pyx_v_self->vp);
 
-  /* "adios.pyx":1135
+  /* "adios.pyx":1327
  *         adios_inq_var_blockinfo(self.file.fp, self.vp)
  * 
  *         self.name = name             # <<<<<<<<<<<<<<
@@ -17500,7 +20585,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios.pyx":1136
+  /* "adios.pyx":1328
  * 
  *         self.name = name
  *         self.varid = self.vp.varid             # <<<<<<<<<<<<<<
@@ -17510,7 +20595,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __pyx_t_3 = __pyx_v_self->vp->varid;
   __pyx_v_self->varid = __pyx_t_3;
 
-  /* "adios.pyx":1137
+  /* "adios.pyx":1329
  *         self.name = name
  *         self.varid = self.vp.varid
  *         self.ndim = self.vp.ndim             # <<<<<<<<<<<<<<
@@ -17520,24 +20605,24 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __pyx_t_3 = __pyx_v_self->vp->ndim;
   __pyx_v_self->ndim = __pyx_t_3;
 
-  /* "adios.pyx":1138
+  /* "adios.pyx":1330
  *         self.varid = self.vp.varid
  *         self.ndim = self.vp.ndim
  *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])             # <<<<<<<<<<<<<<
  *         self.nsteps = self.vp.nsteps
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1138, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_self->vp->ndim;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_5 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1138, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1330, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1138, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1330, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
-  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1138, __pyx_L1_error)
+  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1330, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_GIVEREF(__pyx_t_5);
@@ -17546,7 +20631,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __pyx_v_self->dims = ((PyObject*)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "adios.pyx":1139
+  /* "adios.pyx":1331
  *         self.ndim = self.vp.ndim
  *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
  *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
@@ -17556,28 +20641,28 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __pyx_t_3 = __pyx_v_self->vp->nsteps;
   __pyx_v_self->nsteps = __pyx_t_3;
 
-  /* "adios.pyx":1141
+  /* "adios.pyx":1333
  *         self.nsteps = self.vp.nsteps
  * 
  *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
  *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
  *         else:
  */
-  __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_self->vp->type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_self->vp->type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1141, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1141, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1333, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1142
+    /* "adios.pyx":1334
  * 
  *         if self.vp.type == DATATYPE.string:
  *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))             # <<<<<<<<<<<<<<
@@ -17587,7 +20672,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
     __pyx_t_8 = strlen(((char *)__pyx_v_self->vp->value)); 
     __pyx_t_9.__pyx_n = 1;
     __pyx_t_9.strlen = __pyx_t_8;
-    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_self->vp->type, 0, &__pyx_t_9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1142, __pyx_L1_error)
+    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_self->vp->type, 0, &__pyx_t_9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -17595,7 +20680,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
     __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1141
+    /* "adios.pyx":1333
  *         self.nsteps = self.vp.nsteps
  * 
  *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
@@ -17605,7 +20690,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
     goto __pyx_L5;
   }
 
-  /* "adios.pyx":1144
+  /* "adios.pyx":1336
  *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
  *         else:
  *             self.dtype = adios2npdtype(self.vp.type)             # <<<<<<<<<<<<<<
@@ -17613,7 +20698,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  *         self.attrs = softdict()
  */
   /*else*/ {
-    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_self->vp->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1144, __pyx_L1_error)
+    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_self->vp->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -17623,14 +20708,14 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   }
   __pyx_L5:;
 
-  /* "adios.pyx":1146
+  /* "adios.pyx":1338
  *             self.dtype = adios2npdtype(self.vp.type)
  * 
  *         self.attrs = softdict()             # <<<<<<<<<<<<<<
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -17638,14 +20723,14 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1147
+  /* "adios.pyx":1339
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1147, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -17658,10 +20743,10 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -17669,9 +20754,9 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
     __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
     __pyx_t_11 = NULL;
   } else {
-    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1147, __pyx_L1_error)
+    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1147, __pyx_L1_error)
+    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1339, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -17679,17 +20764,17 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1147, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1339, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1147, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1339, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -17699,17 +20784,17 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1147, __pyx_L1_error)
+          else __PYX_ERR(0, 1339, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_1);
     }
-    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1147, __pyx_L1_error)
+    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1339, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1148
+    /* "adios.pyx":1340
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -17718,26 +20803,26 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1148, __pyx_L1_error)
+      __PYX_ERR(0, 1340, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1148, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1340, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if ((__pyx_t_7 != 0)) {
 
-      /* "adios.pyx":1149
+      /* "adios.pyx":1341
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  */
-      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error)
+      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1149, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1341, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_13 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1149, __pyx_L1_error)
+      __pyx_t_13 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1341, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __pyx_t_14 = NULL;
       __pyx_t_15 = 0;
@@ -17751,7 +20836,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
           __pyx_t_15 = 1;
         }
       }
-      __pyx_t_16 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1149, __pyx_L1_error)
+      __pyx_t_16 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1341, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_16);
       if (__pyx_t_14) {
         __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
@@ -17762,15 +20847,15 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
       __Pyx_GIVEREF(__pyx_kp_s__10);
       PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_15, __pyx_kp_s__10);
       __pyx_t_13 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1149, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1341, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 1149, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 1341, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios.pyx":1148
+      /* "adios.pyx":1340
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -17779,7 +20864,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  */
     }
 
-    /* "adios.pyx":1150
+    /* "adios.pyx":1342
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -17788,31 +20873,31 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1150, __pyx_L1_error)
+      __PYX_ERR(0, 1342, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1150, __pyx_L1_error)
+    __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1342, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_5, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1150, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_5, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1342, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if ((__pyx_t_7 != 0)) {
 
-      /* "adios.pyx":1151
+      /* "adios.pyx":1343
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  * 
  *     def __del__(self):
  */
-      __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_16 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      __pyx_t_16 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_16);
-      __pyx_t_13 = PyNumber_Add(__pyx_t_16, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      __pyx_t_13 = PyNumber_Add(__pyx_t_16, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
       __pyx_t_16 = NULL;
@@ -17827,7 +20912,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
           __pyx_t_15 = 1;
         }
       }
-      __pyx_t_14 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      __pyx_t_14 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_14);
       if (__pyx_t_16) {
         __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
@@ -17838,15 +20923,15 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
       __Pyx_GIVEREF(__pyx_kp_s__10);
       PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_15, __pyx_kp_s__10);
       __pyx_t_13 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 1151, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 1343, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "adios.pyx":1150
+      /* "adios.pyx":1342
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -17855,7 +20940,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
  */
     }
 
-    /* "adios.pyx":1147
+    /* "adios.pyx":1339
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
@@ -17865,7 +20950,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios.pyx":1124
+  /* "adios.pyx":1316
  *             return (self.blockinfo)
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -17892,7 +20977,7 @@ static int __pyx_pf_5adios_3var___init__(struct __pyx_obj_5adios_var *__pyx_v_se
   return __pyx_r;
 }
 
-/* "adios.pyx":1153
+/* "adios.pyx":1345
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -17920,18 +21005,18 @@ static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__del__", 0);
 
-  /* "adios.pyx":1154
+  /* "adios.pyx":1346
  * 
  *     def __del__(self):
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     cpdef close(self):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1153
+  /* "adios.pyx":1345
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -17952,7 +21037,7 @@ static PyObject *__pyx_pf_5adios_3var_2__del__(struct __pyx_obj_5adios_var *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":1156
+/* "adios.pyx":1348
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -17973,7 +21058,7 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_3var_5close)) {
       __Pyx_XDECREF(__pyx_r);
@@ -17989,10 +21074,10 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1156, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1156, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18004,7 +21089,7 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":1158
+  /* "adios.pyx":1350
  *     cpdef close(self):
  *         """ Close and free variable information """
  *         assert self.vp != NULL, 'Not an open var'             # <<<<<<<<<<<<<<
@@ -18015,12 +21100,12 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_var);
-      __PYX_ERR(0, 1158, __pyx_L1_error)
+      __PYX_ERR(0, 1350, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1159
+  /* "adios.pyx":1351
  *         """ Close and free variable information """
  *         assert self.vp != NULL, 'Not an open var'
  *         adios_free_varinfo(self.vp)             # <<<<<<<<<<<<<<
@@ -18029,7 +21114,7 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
  */
   adios_free_varinfo(__pyx_v_self->vp);
 
-  /* "adios.pyx":1160
+  /* "adios.pyx":1352
  *         assert self.vp != NULL, 'Not an open var'
  *         adios_free_varinfo(self.vp)
  *         self.vp = NULL             # <<<<<<<<<<<<<<
@@ -18038,7 +21123,7 @@ static PyObject *__pyx_f_5adios_3var_close(struct __pyx_obj_5adios_var *__pyx_v_
  */
   __pyx_v_self->vp = NULL;
 
-  /* "adios.pyx":1156
+  /* "adios.pyx":1348
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -18082,7 +21167,7 @@ static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_3var_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1156, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_3var_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -18099,7 +21184,7 @@ static PyObject *__pyx_pf_5adios_3var_4close(struct __pyx_obj_5adios_var *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":1162
+/* "adios.pyx":1354
  *         self.vp = NULL
  * 
  *     cpdef advance(self):             # <<<<<<<<<<<<<<
@@ -18122,7 +21207,7 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1162, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1354, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_3var_7advance)) {
       __Pyx_XDECREF(__pyx_r);
@@ -18138,10 +21223,10 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1162, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1354, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1162, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1354, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18153,17 +21238,17 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":1164
+  /* "adios.pyx":1356
  *     cpdef advance(self):
  *         """ Update variable information after the stream advanced """
  *         self.vp = adios_inq_var(self.file.fp, self.name)             # <<<<<<<<<<<<<<
  *         assert self.vp != NULL, 'Not a valid var'
  *         self.nsteps = self.vp.nsteps
  */
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1164, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1356, __pyx_L1_error)
   __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_5);
 
-  /* "adios.pyx":1165
+  /* "adios.pyx":1357
  *         """ Update variable information after the stream advanced """
  *         self.vp = adios_inq_var(self.file.fp, self.name)
  *         assert self.vp != NULL, 'Not a valid var'             # <<<<<<<<<<<<<<
@@ -18174,12 +21259,12 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      __PYX_ERR(0, 1165, __pyx_L1_error)
+      __PYX_ERR(0, 1357, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1166
+  /* "adios.pyx":1358
  *         self.vp = adios_inq_var(self.file.fp, self.name)
  *         assert self.vp != NULL, 'Not a valid var'
  *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
@@ -18189,7 +21274,7 @@ static PyObject *__pyx_f_5adios_3var_advance(struct __pyx_obj_5adios_var *__pyx_
   __pyx_t_6 = __pyx_v_self->vp->nsteps;
   __pyx_v_self->nsteps = __pyx_t_6;
 
-  /* "adios.pyx":1162
+  /* "adios.pyx":1354
  *         self.vp = NULL
  * 
  *     cpdef advance(self):             # <<<<<<<<<<<<<<
@@ -18233,7 +21318,7 @@ static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("advance", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_3var_advance(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1162, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_3var_advance(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1354, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -18250,7 +21335,7 @@ static PyObject *__pyx_pf_5adios_3var_6advance(struct __pyx_obj_5adios_var *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":1168
+/* "adios.pyx":1360
  *         self.nsteps = self.vp.nsteps
  * 
  *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -18302,7 +21387,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_points); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_points); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1360, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_3var_9read_points)) {
       __Pyx_XDECREF(__pyx_r);
@@ -18319,7 +21404,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
           __pyx_t_5 = 1;
         }
       }
-      __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1168, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1360, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       if (__pyx_t_4) {
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -18333,7 +21418,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
       __Pyx_INCREF(__pyx_v_nsteps);
       __Pyx_GIVEREF(__pyx_v_nsteps);
       PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_nsteps);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1168, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1360, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18345,7 +21430,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":1184
+  /* "adios.pyx":1376
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -18356,7 +21441,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1185
+    /* "adios.pyx":1377
  *         """
  *         if from_steps is None:
  *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
@@ -18366,7 +21451,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "adios.pyx":1184
+    /* "adios.pyx":1376
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -18375,7 +21460,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1187
+  /* "adios.pyx":1379
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -18386,25 +21471,25 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
   __pyx_t_7 = (__pyx_t_8 != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1188
+    /* "adios.pyx":1380
  * 
  *         if nsteps is None:
  *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1380, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1188, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1380, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1380, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_nsteps, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1187
+    /* "adios.pyx":1379
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -18413,7 +21498,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1190
+  /* "adios.pyx":1382
  *             nsteps = self.file.last_step - from_steps + 1
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
@@ -18425,12 +21510,12 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
     __pyx_t_7 = (((PyObject *)__pyx_v_self->dtype) != Py_None);
     if (unlikely(!(__pyx_t_7 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Data_type_is_not_supported_yet);
-      __PYX_ERR(0, 1190, __pyx_L1_error)
+      __PYX_ERR(0, 1382, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1192
+  /* "adios.pyx":1384
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -18443,27 +21528,27 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
     __pyx_t_7 = __pyx_t_8;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1192, __pyx_L1_error)
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1384, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1192, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1384, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_7 = __pyx_t_8;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1193
+    /* "adios.pyx":1385
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))             # <<<<<<<<<<<<<<
  * 
  *         if not isinstance(points, tuple):
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1193, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_from_steps);
     __Pyx_GIVEREF(__pyx_v_from_steps);
@@ -18471,22 +21556,22 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
     __Pyx_INCREF(__pyx_v_nsteps);
     __Pyx_GIVEREF(__pyx_v_nsteps);
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_nsteps);
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1193, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1193, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1193, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 1193, __pyx_L1_error)
+    __PYX_ERR(0, 1385, __pyx_L1_error)
 
-    /* "adios.pyx":1192
+    /* "adios.pyx":1384
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -18495,7 +21580,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1195
+  /* "adios.pyx":1387
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
@@ -18506,14 +21591,14 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
   __pyx_t_8 = ((!(__pyx_t_7 != 0)) != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1196
+    /* "adios.pyx":1388
  * 
  *         if not isinstance(points, tuple):
  *             points = (points,)             # <<<<<<<<<<<<<<
  * 
  *         if len(points) > 1:
  */
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1196, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1388, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_points);
     __Pyx_GIVEREF(__pyx_v_points);
@@ -18521,7 +21606,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
     __Pyx_DECREF_SET(__pyx_v_points, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":1195
+    /* "adios.pyx":1387
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
@@ -18530,7 +21615,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1198
+  /* "adios.pyx":1390
  *             points = (points,)
  * 
  *         if len(points) > 1:             # <<<<<<<<<<<<<<
@@ -18539,13 +21624,13 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   if (unlikely(__pyx_v_points == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1198, __pyx_L1_error)
+    __PYX_ERR(0, 1390, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1198, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1390, __pyx_L1_error)
   __pyx_t_8 = ((__pyx_t_5 > 1) != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1199
+    /* "adios.pyx":1391
  * 
  *         if len(points) > 1:
  *             plen = len(points[0])             # <<<<<<<<<<<<<<
@@ -18554,86 +21639,86 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
     if (unlikely(__pyx_v_points == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1199, __pyx_L1_error)
+      __PYX_ERR(0, 1391, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_points, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1199, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_points, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1391, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1199, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1391, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_plen = __pyx_t_5;
 
-    /* "adios.pyx":1200
+    /* "adios.pyx":1392
  *         if len(points) > 1:
  *             plen = len(points[0])
  *             if not all([len(x) == plen for x in points]):             # <<<<<<<<<<<<<<
  *                 raise IndexError('All points must have the same length %r' % (points,))
  * 
  */
-    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
+    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     if (unlikely(__pyx_v_points == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      __PYX_ERR(0, 1200, __pyx_L1_error)
+      __PYX_ERR(0, 1392, __pyx_L1_error)
     }
     __pyx_t_3 = __pyx_v_points; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     for (;;) {
       if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1392, __pyx_L1_error)
       #else
-      __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       #endif
       __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_9 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1200, __pyx_L1_error)
-      __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_t_9 == __pyx_v_plen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_9 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1392, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_t_9 == __pyx_v_plen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1200, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1200, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1392, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_7 = ((!__pyx_t_8) != 0);
     if (__pyx_t_7) {
 
-      /* "adios.pyx":1201
+      /* "adios.pyx":1393
  *             plen = len(points[0])
  *             if not all([len(x) == plen for x in points]):
  *                 raise IndexError('All points must have the same length %r' % (points,))             # <<<<<<<<<<<<<<
  * 
  *         cpdef uint64_t ndim = self.ndim
  */
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1201, __pyx_L1_error)
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1393, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_v_points);
       __Pyx_GIVEREF(__pyx_v_points);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_points);
-      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_All_points_must_have_the_same_le, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1201, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_All_points_must_have_the_same_le, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1393, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1201, __pyx_L1_error)
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1393, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_GIVEREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1201, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1393, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1201, __pyx_L1_error)
+      __PYX_ERR(0, 1393, __pyx_L1_error)
 
-      /* "adios.pyx":1200
+      /* "adios.pyx":1392
  *         if len(points) > 1:
  *             plen = len(points[0])
  *             if not all([len(x) == plen for x in points]):             # <<<<<<<<<<<<<<
@@ -18642,7 +21727,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
     }
 
-    /* "adios.pyx":1198
+    /* "adios.pyx":1390
  *             points = (points,)
  * 
  *         if len(points) > 1:             # <<<<<<<<<<<<<<
@@ -18651,7 +21736,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1203
+  /* "adios.pyx":1395
  *                 raise IndexError('All points must have the same length %r' % (points,))
  * 
  *         cpdef uint64_t ndim = self.ndim             # <<<<<<<<<<<<<<
@@ -18661,7 +21746,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
   __pyx_t_10 = __pyx_v_self->ndim;
   __pyx_v_ndim = __pyx_t_10;
 
-  /* "adios.pyx":1204
+  /* "adios.pyx":1396
  * 
  *         cpdef uint64_t ndim = self.ndim
  *         cpdef uint64_t npoints = len(points)             # <<<<<<<<<<<<<<
@@ -18670,87 +21755,87 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   if (unlikely(__pyx_v_points == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1204, __pyx_L1_error)
+    __PYX_ERR(0, 1396, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1204, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1396, __pyx_L1_error)
   __pyx_v_npoints = __pyx_t_5;
 
-  /* "adios.pyx":1207
+  /* "adios.pyx":1399
  *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
  * 
  *         cdef np.ndarray nppoints = np.array(points, dtype=np.int64, order='C')             # <<<<<<<<<<<<<<
  *         ##print 'nppoints.ndim = %r' % (nppoints.ndim)
  *         ##print 'nppoints.shape = (%r, %r)' % (nppoints.shape[0], nppoints.shape[1])
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_points);
   __Pyx_GIVEREF(__pyx_v_points);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_points);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1207, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 1207, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1207, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 1399, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1207, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1399, __pyx_L1_error)
   __pyx_v_nppoints = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios.pyx":1211
+  /* "adios.pyx":1403
  *         ##print 'nppoints.shape = (%r, %r)' % (nppoints.shape[0], nppoints.shape[1])
  * 
  *         cdef np.ndarray var = np.zeros((npoints * nsteps,), dtype=self.dtype)             # <<<<<<<<<<<<<<
  *         ##print 'nppoints.ndim = %r' % (nppoints.ndim)
  *         ##print 'nppoints.shape = (%r, %r)' % (nppoints.shape[0], nppoints.shape[1])
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_npoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_npoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_v_nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_v_nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
   __pyx_t_4 = 0;
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1211, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1211, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1403, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1211, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1403, __pyx_L1_error)
   __pyx_v_var = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1216
+  /* "adios.pyx":1408
  * 
  *         cdef ADIOS_SELECTION * sel
  *         sel = adios_selection_points (ndim, npoints, <uint64_t *> nppoints.data)             # <<<<<<<<<<<<<<
@@ -18759,18 +21844,18 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   __pyx_v_sel = adios_selection_points(__pyx_v_ndim, __pyx_v_npoints, ((uint64_t *)__pyx_v_nppoints->data));
 
-  /* "adios.pyx":1218
+  /* "adios.pyx":1410
  *         sel = adios_selection_points (ndim, npoints, <uint64_t *> nppoints.data)
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)             # <<<<<<<<<<<<<<
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  */
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1218, __pyx_L1_error)
-  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1218, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1410, __pyx_L1_error)
+  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1410, __pyx_L1_error)
   adios_schedule_read_byid(__pyx_v_self->file->fp, __pyx_v_sel, __pyx_v_self->vp->varid, __pyx_t_10, __pyx_t_11, ((void *)__pyx_v_var->data));
 
-  /* "adios.pyx":1219
+  /* "adios.pyx":1411
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
@@ -18779,7 +21864,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios.pyx":1220
+  /* "adios.pyx":1412
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)             # <<<<<<<<<<<<<<
@@ -18788,7 +21873,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
  */
   adios_selection_delete(__pyx_v_sel);
 
-  /* "adios.pyx":1222
+  /* "adios.pyx":1414
  *         adios_selection_delete(sel)
  * 
  *         return var             # <<<<<<<<<<<<<<
@@ -18800,7 +21885,7 @@ static PyObject *__pyx_f_5adios_3var_read_points(struct __pyx_obj_5adios_var *__
   __pyx_r = ((PyObject *)__pyx_v_var);
   goto __pyx_L0;
 
-  /* "adios.pyx":1168
+  /* "adios.pyx":1360
  *         self.nsteps = self.vp.nsteps
  * 
  *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -18874,7 +21959,7 @@ static PyObject *__pyx_pw_5adios_3var_9read_points(PyObject *__pyx_v_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_points") < 0)) __PYX_ERR(0, 1168, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_points") < 0)) __PYX_ERR(0, 1360, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -18891,13 +21976,13 @@ static PyObject *__pyx_pw_5adios_3var_9read_points(PyObject *__pyx_v_self, PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_points", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1168, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_points", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1360, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyTuple_Type), 1, "points", 1))) __PYX_ERR(0, 1168, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyTuple_Type), 1, "points", 1))) __PYX_ERR(0, 1360, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_3var_8read_points(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_points, __pyx_v_from_steps, __pyx_v_nsteps);
 
   /* function exit code */
@@ -18920,7 +22005,7 @@ static PyObject *__pyx_pf_5adios_3var_8read_points(struct __pyx_obj_5adios_var *
   __pyx_t_2.points = __pyx_v_points;
   __pyx_t_2.from_steps = __pyx_v_from_steps;
   __pyx_t_2.nsteps = __pyx_v_nsteps;
-  __pyx_t_1 = __pyx_vtabptr_5adios_var->read_points(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_5adios_var->read_points(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1360, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -18937,7 +22022,7 @@ static PyObject *__pyx_pf_5adios_3var_8read_points(struct __pyx_obj_5adios_var *
   return __pyx_r;
 }
 
-/* "adios.pyx":1224
+/* "adios.pyx":1416
  *         return var
  * 
  *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -18982,11 +22067,11 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_writeblock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1224, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_writeblock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1416, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_3var_11read_writeblock)) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1224, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
@@ -19001,7 +22086,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1224, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1416, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_5) {
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -19015,7 +22100,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
       __Pyx_GIVEREF(__pyx_v_nsteps);
       PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_nsteps);
       __pyx_t_3 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1224, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19027,7 +22112,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":1240
+  /* "adios.pyx":1432
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -19038,7 +22123,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (__pyx_t_9) {
 
-    /* "adios.pyx":1241
+    /* "adios.pyx":1433
  *         """
  *         if from_steps is None:
  *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
@@ -19048,7 +22133,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "adios.pyx":1240
+    /* "adios.pyx":1432
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -19057,7 +22142,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   }
 
-  /* "adios.pyx":1243
+  /* "adios.pyx":1435
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -19068,25 +22153,25 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
   __pyx_t_8 = (__pyx_t_9 != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1244
+    /* "adios.pyx":1436
  * 
  *         if nsteps is None:
  *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1244, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1436, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1244, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1436, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1244, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1436, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_nsteps, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1243
+    /* "adios.pyx":1435
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -19095,7 +22180,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   }
 
-  /* "adios.pyx":1246
+  /* "adios.pyx":1438
  *             nsteps = self.file.last_step - from_steps + 1
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
@@ -19107,12 +22192,12 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
     __pyx_t_8 = (((PyObject *)__pyx_v_self->dtype) != Py_None);
     if (unlikely(!(__pyx_t_8 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Data_type_is_not_supported_yet);
-      __PYX_ERR(0, 1246, __pyx_L1_error)
+      __PYX_ERR(0, 1438, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1247
+  /* "adios.pyx":1439
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)             # <<<<<<<<<<<<<<
@@ -19122,19 +22207,19 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_rank < __pyx_v_self->vp->sum_nblocks) != 0))) {
-      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->vp->sum_nblocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1247, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->vp->sum_nblocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1439, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Rank_is_out_of_range_nblock_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1247, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Rank_is_out_of_range_nblock_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       PyErr_SetObject(PyExc_AssertionError, __pyx_t_2);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __PYX_ERR(0, 1247, __pyx_L1_error)
+      __PYX_ERR(0, 1439, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1249
+  /* "adios.pyx":1441
  *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -19147,27 +22232,27 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
     __pyx_t_8 = __pyx_t_9;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_2 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1249, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1249, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1249, __pyx_L1_error)
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1249, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_8 = __pyx_t_9;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1250
+    /* "adios.pyx":1442
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))             # <<<<<<<<<<<<<<
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  */
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1250, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1442, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_from_steps);
     __Pyx_GIVEREF(__pyx_v_from_steps);
@@ -19175,22 +22260,22 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
     __Pyx_INCREF(__pyx_v_nsteps);
     __Pyx_GIVEREF(__pyx_v_nsteps);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_nsteps);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1442, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1250, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1442, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1442, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 1250, __pyx_L1_error)
+    __PYX_ERR(0, 1442, __pyx_L1_error)
 
-    /* "adios.pyx":1249
+    /* "adios.pyx":1441
  *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -19199,48 +22284,48 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   }
 
-  /* "adios.pyx":1252
+  /* "adios.pyx":1444
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]             # <<<<<<<<<<<<<<
  *         if (nsteps>1):
  *             shape.insert(0, nsteps)
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1252, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1444, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_10 = __pyx_v_self->vp->ndim;
   for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
     __pyx_v_i = __pyx_t_11;
-    __pyx_t_4 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_v_rank]).count[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1252, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_v_rank]).count[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 1252, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 1444, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __pyx_v_shape = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1253
+  /* "adios.pyx":1445
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  *         if (nsteps>1):             # <<<<<<<<<<<<<<
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1253, __pyx_L1_error)
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1253, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1445, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1445, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1254
+    /* "adios.pyx":1446
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  *         if (nsteps>1):
  *             shape.insert(0, nsteps)             # <<<<<<<<<<<<<<
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  */
-    __pyx_t_12 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1254, __pyx_L1_error)
+    __pyx_t_12 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1446, __pyx_L1_error)
 
-    /* "adios.pyx":1253
+    /* "adios.pyx":1445
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  *         if (nsteps>1):             # <<<<<<<<<<<<<<
@@ -19249,36 +22334,36 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   }
 
-  /* "adios.pyx":1255
+  /* "adios.pyx":1447
  *         if (nsteps>1):
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1255, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_shape);
   __Pyx_GIVEREF(__pyx_v_shape);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1255, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1255, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1255, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1447, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1447, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1255, __pyx_L1_error)
+  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1447, __pyx_L1_error)
   __pyx_v_var = ((PyArrayObject *)__pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "adios.pyx":1258
+  /* "adios.pyx":1450
  * 
  *         cdef ADIOS_SELECTION * sel
  *         sel = adios_selection_writeblock (rank)             # <<<<<<<<<<<<<<
@@ -19287,18 +22372,18 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   __pyx_v_sel = adios_selection_writeblock(__pyx_v_rank);
 
-  /* "adios.pyx":1260
+  /* "adios.pyx":1452
  *         sel = adios_selection_writeblock (rank)
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)             # <<<<<<<<<<<<<<
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  */
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1260, __pyx_L1_error)
-  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1260, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1452, __pyx_L1_error)
+  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1452, __pyx_L1_error)
   adios_schedule_read_byid(__pyx_v_self->file->fp, __pyx_v_sel, __pyx_v_self->vp->varid, __pyx_t_10, __pyx_t_11, ((void *)__pyx_v_var->data));
 
-  /* "adios.pyx":1261
+  /* "adios.pyx":1453
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
@@ -19307,7 +22392,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios.pyx":1262
+  /* "adios.pyx":1454
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)             # <<<<<<<<<<<<<<
@@ -19316,7 +22401,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
  */
   adios_selection_delete(__pyx_v_sel);
 
-  /* "adios.pyx":1263
+  /* "adios.pyx":1455
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  *         return var             # <<<<<<<<<<<<<<
@@ -19328,7 +22413,7 @@ static PyObject *__pyx_f_5adios_3var_read_writeblock(struct __pyx_obj_5adios_var
   __pyx_r = ((PyObject *)__pyx_v_var);
   goto __pyx_L0;
 
-  /* "adios.pyx":1224
+  /* "adios.pyx":1416
  *         return var
  * 
  *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -19398,7 +22483,7 @@ static PyObject *__pyx_pw_5adios_3var_11read_writeblock(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_writeblock") < 0)) __PYX_ERR(0, 1224, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_writeblock") < 0)) __PYX_ERR(0, 1416, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -19409,13 +22494,13 @@ static PyObject *__pyx_pw_5adios_3var_11read_writeblock(PyObject *__pyx_v_self,
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1224, __pyx_L3_error)
+    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1416, __pyx_L3_error)
     __pyx_v_from_steps = values[1];
     __pyx_v_nsteps = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_writeblock", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1224, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_writeblock", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1416, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19438,7 +22523,7 @@ static PyObject *__pyx_pf_5adios_3var_10read_writeblock(struct __pyx_obj_5adios_
   __pyx_t_2.__pyx_n = 2;
   __pyx_t_2.from_steps = __pyx_v_from_steps;
   __pyx_t_2.nsteps = __pyx_v_nsteps;
-  __pyx_t_1 = __pyx_vtabptr_5adios_var->read_writeblock(__pyx_v_self, __pyx_v_rank, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1224, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_5adios_var->read_writeblock(__pyx_v_self, __pyx_v_rank, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1416, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -19455,7 +22540,7 @@ static PyObject *__pyx_pf_5adios_3var_10read_writeblock(struct __pyx_obj_5adios_
   return __pyx_r;
 }
 
-/* "adios.pyx":1265
+/* "adios.pyx":1457
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -19469,7 +22554,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   PyObject *__pyx_v_count = ((PyObject*)__pyx_empty_tuple);
   PyObject *__pyx_v_scalar = ((PyObject*)__pyx_empty_tuple);
 
-  /* "adios.pyx":1266
+  /* "adios.pyx":1458
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
  *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
@@ -19536,7 +22621,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   __Pyx_INCREF(__pyx_v_from_steps);
   __Pyx_INCREF(__pyx_v_nsteps);
 
-  /* "adios.pyx":1265
+  /* "adios.pyx":1457
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -19547,7 +22632,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1457, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_3var_13read)) {
       __Pyx_XDECREF(__pyx_r);
@@ -19564,7 +22649,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
           __pyx_t_5 = 1;
         }
       }
-      __pyx_t_6 = PyTuple_New(7+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1265, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(7+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1457, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       if (__pyx_t_4) {
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -19590,7 +22675,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       __Pyx_INCREF(__pyx_v_step_scalar);
       __Pyx_GIVEREF(__pyx_v_step_scalar);
       PyTuple_SET_ITEM(__pyx_t_6, 6+__pyx_t_5, __pyx_v_step_scalar);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1265, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1457, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -19602,7 +22687,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":1315
+  /* "adios.pyx":1507
  * 
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -19613,7 +22698,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1316
+    /* "adios.pyx":1508
  *         """
  *         if from_steps is None:
  *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
@@ -19623,7 +22708,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "adios.pyx":1315
+    /* "adios.pyx":1507
  * 
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -19632,7 +22717,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1318
+  /* "adios.pyx":1510
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -19643,25 +22728,25 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   __pyx_t_7 = (__pyx_t_8 != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1319
+    /* "adios.pyx":1511
  * 
  *         if nsteps is None:
  *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1319, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1319, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1511, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1319, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1511, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_nsteps, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1318
+    /* "adios.pyx":1510
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -19670,7 +22755,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1321
+  /* "adios.pyx":1513
  *             nsteps = self.file.last_step - from_steps + 1
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
@@ -19682,12 +22767,12 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __pyx_t_7 = (((PyObject *)__pyx_v_self->dtype) != Py_None);
     if (unlikely(!(__pyx_t_7 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Data_type_is_not_supported_yet);
-      __PYX_ERR(0, 1321, __pyx_L1_error)
+      __PYX_ERR(0, 1513, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1323
+  /* "adios.pyx":1515
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -19700,27 +22785,27 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __pyx_t_7 = __pyx_t_8;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1515, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1515, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error)
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1515, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1323, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1515, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_7 = __pyx_t_8;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1324
+    /* "adios.pyx":1516
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))             # <<<<<<<<<<<<<<
  * 
  *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1324, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1516, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_from_steps);
     __Pyx_GIVEREF(__pyx_v_from_steps);
@@ -19728,22 +22813,22 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __Pyx_INCREF(__pyx_v_nsteps);
     __Pyx_GIVEREF(__pyx_v_nsteps);
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_nsteps);
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1324, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1516, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1324, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1516, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1324, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1516, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 1324, __pyx_L1_error)
+    __PYX_ERR(0, 1516, __pyx_L1_error)
 
-    /* "adios.pyx":1323
+    /* "adios.pyx":1515
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -19752,62 +22837,62 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1326
+  /* "adios.pyx":1518
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]             # <<<<<<<<<<<<<<
  *         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)
  * 
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_9 = __pyx_v_self->vp->ndim;
   for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
     __pyx_v_i = __pyx_t_10;
-    __pyx_t_3 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1326, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1518, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1326, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1518, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __pyx_v_lshape = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1327
+  /* "adios.pyx":1519
  * 
  *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]
  *         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)             # <<<<<<<<<<<<<<
  * 
  *         cdef np.ndarray npoffset
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_lshape);
   __Pyx_GIVEREF(__pyx_v_lshape);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_lshape);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1327, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1327, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1519, __pyx_L1_error)
   __pyx_v_npshape = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios.pyx":1330
+  /* "adios.pyx":1522
  * 
  *         cdef np.ndarray npoffset
  *         if len(offset) == 0:             # <<<<<<<<<<<<<<
@@ -19816,20 +22901,20 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   if (unlikely(__pyx_v_offset == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1330, __pyx_L1_error)
+    __PYX_ERR(0, 1522, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1330, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1522, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1331
+    /* "adios.pyx":1523
  *         cdef np.ndarray npoffset
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()             # <<<<<<<<<<<<<<
  *             npoffset.fill(0)
  *         else:
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npshape), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npshape), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1523, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -19842,32 +22927,32 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1331, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1523, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1331, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1523, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1331, __pyx_L1_error)
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1523, __pyx_L1_error)
     __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "adios.pyx":1332
+    /* "adios.pyx":1524
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()
  *             npoffset.fill(0)             # <<<<<<<<<<<<<<
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npoffset), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1332, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npoffset), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1524, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1524, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":1330
+    /* "adios.pyx":1522
  * 
  *         cdef np.ndarray npoffset
  *         if len(offset) == 0:             # <<<<<<<<<<<<<<
@@ -19877,7 +22962,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     goto __pyx_L10;
   }
 
-  /* "adios.pyx":1334
+  /* "adios.pyx":1526
  *             npoffset.fill(0)
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)             # <<<<<<<<<<<<<<
@@ -19885,37 +22970,37 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  *         cdef np.ndarray npcount
  */
   /*else*/ {
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_offset);
     __Pyx_GIVEREF(__pyx_v_offset);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_offset);
-    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1334, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1526, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1334, __pyx_L1_error)
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1526, __pyx_L1_error)
     __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_6);
     __pyx_t_6 = 0;
   }
   __pyx_L10:;
 
-  /* "adios.pyx":1337
+  /* "adios.pyx":1529
  * 
  *         cdef np.ndarray npcount
  *         if len(count) == 0:             # <<<<<<<<<<<<<<
@@ -19924,26 +23009,26 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   if (unlikely(__pyx_v_count == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1337, __pyx_L1_error)
+    __PYX_ERR(0, 1529, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1529, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1338
+    /* "adios.pyx":1530
  *         cdef np.ndarray npcount
  *         if len(count) == 0:
  *             npcount = npshape - npoffset             # <<<<<<<<<<<<<<
  *         else:
  *             npcount = np.array(count, dtype=np.int64)
  */
-    __pyx_t_6 = PyNumber_Subtract(((PyObject *)__pyx_v_npshape), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1338, __pyx_L1_error)
+    __pyx_t_6 = PyNumber_Subtract(((PyObject *)__pyx_v_npshape), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1530, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1338, __pyx_L1_error)
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1530, __pyx_L1_error)
     __pyx_v_npcount = ((PyArrayObject *)__pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "adios.pyx":1337
+    /* "adios.pyx":1529
  * 
  *         cdef np.ndarray npcount
  *         if len(count) == 0:             # <<<<<<<<<<<<<<
@@ -19953,7 +23038,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     goto __pyx_L11;
   }
 
-  /* "adios.pyx":1340
+  /* "adios.pyx":1532
  *             npcount = npshape - npoffset
  *         else:
  *             npcount = np.array(count, dtype=np.int64)             # <<<<<<<<<<<<<<
@@ -19961,37 +23046,37 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  *         if len(scalar) == 0:
  */
   /*else*/ {
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_v_count);
     __Pyx_GIVEREF(__pyx_v_count);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_count);
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1340, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1532, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1340, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1532, __pyx_L1_error)
     __pyx_v_npcount = ((PyArrayObject *)__pyx_t_3);
     __pyx_t_3 = 0;
   }
   __pyx_L11:;
 
-  /* "adios.pyx":1342
+  /* "adios.pyx":1534
  *             npcount = np.array(count, dtype=np.int64)
  * 
  *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
@@ -20000,29 +23085,29 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   if (unlikely(__pyx_v_scalar == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1342, __pyx_L1_error)
+    __PYX_ERR(0, 1534, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1342, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1534, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1343
+    /* "adios.pyx":1535
  * 
  *         if len(scalar) == 0:
  *             scalar = tuple((False,) * len(npshape))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(npoffset):
  */
-    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1343, __pyx_L1_error)
-    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1343, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1535, __pyx_L1_error)
+    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1535, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = PyNumber_Multiply(__pyx_tuple__29, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Multiply(__pyx_tuple__30, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1535, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_scalar, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1342
+    /* "adios.pyx":1534
  *             npcount = np.array(count, dtype=np.int64)
  * 
  *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
@@ -20031,44 +23116,44 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1345
+  /* "adios.pyx":1537
  *             scalar = tuple((False,) * len(npshape))
  * 
  *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
  */
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1345, __pyx_L1_error)
-  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1345, __pyx_L1_error)
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1537, __pyx_L1_error)
+  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1537, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1346
+    /* "adios.pyx":1538
  * 
  *         if len(npshape) != len(npoffset):
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(npcount):
  */
-    __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1346, __pyx_L1_error)
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
+    __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1538, __pyx_L1_error)
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1346, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1538, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1346, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1538, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1346, __pyx_L1_error)
+    __PYX_ERR(0, 1538, __pyx_L1_error)
 
-    /* "adios.pyx":1345
+    /* "adios.pyx":1537
  *             scalar = tuple((False,) * len(npshape))
  * 
  *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
@@ -20077,44 +23162,44 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1348
+  /* "adios.pyx":1540
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
  *         if len(npshape) != len(npcount):             # <<<<<<<<<<<<<<
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  */
-  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1348, __pyx_L1_error)
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1348, __pyx_L1_error)
+  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1540, __pyx_L1_error)
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1540, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_11 != __pyx_t_5) != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1349
+    /* "adios.pyx":1541
  * 
  *         if len(npshape) != len(npcount):
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(scalar):
  */
-    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1349, __pyx_L1_error)
-    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1349, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1541, __pyx_L1_error)
+    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1541, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1349, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1349, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1541, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1349, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 1349, __pyx_L1_error)
+    __PYX_ERR(0, 1541, __pyx_L1_error)
 
-    /* "adios.pyx":1348
+    /* "adios.pyx":1540
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
  *         if len(npshape) != len(npcount):             # <<<<<<<<<<<<<<
@@ -20123,23 +23208,23 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1351
+  /* "adios.pyx":1543
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  *         if len(npshape) != len(scalar):             # <<<<<<<<<<<<<<
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  */
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1351, __pyx_L1_error)
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1543, __pyx_L1_error)
   if (unlikely(__pyx_v_scalar == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1351, __pyx_L1_error)
+    __PYX_ERR(0, 1543, __pyx_L1_error)
   }
-  __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1351, __pyx_L1_error)
+  __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1543, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1352
+    /* "adios.pyx":1544
  * 
  *         if len(npshape) != len(scalar):
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))             # <<<<<<<<<<<<<<
@@ -20148,27 +23233,27 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
     if (unlikely(__pyx_v_scalar == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(0, 1352, __pyx_L1_error)
+      __PYX_ERR(0, 1544, __pyx_L1_error)
     }
-    __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1352, __pyx_L1_error)
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1352, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1544, __pyx_L1_error)
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Scalar_dimension_mismatch_scalar, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1352, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Scalar_dimension_mismatch_scalar, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1544, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1352, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1352, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1544, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1352, __pyx_L1_error)
+    __PYX_ERR(0, 1544, __pyx_L1_error)
 
-    /* "adios.pyx":1351
+    /* "adios.pyx":1543
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  *         if len(npshape) != len(scalar):             # <<<<<<<<<<<<<<
@@ -20177,18 +23262,18 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1354
+  /* "adios.pyx":1546
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
  *             raise IndexError('Requested is larger than the shape.')
  * 
  */
-  __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_npcount), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_npcount), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = PyObject_RichCompare(((PyObject *)__pyx_v_npshape), __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __pyx_t_6 = PyObject_RichCompare(((PyObject *)__pyx_v_npshape), __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1546, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_6 = NULL;
@@ -20202,31 +23287,31 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1354, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1546, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1354, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1546, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1354, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1546, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_7) {
 
-    /* "adios.pyx":1355
+    /* "adios.pyx":1547
  * 
  *         if (npshape < npcount + npoffset).any():
  *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1355, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1547, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1355, __pyx_L1_error)
+    __PYX_ERR(0, 1547, __pyx_L1_error)
 
-    /* "adios.pyx":1354
+    /* "adios.pyx":1546
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
@@ -20235,16 +23320,16 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1357
+  /* "adios.pyx":1549
  *             raise IndexError('Requested is larger than the shape.')
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]             # <<<<<<<<<<<<<<
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):
  *             shape.insert(0, nsteps)
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1357, __pyx_L1_error)
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1357, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_npcount));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_npcount));
@@ -20252,16 +23337,16 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   __Pyx_INCREF(__pyx_v_scalar);
   __Pyx_GIVEREF(__pyx_v_scalar);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_scalar);
-  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1357, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
     __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_11 = 0;
     __pyx_t_12 = NULL;
   } else {
-    __pyx_t_11 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1357, __pyx_L1_error)
+    __pyx_t_11 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1549, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_12 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1357, __pyx_L1_error)
+    __pyx_t_12 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1549, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   for (;;) {
@@ -20269,17 +23354,17 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1357, __pyx_L1_error)
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1549, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1357, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1549, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       } else {
         if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1357, __pyx_L1_error)
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1549, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1357, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1549, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       }
@@ -20289,7 +23374,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1357, __pyx_L1_error)
+          else __PYX_ERR(0, 1549, __pyx_L1_error)
         }
         break;
       }
@@ -20305,7 +23390,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 1357, __pyx_L1_error)
+        __PYX_ERR(0, 1549, __pyx_L1_error)
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -20318,15 +23403,15 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       __Pyx_INCREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_t_4);
       #else
-      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error)
+      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1549, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1357, __pyx_L1_error)
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1549, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       #endif
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_13 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1357, __pyx_L1_error)
+      __pyx_t_13 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1549, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
@@ -20334,7 +23419,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       __Pyx_GOTREF(__pyx_t_2);
       index = 1; __pyx_t_4 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_4)) goto __pyx_L19_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_4);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) __PYX_ERR(0, 1357, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) __PYX_ERR(0, 1549, __pyx_L1_error)
       __pyx_t_14 = NULL;
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       goto __pyx_L20_unpacking_done;
@@ -20342,32 +23427,32 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 1357, __pyx_L1_error)
+      __PYX_ERR(0, 1549, __pyx_L1_error)
       __pyx_L20_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_2);
     __pyx_t_2 = 0;
     __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1357, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1549, __pyx_L1_error)
     __pyx_t_8 = ((!__pyx_t_7) != 0);
     if (__pyx_t_8) {
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_x))) __PYX_ERR(0, 1357, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_x))) __PYX_ERR(0, 1549, __pyx_L1_error)
     }
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_shape = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":1358
+  /* "adios.pyx":1550
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):             # <<<<<<<<<<<<<<
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  */
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1358, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1358, __pyx_L1_error)
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1550, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1550, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (!__pyx_t_7) {
   } else {
@@ -20380,22 +23465,22 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __pyx_t_8 = __pyx_t_7;
     goto __pyx_L23_bool_binop_done;
   }
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_step_scalar); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1358, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_step_scalar); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1550, __pyx_L1_error)
   __pyx_t_15 = ((!__pyx_t_7) != 0);
   __pyx_t_8 = __pyx_t_15;
   __pyx_L23_bool_binop_done:;
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1359
+    /* "adios.pyx":1551
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):
  *             shape.insert(0, nsteps)             # <<<<<<<<<<<<<<
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  */
-    __pyx_t_16 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 1359, __pyx_L1_error)
+    __pyx_t_16 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 1551, __pyx_L1_error)
 
-    /* "adios.pyx":1358
+    /* "adios.pyx":1550
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):             # <<<<<<<<<<<<<<
@@ -20404,56 +23489,56 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1360
+  /* "adios.pyx":1552
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         if len(shape) > 0:
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1360, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1552, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1360, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1552, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1360, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1552, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_shape);
   __Pyx_GIVEREF(__pyx_v_shape);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1360, __pyx_L1_error)
+  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1552, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1360, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1360, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1552, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1552, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1360, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1552, __pyx_L1_error)
   __pyx_v_var = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios.pyx":1362
+  /* "adios.pyx":1554
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  *         if len(shape) > 0:             # <<<<<<<<<<<<<<
  *             var[:] = fill
  * 
  */
-  __pyx_t_11 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1362, __pyx_L1_error)
+  __pyx_t_11 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1554, __pyx_L1_error)
   __pyx_t_8 = ((__pyx_t_11 > 0) != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1363
+    /* "adios.pyx":1555
  * 
  *         if len(shape) > 0:
  *             var[:] = fill             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_var), __pyx_v_fill, 0, 0, NULL, NULL, &__pyx_slice__31, 0, 0, 1) < 0) __PYX_ERR(0, 1363, __pyx_L1_error)
+    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_var), __pyx_v_fill, 0, 0, NULL, NULL, &__pyx_slice__32, 0, 0, 1) < 0) __PYX_ERR(0, 1555, __pyx_L1_error)
 
-    /* "adios.pyx":1362
+    /* "adios.pyx":1554
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  *         if len(shape) > 0:             # <<<<<<<<<<<<<<
@@ -20462,7 +23547,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1366
+  /* "adios.pyx":1558
  * 
  *         cdef ADIOS_SELECTION * sel
  *         sel = adios_selection_boundingbox (self.vp.ndim, <uint64_t *> npoffset.data, <uint64_t *> npcount.data)             # <<<<<<<<<<<<<<
@@ -20471,18 +23556,18 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   __pyx_v_sel = adios_selection_boundingbox(__pyx_v_self->vp->ndim, ((uint64_t *)__pyx_v_npoffset->data), ((uint64_t *)__pyx_v_npcount->data));
 
-  /* "adios.pyx":1371
+  /* "adios.pyx":1563
  *         ##print 'npcount', npcount
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)             # <<<<<<<<<<<<<<
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  */
-  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1371, __pyx_L1_error)
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1371, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1563, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1563, __pyx_L1_error)
   adios_schedule_read_byid(__pyx_v_self->file->fp, __pyx_v_sel, __pyx_v_self->vp->varid, __pyx_t_9, __pyx_t_10, ((void *)__pyx_v_var->data));
 
-  /* "adios.pyx":1372
+  /* "adios.pyx":1564
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
@@ -20491,7 +23576,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios.pyx":1373
+  /* "adios.pyx":1565
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)             # <<<<<<<<<<<<<<
@@ -20500,7 +23585,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   adios_selection_delete(__pyx_v_sel);
 
-  /* "adios.pyx":1375
+  /* "adios.pyx":1567
  *         adios_selection_delete(sel)
  * 
  *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
@@ -20510,7 +23595,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
   __pyx_t_8 = ((__pyx_v_var->nd == 0) != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1376
+    /* "adios.pyx":1568
  * 
  *         if (var.ndim == 0):
  *             return np.asscalar(var)             # <<<<<<<<<<<<<<
@@ -20518,9 +23603,9 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  *             return var
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1376, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1568, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1376, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1568, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -20534,16 +23619,16 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_var)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1376, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_var)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1568, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1376, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1568, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(((PyObject *)__pyx_v_var));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_var));
       PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_var));
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1376, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1568, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
@@ -20552,7 +23637,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "adios.pyx":1375
+    /* "adios.pyx":1567
  *         adios_selection_delete(sel)
  * 
  *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
@@ -20561,7 +23646,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
  */
   }
 
-  /* "adios.pyx":1378
+  /* "adios.pyx":1570
  *             return np.asscalar(var)
  *         else:
  *             return var             # <<<<<<<<<<<<<<
@@ -20575,7 +23660,7 @@ static PyObject *__pyx_f_5adios_3var_read(struct __pyx_obj_5adios_var *__pyx_v_s
     goto __pyx_L0;
   }
 
-  /* "adios.pyx":1265
+  /* "adios.pyx":1457
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -20631,7 +23716,7 @@ static PyObject *__pyx_pw_5adios_3var_13read(PyObject *__pyx_v_self, PyObject *_
     values[1] = ((PyObject*)__pyx_empty_tuple);
     values[2] = ((PyObject*)__pyx_empty_tuple);
 
-    /* "adios.pyx":1266
+    /* "adios.pyx":1458
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
  *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
@@ -20695,7 +23780,7 @@ static PyObject *__pyx_pw_5adios_3var_13read(PyObject *__pyx_v_self, PyObject *_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 1265, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 1457, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -20720,18 +23805,18 @@ static PyObject *__pyx_pw_5adios_3var_13read(PyObject *__pyx_v_self, PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 0, 0, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1265, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read", 0, 0, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1457, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_offset), (&PyTuple_Type), 1, "offset", 1))) __PYX_ERR(0, 1265, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1265, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scalar), (&PyTuple_Type), 1, "scalar", 1))) __PYX_ERR(0, 1265, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_offset), (&PyTuple_Type), 1, "offset", 1))) __PYX_ERR(0, 1457, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1457, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scalar), (&PyTuple_Type), 1, "scalar", 1))) __PYX_ERR(0, 1457, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_3var_12read(((struct __pyx_obj_5adios_var *)__pyx_v_self), __pyx_v_offset, __pyx_v_count, __pyx_v_scalar, __pyx_v_from_steps, __pyx_v_nsteps, __pyx_v_fill, __pyx_v_step_scalar);
 
-  /* "adios.pyx":1265
+  /* "adios.pyx":1457
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -20763,7 +23848,7 @@ static PyObject *__pyx_pf_5adios_3var_12read(struct __pyx_obj_5adios_var *__pyx_
   __pyx_t_2.nsteps = __pyx_v_nsteps;
   __pyx_t_2.fill = __pyx_v_fill;
   __pyx_t_2.step_scalar = __pyx_v_step_scalar;
-  __pyx_t_1 = __pyx_vtabptr_5adios_var->read(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_5adios_var->read(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -20780,7 +23865,7 @@ static PyObject *__pyx_pf_5adios_3var_12read(struct __pyx_obj_5adios_var *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":1380
+/* "adios.pyx":1572
  *             return var
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -20801,7 +23886,7 @@ static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__py
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1380, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_5adios_3var_15printself)) {
       __Pyx_XDECREF(__pyx_r);
@@ -20817,10 +23902,10 @@ static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__py
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1380, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1380, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -20832,7 +23917,7 @@ static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__py
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios.pyx":1382
+  /* "adios.pyx":1574
  *     cpdef printself(self):
  *         """ Print native ADIOS_VARINFO structure. """
  *         assert self.vp != NULL, 'Not an open variable'             # <<<<<<<<<<<<<<
@@ -20843,32 +23928,32 @@ static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__py
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_variable);
-      __PYX_ERR(0, 1382, __pyx_L1_error)
+      __PYX_ERR(0, 1574, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios.pyx":1383
+  /* "adios.pyx":1575
  *         """ Print native ADIOS_VARINFO structure. """
  *         assert self.vp != NULL, 'Not an open variable'
  *         print ('=== AdiosVariable ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1384
+  /* "adios.pyx":1576
  *         assert self.vp != NULL, 'Not an open variable'
  *         print ('=== AdiosVariable ===')
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  *         printvar(self.vp)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_vp);
   __Pyx_GIVEREF(__pyx_n_s_vp);
@@ -20876,29 +23961,29 @@ static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__py
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1385
+  /* "adios.pyx":1577
  *         print ('=== AdiosVariable ===')
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))             # <<<<<<<<<<<<<<
  *         printvar(self.vp)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->file->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->file->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fp);
   __Pyx_GIVEREF(__pyx_n_s_fp);
@@ -20906,31 +23991,31 @@ static PyObject *__pyx_f_5adios_3var_printself(struct __pyx_obj_5adios_var *__py
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1386
+  /* "adios.pyx":1578
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  *         printvar(self.vp)             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_1 = __pyx_f_5adios_printvar(__pyx_v_self->vp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1386, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_printvar(__pyx_v_self->vp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1380
+  /* "adios.pyx":1572
  *             return var
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -20974,7 +24059,7 @@ static PyObject *__pyx_pf_5adios_3var_14printself(struct __pyx_obj_5adios_var *_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("printself", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_5adios_3var_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1380, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_5adios_3var_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -20991,7 +24076,7 @@ static PyObject *__pyx_pf_5adios_3var_14printself(struct __pyx_obj_5adios_var *_
   return __pyx_r;
 }
 
-/* "adios.pyx":1388
+/* "adios.pyx":1580
  *         printvar(self.vp)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -21023,7 +24108,7 @@ static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1389
+  /* "adios.pyx":1581
  * 
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \             # <<<<<<<<<<<<<<
@@ -21032,44 +24117,44 @@ static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":1390
+  /* "adios.pyx":1582
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
  *                (self.varid,             # <<<<<<<<<<<<<<
  *                 self.name,
  *                 self.dtype,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1582, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios.pyx":1393
+  /* "adios.pyx":1585
  *                 self.name,
  *                 self.dtype,
  *                 self.ndim,             # <<<<<<<<<<<<<<
  *                 self.dims,
  *                 self.nsteps,
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1393, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1585, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":1395
+  /* "adios.pyx":1587
  *                 self.ndim,
  *                 self.dims,
  *                 self.nsteps,             # <<<<<<<<<<<<<<
  *                 self.attrs.keys())
  * 
  */
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1395, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1587, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
-  /* "adios.pyx":1396
+  /* "adios.pyx":1588
  *                 self.dims,
  *                 self.nsteps,
  *                 self.attrs.keys())             # <<<<<<<<<<<<<<
  * 
  *     def _readattr(self, varname):
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1396, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1588, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -21082,22 +24167,22 @@ static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1396, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1588, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1396, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1588, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":1390
+  /* "adios.pyx":1582
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
  *                (self.varid,             # <<<<<<<<<<<<<<
  *                 self.name,
  *                 self.dtype,
  */
-  __pyx_t_5 = PyTuple_New(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1390, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1582, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
@@ -21121,21 +24206,21 @@ static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__
   __pyx_t_3 = 0;
   __pyx_t_4 = 0;
 
-  /* "adios.pyx":1389
+  /* "adios.pyx":1581
  * 
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \             # <<<<<<<<<<<<<<
  *                (self.varid,
  *                 self.name,
  */
-  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1389, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1581, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1388
+  /* "adios.pyx":1580
  *         printvar(self.vp)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -21159,7 +24244,7 @@ static PyObject *__pyx_pf_5adios_3var_16__repr__(struct __pyx_obj_5adios_var *__
   return __pyx_r;
 }
 
-/* "adios.pyx":1398
+/* "adios.pyx":1590
  *                 self.attrs.keys())
  * 
  *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
@@ -21202,7 +24287,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
   __Pyx_RefNannySetupContext("_readattr", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios.pyx":1399
+  /* "adios.pyx":1591
  * 
  *     def _readattr(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -21213,14 +24298,14 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1400
+    /* "adios.pyx":1592
  *     def _readattr(self, varname):
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1400, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1592, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -21228,7 +24313,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":1399
+    /* "adios.pyx":1591
  * 
  *     def _readattr(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -21237,37 +24322,37 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
   }
 
-  /* "adios.pyx":1402
+  /* "adios.pyx":1594
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1402, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1594, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1403
+    /* "adios.pyx":1595
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1595, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1403, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1595, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 1403, __pyx_L1_error)
+    __PYX_ERR(0, 1595, __pyx_L1_error)
 
-    /* "adios.pyx":1402
+    /* "adios.pyx":1594
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -21276,7 +24361,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
   }
 
-  /* "adios.pyx":1405
+  /* "adios.pyx":1597
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -21287,26 +24372,26 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1405, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1597, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1405, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1597, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1405, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1597, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1405, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1597, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1405, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1597, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1405, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1597, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -21316,7 +24401,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1405, __pyx_L1_error)
+          else __PYX_ERR(0, 1597, __pyx_L1_error)
         }
         break;
       }
@@ -21325,7 +24410,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":1406
+    /* "adios.pyx":1598
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -21336,20 +24421,20 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1407
+      /* "adios.pyx":1599
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1407, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1599, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1407, __pyx_L1_error)
+      __PYX_ERR(0, 1599, __pyx_L1_error)
 
-      /* "adios.pyx":1406
+      /* "adios.pyx":1598
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -21358,35 +24443,35 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
     }
 
-    /* "adios.pyx":1409
+    /* "adios.pyx":1601
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1409, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1601, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1409, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1601, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1409, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1601, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1410
+      /* "adios.pyx":1602
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.attrs.keys():
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__35, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1410, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__36, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":1409
+      /* "adios.pyx":1601
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -21395,14 +24480,14 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
     }
 
-    /* "adios.pyx":1412
+    /* "adios.pyx":1604
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1412, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1604, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -21415,19 +24500,19 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1604, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1604, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1412, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1604, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":1413
+      /* "adios.pyx":1605
  * 
  *             if key_ in self.attrs.keys():
  *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
@@ -21435,7 +24520,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  *             if '/'+key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1413, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1605, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -21448,16 +24533,16 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1413, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1605, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1413, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1605, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1413, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1605, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -21467,7 +24552,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1412
+      /* "adios.pyx":1604
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -21476,16 +24561,16 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
     }
 
-    /* "adios.pyx":1415
+    /* "adios.pyx":1607
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get('/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1415, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1415, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1607, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -21498,20 +24583,20 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1607, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1607, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1415, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1607, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1416
+      /* "adios.pyx":1608
  * 
  *             if '/'+key_ in self.attrs.keys():
  *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -21519,9 +24604,9 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  *             for name in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1416, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1608, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1416, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1608, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -21534,17 +24619,17 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1608, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1416, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1608, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_9);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_9);
         __pyx_t_9 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1608, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
@@ -21554,7 +24639,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1415
+      /* "adios.pyx":1607
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -21563,14 +24648,14 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
     }
 
-    /* "adios.pyx":1418
+    /* "adios.pyx":1610
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1418, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1610, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_10 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -21583,10 +24668,10 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       }
     }
     if (__pyx_t_10) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1418, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1610, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1418, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1610, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -21594,9 +24679,9 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1418, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1610, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_12 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1418, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1610, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     for (;;) {
@@ -21604,17 +24689,17 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         if (likely(PyList_CheckExact(__pyx_t_7))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1418, __pyx_L1_error)
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1610, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1418, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1610, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1418, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1610, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1418, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1610, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -21624,7 +24709,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1418, __pyx_L1_error)
+            else __PYX_ERR(0, 1610, __pyx_L1_error)
           }
           break;
         }
@@ -21633,14 +24718,14 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "adios.pyx":1420
+      /* "adios.pyx":1612
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self.file, self.name + '/' + key_)
  * 
  */
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1420, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1612, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -21653,30 +24738,30 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1420, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1612, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L14_bool_binop_done;
       }
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1420, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1612, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1420, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1612, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -21689,28 +24774,28 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1420, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1612, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L14_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios.pyx":1421
+        /* "adios.pyx":1613
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self.file, self.name + '/' + key_)             # <<<<<<<<<<<<<<
@@ -21718,12 +24803,12 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  *     def _readvar(self, args):
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1421, __pyx_L1_error)
+        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1613, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_10 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1421, __pyx_L1_error)
+        __pyx_t_10 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1613, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1421, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1613, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
@@ -21731,7 +24816,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         __Pyx_GIVEREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
         __pyx_t_10 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1421, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1613, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_10;
@@ -21740,7 +24825,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L0;
 
-        /* "adios.pyx":1420
+        /* "adios.pyx":1612
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -21749,7 +24834,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
  */
       }
 
-      /* "adios.pyx":1418
+      /* "adios.pyx":1610
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -21759,7 +24844,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "adios.pyx":1405
+    /* "adios.pyx":1597
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -21769,7 +24854,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":1398
+  /* "adios.pyx":1590
  *                 self.attrs.keys())
  * 
  *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
@@ -21799,7 +24884,7 @@ static PyObject *__pyx_pf_5adios_3var_18_readattr(struct __pyx_obj_5adios_var *_
   return __pyx_r;
 }
 
-/* "adios.pyx":1423
+/* "adios.pyx":1615
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *     def _readvar(self, args):             # <<<<<<<<<<<<<<
@@ -21845,19 +24930,19 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("_readvar", 0);
 
-  /* "adios.pyx":1424
+  /* "adios.pyx":1616
  * 
  *     def _readvar(self, args):
  *         shape = list(self.dims)             # <<<<<<<<<<<<<<
  *         if self.nsteps > 1:
  *             shape.insert(0, self.nsteps)
  */
-  __pyx_t_1 = PySequence_List(__pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1616, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_shape = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1425
+  /* "adios.pyx":1617
  *     def _readvar(self, args):
  *         shape = list(self.dims)
  *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
@@ -21867,19 +24952,19 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
   __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1426
+    /* "adios.pyx":1618
  *         shape = list(self.dims)
  *         if self.nsteps > 1:
  *             shape.insert(0, self.nsteps)             # <<<<<<<<<<<<<<
  *         asel = sel.select(shape, args)
  * 
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1426, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1618, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyList_Insert(__pyx_v_shape, 0, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 1426, __pyx_L1_error)
+    __pyx_t_3 = PyList_Insert(__pyx_v_shape, 0, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 1618, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":1425
+    /* "adios.pyx":1617
  *     def _readvar(self, args):
  *         shape = list(self.dims)
  *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
@@ -21888,16 +24973,16 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1427
+  /* "adios.pyx":1619
  *         if self.nsteps > 1:
  *             shape.insert(0, self.nsteps)
  *         asel = sel.select(shape, args)             # <<<<<<<<<<<<<<
  * 
  *         if isinstance(asel, sel.SimpleSelection):
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1427, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1619, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_select); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1427, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_select); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1619, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -21912,7 +24997,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __pyx_t_6 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1427, __pyx_L1_error)
+  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_4) {
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -21923,31 +25008,31 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
   __Pyx_INCREF(__pyx_v_args);
   __Pyx_GIVEREF(__pyx_v_args);
   PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_args);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1427, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_asel = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1429
+  /* "adios.pyx":1621
  *         asel = sel.select(shape, args)
  * 
  *         if isinstance(asel, sel.SimpleSelection):             # <<<<<<<<<<<<<<
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1429, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1621, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_SimpleSelection); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1429, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_SimpleSelection); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1621, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_2 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_5); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1429, __pyx_L1_error)
+  __pyx_t_2 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_5); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1621, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_8 = (__pyx_t_2 != 0);
   if (__pyx_t_8) {
 
-    /* "adios.pyx":1430
+    /* "adios.pyx":1622
  * 
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -21957,7 +25042,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
     __pyx_t_8 = ((__pyx_v_self->nsteps > 1) != 0);
     if (__pyx_t_8) {
 
-      /* "adios.pyx":1431
+      /* "adios.pyx":1623
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],             # <<<<<<<<<<<<<<
@@ -21965,119 +25050,119 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  *                                  scalar=asel.sel[3][1:],
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__36, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios.pyx":1432
+      /* "adios.pyx":1624
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],             # <<<<<<<<<<<<<<
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1432, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1624, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1432, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1624, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1432, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__38, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1624, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios.pyx":1433
+      /* "adios.pyx":1625
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],             # <<<<<<<<<<<<<<
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1433, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1625, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1433, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1625, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__38, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1433, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__39, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1625, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios.pyx":1434
+      /* "adios.pyx":1626
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],             # <<<<<<<<<<<<<<
  *                                  nsteps=asel.sel[1][0],
  *                                  step_scalar=asel.sel[3][0])
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1626, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1434, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1626, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1626, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_7) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_7) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios.pyx":1435
+      /* "adios.pyx":1627
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],             # <<<<<<<<<<<<<<
  *                                  step_scalar=asel.sel[3][0])
  *             else:
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1435, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1435, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1435, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_7) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_7) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios.pyx":1436
+      /* "adios.pyx":1628
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],
  *                                  step_scalar=asel.sel[3][0])             # <<<<<<<<<<<<<<
  *             else:
  *                 return self.read(offset=asel.sel[0],
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1436, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1628, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1436, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1628, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1436, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1628, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios.pyx":1431
+      /* "adios.pyx":1623
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],             # <<<<<<<<<<<<<<
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],
  */
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22085,7 +25170,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __pyx_t_7 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1430
+      /* "adios.pyx":1622
  * 
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22094,7 +25179,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  */
     }
 
-    /* "adios.pyx":1438
+    /* "adios.pyx":1630
  *                                  step_scalar=asel.sel[3][0])
  *             else:
  *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
@@ -22103,42 +25188,42 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  */
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1438, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1438, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1630, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1438, __pyx_L1_error)
+      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1630, __pyx_L1_error)
 
-      /* "adios.pyx":1439
+      /* "adios.pyx":1631
  *             else:
  *                 return self.read(offset=asel.sel[0],
  *                                  count=asel.sel[1],             # <<<<<<<<<<<<<<
  *                                  scalar=asel.sel[3],
  *                                  from_steps=0,
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1439, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1439, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1631, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 1439, __pyx_L1_error)
+      if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 1631, __pyx_L1_error)
 
-      /* "adios.pyx":1440
+      /* "adios.pyx":1632
  *                 return self.read(offset=asel.sel[0],
  *                                  count=asel.sel[1],
  *                                  scalar=asel.sel[3],             # <<<<<<<<<<<<<<
  *                                  from_steps=0,
  *                                  nsteps=1)
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1440, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1632, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1440, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1632, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 1440, __pyx_L1_error)
+      if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 1632, __pyx_L1_error)
 
-      /* "adios.pyx":1438
+      /* "adios.pyx":1630
  *                                  step_scalar=asel.sel[3][0])
  *             else:
  *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
@@ -22151,7 +25236,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __pyx_t_9.scalar = ((PyObject*)__pyx_t_4);
       __pyx_t_9.from_steps = __pyx_int_0;
       __pyx_t_9.nsteps = __pyx_int_1;
-      __pyx_t_7 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1438, __pyx_L1_error)
+      __pyx_t_7 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -22161,7 +25246,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       goto __pyx_L0;
     }
 
-    /* "adios.pyx":1429
+    /* "adios.pyx":1621
  *         asel = sel.select(shape, args)
  * 
  *         if isinstance(asel, sel.SimpleSelection):             # <<<<<<<<<<<<<<
@@ -22170,82 +25255,82 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1444
+  /* "adios.pyx":1636
  *                                  nsteps=1)
  * 
  *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
  *             shape = list(asel.sel[0][1])
  *             shape[asel.morder[0]] = 0
  */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1444, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FancySelection); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FancySelection); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1636, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_8 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1444, __pyx_L1_error)
+  __pyx_t_8 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1636, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_2 = (__pyx_t_8 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1445
+    /* "adios.pyx":1637
  * 
  *         elif isinstance(asel, sel.FancySelection):
  *             shape = list(asel.sel[0][1])             # <<<<<<<<<<<<<<
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    __pyx_t_7 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF_SET(__pyx_v_shape, ((PyObject*)__pyx_t_7));
     __pyx_t_7 = 0;
 
-    /* "adios.pyx":1446
+    /* "adios.pyx":1638
  *         elif isinstance(asel, sel.FancySelection):
  *             shape = list(asel.sel[0][1])
  *             shape[asel.morder[0]] = 0             # <<<<<<<<<<<<<<
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1446, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1446, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    if (unlikely(PyObject_SetItem(__pyx_v_shape, __pyx_t_4, __pyx_int_0) < 0)) __PYX_ERR(0, 1446, __pyx_L1_error)
+    if (unlikely(PyObject_SetItem(__pyx_v_shape, __pyx_t_4, __pyx_int_0) < 0)) __PYX_ERR(0, 1638, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "adios.pyx":1447
+    /* "adios.pyx":1639
  *             shape = list(asel.sel[0][1])
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1447, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_shape);
     __Pyx_GIVEREF(__pyx_v_shape);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
-    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1447, __pyx_L1_error)
+    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1447, __pyx_L1_error)
-    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_ndarray), __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1447, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1639, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_ndarray), __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_v_var = __pyx_t_5;
     __pyx_t_5 = 0;
 
-    /* "adios.pyx":1448
+    /* "adios.pyx":1640
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
@@ -22254,15 +25339,15 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  */
     __Pyx_INCREF(__pyx_int_0);
     __pyx_t_5 = __pyx_int_0;
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1448, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
       __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
       __pyx_t_10 = NULL;
     } else {
-      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1448, __pyx_L1_error)
+      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1640, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1448, __pyx_L1_error)
+      __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1640, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -22270,17 +25355,17 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
         if (likely(PyList_CheckExact(__pyx_t_4))) {
           if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1448, __pyx_L1_error)
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1640, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1448, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         } else {
           if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1448, __pyx_L1_error)
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1640, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1448, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         }
@@ -22290,7 +25375,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1448, __pyx_L1_error)
+            else __PYX_ERR(0, 1640, __pyx_L1_error)
           }
           break;
         }
@@ -22300,13 +25385,13 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __pyx_t_7 = 0;
       __Pyx_INCREF(__pyx_t_5);
       __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
-      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1448, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_5);
       __pyx_t_5 = __pyx_t_7;
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":1449
+      /* "adios.pyx":1641
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22316,115 +25401,115 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
       if (__pyx_t_2) {
 
-        /* "adios.pyx":1450
+        /* "adios.pyx":1642
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],             # <<<<<<<<<<<<<<
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  */
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__39, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__40, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_12) < 0) __PYX_ERR(0, 1450, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_12) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "adios.pyx":1451
+        /* "adios.pyx":1643
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],             # <<<<<<<<<<<<<<
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],
  */
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1451, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1643, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_t_12, 1, 0, NULL, NULL, &__pyx_slice__40, 1, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1451, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_t_12, 1, 0, NULL, NULL, &__pyx_slice__41, 1, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1643, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_11) < 0) __PYX_ERR(0, 1450, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_11) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-        /* "adios.pyx":1452
+        /* "adios.pyx":1644
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],             # <<<<<<<<<<<<<<
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],
  */
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1452, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1644, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__41, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1452, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__42, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1644, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_12) < 0) __PYX_ERR(0, 1450, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_12) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "adios.pyx":1453
+        /* "adios.pyx":1645
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],             # <<<<<<<<<<<<<<
  *                                   nsteps=obj[1][0],
  *                                   step_scalar=obj[3][0])
  */
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1453, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1645, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1453, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1645, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_11) < 0) __PYX_ERR(0, 1450, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_11) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-        /* "adios.pyx":1454
+        /* "adios.pyx":1646
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],             # <<<<<<<<<<<<<<
  *                                   step_scalar=obj[3][0])
  *                 else:
  */
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1454, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1646, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1454, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1646, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_12) < 0) __PYX_ERR(0, 1450, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_12) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "adios.pyx":1455
+        /* "adios.pyx":1647
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],
  *                                   step_scalar=obj[3][0])             # <<<<<<<<<<<<<<
  *                 else:
  *                     v = self.read(offset=obj[0],
  */
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1455, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1647, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1455, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1647, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_11) < 0) __PYX_ERR(0, 1450, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_11) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-        /* "adios.pyx":1450
+        /* "adios.pyx":1642
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],             # <<<<<<<<<<<<<<
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  */
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_11);
         __pyx_t_11 = 0;
 
-        /* "adios.pyx":1449
+        /* "adios.pyx":1641
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22434,7 +25519,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
         goto __pyx_L8;
       }
 
-      /* "adios.pyx":1457
+      /* "adios.pyx":1649
  *                                   step_scalar=obj[3][0])
  *                 else:
  *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
@@ -22442,33 +25527,33 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  *                                   scalar=obj[3],
  */
       /*else*/ {
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1457, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1649, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        if (!(likely(PyTuple_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(0, 1457, __pyx_L1_error)
+        if (!(likely(PyTuple_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(0, 1649, __pyx_L1_error)
 
-        /* "adios.pyx":1458
+        /* "adios.pyx":1650
  *                 else:
  *                     v = self.read(offset=obj[0],
  *                                   count=obj[1],             # <<<<<<<<<<<<<<
  *                                   scalar=obj[3],
  *                                   from_steps=0,
  */
-        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1650, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1458, __pyx_L1_error)
+        if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1650, __pyx_L1_error)
 
-        /* "adios.pyx":1459
+        /* "adios.pyx":1651
  *                     v = self.read(offset=obj[0],
  *                                   count=obj[1],
  *                                   scalar=obj[3],             # <<<<<<<<<<<<<<
  *                                   from_steps=0,
  *                                   nsteps=1)
  */
-        __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1459, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1651, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 1459, __pyx_L1_error)
+        if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 1651, __pyx_L1_error)
 
-        /* "adios.pyx":1457
+        /* "adios.pyx":1649
  *                                   step_scalar=obj[3][0])
  *                 else:
  *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
@@ -22481,7 +25566,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
         __pyx_t_9.scalar = ((PyObject*)__pyx_t_7);
         __pyx_t_9.from_steps = __pyx_int_0;
         __pyx_t_9.nsteps = __pyx_int_1;
-        __pyx_t_12 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1457, __pyx_L1_error)
+        __pyx_t_12 = ((struct __pyx_vtabstruct_5adios_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1649, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22491,19 +25576,19 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       }
       __pyx_L8:;
 
-      /* "adios.pyx":1463
+      /* "adios.pyx":1655
  *                                   nsteps=1)
  * 
  *                 var = np.concatenate((var, v), axis=asel.morder[idx])             # <<<<<<<<<<<<<<
  * 
  *             var = np.reshape(var, asel.mshape)
  */
-      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_INCREF(__pyx_v_var);
       __Pyx_GIVEREF(__pyx_v_var);
@@ -22511,21 +25596,21 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __Pyx_INCREF(__pyx_v_v);
       __Pyx_GIVEREF(__pyx_v_v);
       PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_v);
-      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12);
       __pyx_t_12 = 0;
-      __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_v_idx); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_v_idx); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_axis, __pyx_t_13) < 0) __PYX_ERR(0, 1463, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_axis, __pyx_t_13) < 0) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1463, __pyx_L1_error)
+      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1655, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22533,7 +25618,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
       __Pyx_DECREF_SET(__pyx_v_var, __pyx_t_13);
       __pyx_t_13 = 0;
 
-      /* "adios.pyx":1448
+      /* "adios.pyx":1640
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
@@ -22544,19 +25629,19 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "adios.pyx":1465
+    /* "adios.pyx":1657
  *                 var = np.concatenate((var, v), axis=asel.morder[idx])
  * 
  *             var = np.reshape(var, asel.mshape)             # <<<<<<<<<<<<<<
  * 
  *             return var
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1465, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1657, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1465, __pyx_L1_error)
+    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1657, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_13);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_mshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1465, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_mshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1657, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_12 = NULL;
     __pyx_t_6 = 0;
@@ -22570,7 +25655,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1465, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1657, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (__pyx_t_12) {
       __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __pyx_t_12 = NULL;
@@ -22581,14 +25666,14 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
     __Pyx_GIVEREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1465, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1657, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __Pyx_DECREF_SET(__pyx_v_var, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "adios.pyx":1467
+    /* "adios.pyx":1659
  *             var = np.reshape(var, asel.mshape)
  * 
  *             return var             # <<<<<<<<<<<<<<
@@ -22600,7 +25685,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
     __pyx_r = __pyx_v_var;
     goto __pyx_L0;
 
-    /* "adios.pyx":1444
+    /* "adios.pyx":1636
  *                                  nsteps=1)
  * 
  *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
@@ -22609,7 +25694,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  */
   }
 
-  /* "adios.pyx":1470
+  /* "adios.pyx":1662
  * 
  *         else:
  *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
@@ -22617,14 +25702,14 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
  *     def __getitem__(self, args):
  */
   /*else*/ {
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1470, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1662, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 1470, __pyx_L1_error)
+    __PYX_ERR(0, 1662, __pyx_L1_error)
   }
 
-  /* "adios.pyx":1423
+  /* "adios.pyx":1615
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *     def _readvar(self, args):             # <<<<<<<<<<<<<<
@@ -22655,7 +25740,7 @@ static PyObject *__pyx_pf_5adios_3var_20_readvar(struct __pyx_obj_5adios_var *__
   return __pyx_r;
 }
 
-/* "adios.pyx":1472
+/* "adios.pyx":1664
  *             raise NotImplementedError("Not implemented yet")
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -22687,7 +25772,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios.pyx":1473
+  /* "adios.pyx":1665
  * 
  *     def __getitem__(self, args):
  *         if isinstance(args, str):             # <<<<<<<<<<<<<<
@@ -22698,7 +25783,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1474
+    /* "adios.pyx":1666
  *     def __getitem__(self, args):
  *         if isinstance(args, str):
  *             return self._readattr(args)             # <<<<<<<<<<<<<<
@@ -22706,7 +25791,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
  *             return self._readvar(args)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1474, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1666, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -22719,16 +25804,16 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1474, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1666, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1474, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1666, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_args);
       __Pyx_GIVEREF(__pyx_v_args);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_args);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1474, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1666, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -22737,7 +25822,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "adios.pyx":1473
+    /* "adios.pyx":1665
  * 
  *     def __getitem__(self, args):
  *         if isinstance(args, str):             # <<<<<<<<<<<<<<
@@ -22746,7 +25831,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
  */
   }
 
-  /* "adios.pyx":1476
+  /* "adios.pyx":1668
  *             return self._readattr(args)
  *         else:
  *             return self._readvar(args)             # <<<<<<<<<<<<<<
@@ -22755,7 +25840,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
  */
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readvar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1476, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readvar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1668, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -22768,16 +25853,16 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1476, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1668, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1476, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1668, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_args);
       __Pyx_GIVEREF(__pyx_v_args);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_args);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1476, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1668, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -22787,7 +25872,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
     goto __pyx_L0;
   }
 
-  /* "adios.pyx":1472
+  /* "adios.pyx":1664
  *             raise NotImplementedError("Not implemented yet")
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -22809,7 +25894,7 @@ static PyObject *__pyx_pf_5adios_3var_22__getitem__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1479
+/* "adios.pyx":1671
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -22839,7 +25924,7 @@ static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios.pyx":1480
+  /* "adios.pyx":1672
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):
  *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
@@ -22847,7 +25932,7 @@ static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var
  *     ## To support ipython tab completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1480, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -22860,16 +25945,16 @@ static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1480, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1480, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1480, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -22878,7 +25963,7 @@ static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1479
+  /* "adios.pyx":1671
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -22900,7 +25985,7 @@ static PyObject *__pyx_pf_5adios_3var_24__getattr__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1483
+/* "adios.pyx":1675
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -22934,28 +26019,28 @@ static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__p
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios.pyx":1484
+  /* "adios.pyx":1676
  *     ## To support ipython tab completion
  *     def __dir__(self):
  *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/attr1'] == f.attr1
  */
-  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1484, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1676, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_k0 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1487
+  /* "adios.pyx":1679
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/attr1'] == f.attr1
  *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
  *         return k0 + k2
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1487, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1679, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1487, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1679, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -22968,10 +26053,10 @@ static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__p
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1679, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1679, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -22986,17 +26071,17 @@ static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__p
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1679, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1679, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1679, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -23004,7 +26089,7 @@ static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__p
   __pyx_v_k2 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1488
+  /* "adios.pyx":1680
  *         ## E.g., f['/attr1'] == f.attr1
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k2             # <<<<<<<<<<<<<<
@@ -23012,13 +26097,13 @@ static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__p
  *     ## Require for dictionary key completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1488, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1680, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1483
+  /* "adios.pyx":1675
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -23043,7 +26128,7 @@ static PyObject *__pyx_pf_5adios_3var_26__dir__(struct __pyx_obj_5adios_var *__p
   return __pyx_r;
 }
 
-/* "adios.pyx":1491
+/* "adios.pyx":1683
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -23073,7 +26158,7 @@ static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios.pyx":1492
+  /* "adios.pyx":1684
  *     ## Require for dictionary key completion
  *     def keys(self):
  *         return self.attrs.keys()             # <<<<<<<<<<<<<<
@@ -23081,7 +26166,7 @@ static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_
  * cdef class attr(object):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1492, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -23094,10 +26179,10 @@ static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1492, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1492, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -23105,7 +26190,7 @@ static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1491
+  /* "adios.pyx":1683
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -23126,7 +26211,7 @@ static PyObject *__pyx_pf_5adios_3var_28keys(struct __pyx_obj_5adios_var *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":1516
+/* "adios.pyx":1708
  *     property name:
  *         """ The attribute name """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23152,7 +26237,7 @@ static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_att
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1517
+  /* "adios.pyx":1709
  *         """ The attribute name """
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -23164,7 +26249,7 @@ static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_att
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios.pyx":1516
+  /* "adios.pyx":1708
  *     property name:
  *         """ The attribute name """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23179,7 +26264,7 @@ static PyObject *__pyx_pf_5adios_4attr_4name___get__(struct __pyx_obj_5adios_att
   return __pyx_r;
 }
 
-/* "adios.pyx":1521
+/* "adios.pyx":1713
  *     property dtype:
  *         """ The attribute type as in numpy.dtype """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23205,7 +26290,7 @@ static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_at
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1522
+  /* "adios.pyx":1714
  *         """ The attribute type as in numpy.dtype """
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -23217,7 +26302,7 @@ static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_at
   __pyx_r = ((PyObject *)__pyx_v_self->dtype);
   goto __pyx_L0;
 
-  /* "adios.pyx":1521
+  /* "adios.pyx":1713
  *     property dtype:
  *         """ The attribute type as in numpy.dtype """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23232,7 +26317,7 @@ static PyObject *__pyx_pf_5adios_4attr_5dtype___get__(struct __pyx_obj_5adios_at
   return __pyx_r;
 }
 
-/* "adios.pyx":1526
+/* "adios.pyx":1718
  *     property value:
  *         """ The attribute's value """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23263,7 +26348,7 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1527
+  /* "adios.pyx":1719
  *         """ The attribute's value """
  *         def __get__(self):
  *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
@@ -23273,7 +26358,7 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
   __pyx_t_1 = ((__pyx_v_self->value->nd == 0) != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":1528
+    /* "adios.pyx":1720
  *         def __get__(self):
  *             if (self.value.ndim == 0):
  *                 return np.asscalar(self.value)             # <<<<<<<<<<<<<<
@@ -23281,9 +26366,9 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
  *                 return self.value
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1528, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1720, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1528, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1720, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_3 = NULL;
@@ -23297,16 +26382,16 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
       }
     }
     if (!__pyx_t_3) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self->value)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1528, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self->value)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1720, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1528, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1720, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
       __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_self->value));
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1528, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1720, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -23315,7 +26400,7 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "adios.pyx":1527
+    /* "adios.pyx":1719
  *         """ The attribute's value """
  *         def __get__(self):
  *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
@@ -23324,7 +26409,7 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
  */
   }
 
-  /* "adios.pyx":1530
+  /* "adios.pyx":1722
  *                 return np.asscalar(self.value)
  *             else:
  *                 return self.value             # <<<<<<<<<<<<<<
@@ -23338,7 +26423,7 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
     goto __pyx_L0;
   }
 
-  /* "adios.pyx":1526
+  /* "adios.pyx":1718
  *     property value:
  *         """ The attribute's value """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23360,7 +26445,7 @@ static PyObject *__pyx_pf_5adios_4attr_5value___get__(struct __pyx_obj_5adios_at
   return __pyx_r;
 }
 
-/* "adios.pyx":1532
+/* "adios.pyx":1724
  *                 return self.value
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -23396,11 +26481,11 @@ static int __pyx_pw_5adios_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1532, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1724, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1532, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1724, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -23413,14 +26498,14 @@ static int __pyx_pw_5adios_4attr_1__init__(PyObject *__pyx_v_self, PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1532, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1724, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.attr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_5adios_file, 1, "file", 0))) __PYX_ERR(0, 1532, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1532, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_5adios_file, 1, "file", 0))) __PYX_ERR(0, 1724, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1724, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_4attr___init__(((struct __pyx_obj_5adios_attr *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
@@ -23456,7 +26541,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
   int __pyx_t_12;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1533
+  /* "adios.pyx":1725
  * 
  *     def __init__(self, file file, str name):
  *         self.file = file             # <<<<<<<<<<<<<<
@@ -23469,7 +26554,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
   __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
   __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios.pyx":1534
+  /* "adios.pyx":1726
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.name = name             # <<<<<<<<<<<<<<
@@ -23482,7 +26567,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios.pyx":1542
+  /* "adios.pyx":1734
  *         cdef int len
  * 
  *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)             # <<<<<<<<<<<<<<
@@ -23491,14 +26576,14 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
  */
   __pyx_t_1 = __pyx_v_self->name;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_5adios_s2b(((PyObject*)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1542, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_5adios_s2b(((PyObject*)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1734, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1542, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1734, __pyx_L1_error)
   __pyx_v_err = adios_get_attr(__pyx_v_self->file->fp, __pyx_t_3, (&__pyx_v_atype), (&__pyx_v_bytes), ((void **)(&__pyx_v_p)));
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":1544
+  /* "adios.pyx":1736
  *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
  * 
  *         if err == 0:             # <<<<<<<<<<<<<<
@@ -23508,28 +26593,28 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
   __pyx_t_4 = ((__pyx_v_err == 0) != 0);
   if (__pyx_t_4) {
 
-    /* "adios.pyx":1545
+    /* "adios.pyx":1737
  * 
  *         if err == 0:
  *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)
  */
-    __pyx_t_2 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1545, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1737, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1737, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1545, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1737, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1737, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1545, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1737, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_4) {
 
-      /* "adios.pyx":1546
+      /* "adios.pyx":1738
  *         if err == 0:
  *             if atype == DATATYPE.string:
  *                 bytes = bytes - 1 ## Remove the NULL terminal             # <<<<<<<<<<<<<<
@@ -23538,7 +26623,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
  */
       __pyx_v_bytes = (__pyx_v_bytes - 1);
 
-      /* "adios.pyx":1545
+      /* "adios.pyx":1737
  * 
  *         if err == 0:
  *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
@@ -23547,7 +26632,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
  */
     }
 
-    /* "adios.pyx":1547
+    /* "adios.pyx":1739
  *             if atype == DATATYPE.string:
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)             # <<<<<<<<<<<<<<
@@ -23556,7 +26641,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
  */
     __pyx_t_6.__pyx_n = 1;
     __pyx_t_6.strlen = __pyx_v_bytes;
-    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_atype, 0, &__pyx_t_6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1547, __pyx_L1_error)
+    __pyx_t_1 = ((PyObject *)__pyx_f_5adios_adios2npdtype(__pyx_v_atype, 0, &__pyx_t_6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -23564,40 +26649,40 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
     __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1548
+    /* "adios.pyx":1740
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)
  *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
  *                 strlist = list()
  *                 len = <int>(bytes/sizeof(p))
  */
-    __pyx_t_1 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1740, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1548, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1740, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1548, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1740, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1548, __pyx_L1_error)
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1740, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1548, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1740, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_4) {
 
-      /* "adios.pyx":1549
+      /* "adios.pyx":1741
  *             self.dtype = adios2npdtype(atype, bytes)
  *             if atype == DATATYPE.string_array:
  *                 strlist = list()             # <<<<<<<<<<<<<<
  *                 len = <int>(bytes/sizeof(p))
  *                 for i in range(len):
  */
-      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1549, __pyx_L1_error)
+      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1741, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_v_strlist = ((PyObject*)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "adios.pyx":1550
+      /* "adios.pyx":1742
  *             if atype == DATATYPE.string_array:
  *                 strlist = list()
  *                 len = <int>(bytes/sizeof(p))             # <<<<<<<<<<<<<<
@@ -23607,11 +26692,11 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       __pyx_t_7 = (sizeof(__pyx_v_p));
       if (unlikely(__pyx_t_7 == 0)) {
         PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        __PYX_ERR(0, 1550, __pyx_L1_error)
+        __PYX_ERR(0, 1742, __pyx_L1_error)
       }
       __pyx_v_len = ((int)(__pyx_v_bytes / __pyx_t_7));
 
-      /* "adios.pyx":1551
+      /* "adios.pyx":1743
  *                 strlist = list()
  *                 len = <int>(bytes/sizeof(p))
  *                 for i in range(len):             # <<<<<<<<<<<<<<
@@ -23622,29 +26707,29 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
         __pyx_v_i = __pyx_t_9;
 
-        /* "adios.pyx":1552
+        /* "adios.pyx":1744
  *                 len = <int>(bytes/sizeof(p))
  *                 for i in range(len):
  *                     strlist.append((<char **>p)[i])             # <<<<<<<<<<<<<<
  *                 self.value = np.array(strlist)
  *                 self.dtype = self.value.dtype
  */
-        __pyx_t_5 = __Pyx_PyBytes_FromString((((char **)__pyx_v_p)[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1552, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyBytes_FromString((((char **)__pyx_v_p)[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1744, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_strlist, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1552, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_strlist, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1744, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
 
-      /* "adios.pyx":1553
+      /* "adios.pyx":1745
  *                 for i in range(len):
  *                     strlist.append((<char **>p)[i])
  *                 self.value = np.array(strlist)             # <<<<<<<<<<<<<<
  *                 self.dtype = self.value.dtype
  * 
  */
-      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1553, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1745, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1553, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1745, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_2 = NULL;
@@ -23658,44 +26743,44 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
         }
       }
       if (!__pyx_t_2) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_strlist); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1553, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_strlist); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1745, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1553, __pyx_L1_error)
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1745, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __pyx_t_2 = NULL;
         __Pyx_INCREF(__pyx_v_strlist);
         __Pyx_GIVEREF(__pyx_v_strlist);
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_strlist);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1553, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1745, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1553, __pyx_L1_error)
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1745, __pyx_L1_error)
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_v_self->value);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
       __pyx_v_self->value = ((PyArrayObject *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "adios.pyx":1554
+      /* "adios.pyx":1746
  *                     strlist.append((<char **>p)[i])
  *                 self.value = np.array(strlist)
  *                 self.dtype = self.value.dtype             # <<<<<<<<<<<<<<
  * 
  *             elif self.dtype is None:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->value), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1554, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->value), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1746, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 1554, __pyx_L1_error)
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 1746, __pyx_L1_error)
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_v_self->dtype);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
       __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "adios.pyx":1548
+      /* "adios.pyx":1740
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)
  *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
@@ -23705,7 +26790,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       goto __pyx_L5;
     }
 
-    /* "adios.pyx":1556
+    /* "adios.pyx":1748
  *                 self.dtype = self.value.dtype
  * 
  *             elif self.dtype is None:             # <<<<<<<<<<<<<<
@@ -23716,18 +26801,18 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
     __pyx_t_12 = (__pyx_t_4 != 0);
     if (__pyx_t_12) {
 
-      /* "adios.pyx":1558
+      /* "adios.pyx":1750
  *             elif self.dtype is None:
  *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
  *                       (self.name, atype, bytes))             # <<<<<<<<<<<<<<
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)
  */
-      __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1558, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1750, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1750, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1558, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1750, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_INCREF(__pyx_v_self->name);
       __Pyx_GIVEREF(__pyx_v_self->name);
@@ -23739,27 +26824,27 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       __pyx_t_5 = 0;
       __pyx_t_1 = 0;
 
-      /* "adios.pyx":1557
+      /* "adios.pyx":1749
  * 
  *             elif self.dtype is None:
  *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \             # <<<<<<<<<<<<<<
  *                       (self.name, atype, bytes))
  *             else:
  */
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1749, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1749, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_GIVEREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1749, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios.pyx":1556
+      /* "adios.pyx":1748
  *                 self.dtype = self.value.dtype
  * 
  *             elif self.dtype is None:             # <<<<<<<<<<<<<<
@@ -23769,7 +26854,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       goto __pyx_L5;
     }
 
-    /* "adios.pyx":1560
+    /* "adios.pyx":1752
  *                       (self.name, atype, bytes))
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)             # <<<<<<<<<<<<<<
@@ -23779,15 +26864,15 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
     /*else*/ {
       if (unlikely(__pyx_v_self->dtype->elsize == 0)) {
         PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        __PYX_ERR(0, 1560, __pyx_L1_error)
+        __PYX_ERR(0, 1752, __pyx_L1_error)
       }
       else if (sizeof(int) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_self->dtype->elsize == (int)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_bytes))) {
         PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
-        __PYX_ERR(0, 1560, __pyx_L1_error)
+        __PYX_ERR(0, 1752, __pyx_L1_error)
       }
       __pyx_v_len = ((int)__Pyx_div_int(__pyx_v_bytes, __pyx_v_self->dtype->elsize));
 
-      /* "adios.pyx":1561
+      /* "adios.pyx":1753
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)
  *                 if len == 1:             # <<<<<<<<<<<<<<
@@ -23797,41 +26882,41 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       __pyx_t_12 = ((__pyx_v_len == 1) != 0);
       if (__pyx_t_12) {
 
-        /* "adios.pyx":1562
+        /* "adios.pyx":1754
  *                 len = <int>(bytes/self.dtype.itemsize)
  *                 if len == 1:
  *                     self.value = np.array(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
  *                 else:
  *                     self.value = np.zeros(len, dtype=self.dtype)
  */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1562, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1562, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1562, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1562, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __pyx_t_1 = 0;
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1562, __pyx_L1_error)
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1562, __pyx_L1_error)
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1562, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1754, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1562, __pyx_L1_error)
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1754, __pyx_L1_error)
         __Pyx_GIVEREF(__pyx_t_2);
         __Pyx_GOTREF(__pyx_v_self->value);
         __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
         __pyx_v_self->value = ((PyArrayObject *)__pyx_t_2);
         __pyx_t_2 = 0;
 
-        /* "adios.pyx":1561
+        /* "adios.pyx":1753
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)
  *                 if len == 1:             # <<<<<<<<<<<<<<
@@ -23841,7 +26926,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
         goto __pyx_L8;
       }
 
-      /* "adios.pyx":1564
+      /* "adios.pyx":1756
  *                     self.value = np.array(len, dtype=self.dtype)
  *                 else:
  *                     self.value = np.zeros(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
@@ -23849,27 +26934,27 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
  *         else:
  */
       /*else*/ {
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1564, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1564, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_2);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
         __pyx_t_2 = 0;
-        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __pyx_L1_error)
+        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1564, __pyx_L1_error)
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1564, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1756, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1564, __pyx_L1_error)
+        if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1756, __pyx_L1_error)
         __Pyx_GIVEREF(__pyx_t_11);
         __Pyx_GOTREF(__pyx_v_self->value);
         __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
@@ -23878,7 +26963,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
       }
       __pyx_L8:;
 
-      /* "adios.pyx":1565
+      /* "adios.pyx":1757
  *                 else:
  *                     self.value = np.zeros(len, dtype=self.dtype)
  *                 self.value.data = <char *> p             # <<<<<<<<<<<<<<
@@ -23889,7 +26974,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
     }
     __pyx_L5:;
 
-    /* "adios.pyx":1544
+    /* "adios.pyx":1736
  *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
  * 
  *         if err == 0:             # <<<<<<<<<<<<<<
@@ -23899,7 +26984,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":1567
+  /* "adios.pyx":1759
  *                 self.value.data = <char *> p
  *         else:
  *             raise KeyError(name)             # <<<<<<<<<<<<<<
@@ -23907,21 +26992,21 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
  *     def __getitem__(self, args):
  */
   /*else*/ {
-    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1567, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1759, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(__pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_name);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1567, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1759, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 1567, __pyx_L1_error)
+    __PYX_ERR(0, 1759, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "adios.pyx":1532
+  /* "adios.pyx":1724
  *                 return self.value
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -23945,7 +27030,7 @@ static int __pyx_pf_5adios_4attr___init__(struct __pyx_obj_5adios_attr *__pyx_v_
   return __pyx_r;
 }
 
-/* "adios.pyx":1569
+/* "adios.pyx":1761
  *             raise KeyError(name)
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -23977,35 +27062,35 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios.pyx":1570
+  /* "adios.pyx":1762
  * 
  *     def __getitem__(self, args):
  *         val = self.value[args]             # <<<<<<<<<<<<<<
  *         if (val.ndim == 0):
  *             return np.asscalar(val)
  */
-  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->value), __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1570, __pyx_L1_error)
+  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->value), __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_val = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1571
+  /* "adios.pyx":1763
  *     def __getitem__(self, args):
  *         val = self.value[args]
  *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
  *             return np.asscalar(val)
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1571, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1763, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1763, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1571, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1763, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios.pyx":1572
+    /* "adios.pyx":1764
  *         val = self.value[args]
  *         if (val.ndim == 0):
  *             return np.asscalar(val)             # <<<<<<<<<<<<<<
@@ -24013,9 +27098,9 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
  *             return val
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1572, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_1 = NULL;
@@ -24029,16 +27114,16 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
       }
     }
     if (!__pyx_t_1) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1572, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_val);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -24047,7 +27132,7 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "adios.pyx":1571
+    /* "adios.pyx":1763
  *     def __getitem__(self, args):
  *         val = self.value[args]
  *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
@@ -24056,7 +27141,7 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
  */
   }
 
-  /* "adios.pyx":1574
+  /* "adios.pyx":1766
  *             return np.asscalar(val)
  *         else:
  *             return val             # <<<<<<<<<<<<<<
@@ -24070,7 +27155,7 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
     goto __pyx_L0;
   }
 
-  /* "adios.pyx":1569
+  /* "adios.pyx":1761
  *             raise KeyError(name)
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -24093,7 +27178,7 @@ static PyObject *__pyx_pf_5adios_4attr_2__getitem__(struct __pyx_obj_5adios_attr
   return __pyx_r;
 }
 
-/* "adios.pyx":1576
+/* "adios.pyx":1768
  *             return val
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -24121,7 +27206,7 @@ static PyObject *__pyx_pf_5adios_4attr_4__repr__(struct __pyx_obj_5adios_attr *_
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1577
+  /* "adios.pyx":1769
  * 
  *     def __repr__(self):
  *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
@@ -24130,14 +27215,14 @@ static PyObject *__pyx_pf_5adios_4attr_4__repr__(struct __pyx_obj_5adios_attr *_
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":1578
+  /* "adios.pyx":1770
  *     def __repr__(self):
  *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
  *                (self.name, self.dtype, self.value)             # <<<<<<<<<<<<<<
  * 
  * cdef class group(dict):
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1578, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1770, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -24149,21 +27234,21 @@ static PyObject *__pyx_pf_5adios_4attr_4__repr__(struct __pyx_obj_5adios_attr *_
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
   PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->value));
 
-  /* "adios.pyx":1577
+  /* "adios.pyx":1769
  * 
  *     def __repr__(self):
  *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
  *                (self.name, self.dtype, self.value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1577, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1769, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1576
+  /* "adios.pyx":1768
  *             return val
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -24183,7 +27268,7 @@ static PyObject *__pyx_pf_5adios_4attr_4__repr__(struct __pyx_obj_5adios_attr *_
   return __pyx_r;
 }
 
-/* "adios.pyx":1594
+/* "adios.pyx":1786
  *     cpdef public softdict attrs
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -24219,11 +27304,11 @@ static int __pyx_pw_5adios_5group_1__init__(PyObject *__pyx_v_self, PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1594, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1786, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1594, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1786, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -24236,14 +27321,14 @@ static int __pyx_pw_5adios_5group_1__init__(PyObject *__pyx_v_self, PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1594, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1786, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_5adios_file, 1, "file", 0))) __PYX_ERR(0, 1594, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1594, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_5adios_file, 1, "file", 0))) __PYX_ERR(0, 1786, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1786, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_5group___init__(((struct __pyx_obj_5adios_group *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
@@ -24272,7 +27357,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_name);
 
-  /* "adios.pyx":1595
+  /* "adios.pyx":1787
  * 
  *     def __init__(self, file file, str name):
  *         self.file = file             # <<<<<<<<<<<<<<
@@ -24285,33 +27370,33 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
   __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios.pyx":1596
+  /* "adios.pyx":1788
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.name = name.rstrip('/')             # <<<<<<<<<<<<<<
  * 
  *         self.vars = softdict()
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1596, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1596, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1596, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1788, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->name);
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1598
+  /* "adios.pyx":1790
  *         self.name = name.rstrip('/')
  * 
  *         self.vars = softdict()             # <<<<<<<<<<<<<<
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->vars);
@@ -24319,14 +27404,14 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   __pyx_v_self->vars = ((struct __pyx_obj_5adios_softdict *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1599
+  /* "adios.pyx":1791
  * 
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():             # <<<<<<<<<<<<<<
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -24339,10 +27424,10 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24350,9 +27435,9 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1599, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1791, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -24360,17 +27445,17 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1599, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1791, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1599, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1791, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -24380,17 +27465,17 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1599, __pyx_L1_error)
+          else __PYX_ERR(0, 1791, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_2);
     }
-    if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1599, __pyx_L1_error)
+    if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1791, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":1600
+    /* "adios.pyx":1792
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24399,26 +27484,26 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1600, __pyx_L1_error)
+      __PYX_ERR(0, 1792, __pyx_L1_error)
     }
-    __pyx_t_2 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1600, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1792, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1600, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1792, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios.pyx":1601
+      /* "adios.pyx":1793
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]             # <<<<<<<<<<<<<<
  *             if name.startswith('/' + self.name + '/'):
  *                 self.vars[name.replace('/' + self.name + '/', '', 1)] = self.file.vars[name]
  */
-      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1601, __pyx_L1_error)
+      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1793, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1601, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1793, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1601, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1793, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       __pyx_t_10 = 0;
@@ -24432,7 +27517,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1601, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1793, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_9) {
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
@@ -24446,15 +27531,15 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_8 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1601, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1793, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1601, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1793, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios.pyx":1600
+      /* "adios.pyx":1792
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24463,7 +27548,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     }
 
-    /* "adios.pyx":1602
+    /* "adios.pyx":1794
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24472,31 +27557,31 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1602, __pyx_L1_error)
+      __PYX_ERR(0, 1794, __pyx_L1_error)
     }
-    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1794, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1602, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1794, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_3, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1602, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_3, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1794, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios.pyx":1603
+      /* "adios.pyx":1795
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  *             if name.startswith('/' + self.name + '/'):
  *                 self.vars[name.replace('/' + self.name + '/', '', 1)] = self.file.vars[name]             # <<<<<<<<<<<<<<
  * 
  *         self.attrs = softdict()
  */
-      __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_t_11 = NULL;
@@ -24511,7 +27596,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_9 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      __pyx_t_9 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       if (__pyx_t_11) {
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -24525,15 +27610,15 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_8 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 1603, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 1795, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "adios.pyx":1602
+      /* "adios.pyx":1794
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24542,7 +27627,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     }
 
-    /* "adios.pyx":1599
+    /* "adios.pyx":1791
  * 
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():             # <<<<<<<<<<<<<<
@@ -24552,14 +27637,14 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1605
+  /* "adios.pyx":1797
  *                 self.vars[name.replace('/' + self.name + '/', '', 1)] = self.file.vars[name]
  * 
  *         self.attrs = softdict()             # <<<<<<<<<<<<<<
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -24567,14 +27652,14 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   __pyx_v_self->attrs = ((struct __pyx_obj_5adios_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1606
+  /* "adios.pyx":1798
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1606, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -24587,10 +27672,10 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24598,9 +27683,9 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1606, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1798, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1606, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1798, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -24608,17 +27693,17 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1606, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1798, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1606, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1798, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -24628,17 +27713,17 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1606, __pyx_L1_error)
+          else __PYX_ERR(0, 1798, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_1);
     }
-    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1606, __pyx_L1_error)
+    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1798, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1607
+    /* "adios.pyx":1799
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24647,26 +27732,26 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1607, __pyx_L1_error)
+      __PYX_ERR(0, 1799, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1799, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1607, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1799, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios.pyx":1608
+      /* "adios.pyx":1800
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  */
-      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1608, __pyx_L1_error)
+      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1608, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1800, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1608, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1800, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = NULL;
       __pyx_t_10 = 0;
@@ -24680,7 +27765,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1608, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1800, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_8) {
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
@@ -24694,15 +27779,15 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1608, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1800, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 1608, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 1800, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios.pyx":1607
+      /* "adios.pyx":1799
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24711,7 +27796,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     }
 
-    /* "adios.pyx":1609
+    /* "adios.pyx":1801
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24720,31 +27805,31 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1609, __pyx_L1_error)
+      __PYX_ERR(0, 1801, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1801, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1609, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1801, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios.pyx":1610
+      /* "adios.pyx":1802
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, varname):
  */
-      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_9 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_t_11 = NULL;
@@ -24759,7 +27844,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_8 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       if (__pyx_t_11) {
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -24773,15 +27858,15 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_9 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1610, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1802, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios.pyx":1609
+      /* "adios.pyx":1801
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24790,7 +27875,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
  */
     }
 
-    /* "adios.pyx":1606
+    /* "adios.pyx":1798
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
@@ -24800,7 +27885,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":1594
+  /* "adios.pyx":1786
  *     cpdef public softdict attrs
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -24827,7 +27912,7 @@ static int __pyx_pf_5adios_5group___init__(struct __pyx_obj_5adios_group *__pyx_
   return __pyx_r;
 }
 
-/* "adios.pyx":1612
+/* "adios.pyx":1804
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -24873,7 +27958,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios.pyx":1623
+  /* "adios.pyx":1815
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -24884,14 +27969,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1624
+    /* "adios.pyx":1816
  *         """
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1624, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1816, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -24899,7 +27984,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":1623
+    /* "adios.pyx":1815
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -24908,37 +27993,37 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
   }
 
-  /* "adios.pyx":1626
+  /* "adios.pyx":1818
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1626, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1818, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1627
+    /* "adios.pyx":1819
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1627, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1819, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1627, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1819, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 1627, __pyx_L1_error)
+    __PYX_ERR(0, 1819, __pyx_L1_error)
 
-    /* "adios.pyx":1626
+    /* "adios.pyx":1818
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -24947,7 +28032,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
   }
 
-  /* "adios.pyx":1629
+  /* "adios.pyx":1821
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -24958,26 +28043,26 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1629, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1821, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1629, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1821, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1629, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1821, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1629, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1821, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1629, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1821, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1629, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1821, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -24987,7 +28072,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1629, __pyx_L1_error)
+          else __PYX_ERR(0, 1821, __pyx_L1_error)
         }
         break;
       }
@@ -24996,7 +28081,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":1630
+    /* "adios.pyx":1822
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -25007,20 +28092,20 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1631
+      /* "adios.pyx":1823
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1631, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1823, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1631, __pyx_L1_error)
+      __PYX_ERR(0, 1823, __pyx_L1_error)
 
-      /* "adios.pyx":1630
+      /* "adios.pyx":1822
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -25029,35 +28114,35 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
     }
 
-    /* "adios.pyx":1633
+    /* "adios.pyx":1825
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1633, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1825, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1633, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1825, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1633, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1825, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1634
+      /* "adios.pyx":1826
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__46, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1634, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__47, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1826, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":1633
+      /* "adios.pyx":1825
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -25066,14 +28151,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
     }
 
-    /* "adios.pyx":1636
+    /* "adios.pyx":1828
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1636, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1828, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25086,19 +28171,19 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1828, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1828, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1636, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1828, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":1637
+      /* "adios.pyx":1829
  * 
  *             if key_ in self.vars.keys():
  *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
@@ -25106,7 +28191,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  *             if key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1637, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1829, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25119,16 +28204,16 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1829, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1637, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1829, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1829, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -25138,7 +28223,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1636
+      /* "adios.pyx":1828
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -25147,14 +28232,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
     }
 
-    /* "adios.pyx":1639
+    /* "adios.pyx":1831
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1831, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25167,19 +28252,19 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1831, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1831, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1639, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1831, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1640
+      /* "adios.pyx":1832
  * 
  *             if key_ in self.attrs.keys():
  *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
@@ -25187,7 +28272,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  *             if '/'+key_ in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1832, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25200,16 +28285,16 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1832, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1640, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1832, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1640, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1832, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
@@ -25219,7 +28304,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1639
+      /* "adios.pyx":1831
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -25228,16 +28313,16 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
     }
 
-    /* "adios.pyx":1642
+    /* "adios.pyx":1834
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get('/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1642, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1642, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -25250,20 +28335,20 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1642, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1834, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1642, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1834, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1642, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1834, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":1643
+      /* "adios.pyx":1835
  * 
  *             if '/'+key_ in self.vars.keys():
  *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -25271,9 +28356,9 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  *             if '/'+key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1643, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1835, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1643, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1835, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -25286,17 +28371,17 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1835, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1643, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1835, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1835, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
@@ -25306,7 +28391,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1642
+      /* "adios.pyx":1834
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -25315,16 +28400,16 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
     }
 
-    /* "adios.pyx":1645
+    /* "adios.pyx":1837
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get('/'+key_)
  * 
  */
-    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1645, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1837, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1645, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1837, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -25337,20 +28422,20 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1645, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1837, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1645, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1837, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1645, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1837, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios.pyx":1646
+      /* "adios.pyx":1838
  * 
  *             if '/'+key_ in self.attrs.keys():
  *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -25358,9 +28443,9 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  *             for name in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1646, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1838, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1646, __pyx_L1_error)
+      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1838, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25373,17 +28458,17 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1646, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1838, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1646, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1838, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
         __pyx_t_10 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1646, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1838, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -25393,7 +28478,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios.pyx":1645
+      /* "adios.pyx":1837
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -25402,14 +28487,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
     }
 
-    /* "adios.pyx":1648
+    /* "adios.pyx":1840
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1840, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25422,10 +28507,10 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1648, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1840, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1648, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1840, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25433,9 +28518,9 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1840, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1648, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1840, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -25443,17 +28528,17 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1648, __pyx_L1_error)
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1840, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1648, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1840, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1648, __pyx_L1_error)
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1840, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1648, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1840, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         }
@@ -25463,7 +28548,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1648, __pyx_L1_error)
+            else __PYX_ERR(0, 1840, __pyx_L1_error)
           }
           break;
         }
@@ -25472,14 +28557,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios.pyx":1650
+      /* "adios.pyx":1842
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self.file, self.name + '/' + key_)
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1650, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1842, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -25492,30 +28577,30 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1650, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1842, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L16_bool_binop_done;
       }
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1650, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1842, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1650, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1842, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -25528,28 +28613,28 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1650, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1842, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L16_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios.pyx":1651
+        /* "adios.pyx":1843
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self.file, self.name + '/' + key_)             # <<<<<<<<<<<<<<
@@ -25557,12 +28642,12 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  *             for name in self.attrs.keys():
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_7 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1651, __pyx_L1_error)
+        __pyx_t_7 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1843, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_9 = PyNumber_Add(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1651, __pyx_L1_error)
+        __pyx_t_9 = PyNumber_Add(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1843, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1651, __pyx_L1_error)
+        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1843, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
@@ -25570,7 +28655,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         __Pyx_GIVEREF(__pyx_t_9);
         PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9);
         __pyx_t_9 = 0;
-        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1651, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1843, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_r = __pyx_t_9;
@@ -25579,7 +28664,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         goto __pyx_L0;
 
-        /* "adios.pyx":1650
+        /* "adios.pyx":1842
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -25588,7 +28673,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
       }
 
-      /* "adios.pyx":1648
+      /* "adios.pyx":1840
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -25598,14 +28683,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios.pyx":1653
+    /* "adios.pyx":1845
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1653, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1845, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -25618,10 +28703,10 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       }
     }
     if (__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1653, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1845, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1653, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1845, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -25629,9 +28714,9 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1653, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1845, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1653, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1845, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     for (;;) {
@@ -25639,17 +28724,17 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         if (likely(PyList_CheckExact(__pyx_t_9))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1653, __pyx_L1_error)
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1845, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1653, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1845, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1653, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1845, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1653, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1845, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -25659,7 +28744,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1653, __pyx_L1_error)
+            else __PYX_ERR(0, 1845, __pyx_L1_error)
           }
           break;
         }
@@ -25668,14 +28753,14 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "adios.pyx":1655
+      /* "adios.pyx":1847
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self.file, self.name + '/' + key_)
  * 
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1847, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -25688,30 +28773,30 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1655, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1847, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L21_bool_binop_done;
       }
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1847, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1655, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1847, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -25724,28 +28809,28 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1655, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1847, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L21_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios.pyx":1656
+        /* "adios.pyx":1848
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self.file, self.name + '/' + key_)             # <<<<<<<<<<<<<<
@@ -25753,12 +28838,12 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  *         raise KeyError(key_)
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1656, __pyx_L1_error)
+        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1848, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
+        __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1848, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1656, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1848, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
@@ -25766,7 +28851,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         __Pyx_GIVEREF(__pyx_t_7);
         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
         __pyx_t_7 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1656, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1848, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_7;
@@ -25775,7 +28860,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         goto __pyx_L0;
 
-        /* "adios.pyx":1655
+        /* "adios.pyx":1847
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -25784,7 +28869,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
  */
       }
 
-      /* "adios.pyx":1653
+      /* "adios.pyx":1845
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -25794,7 +28879,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
     }
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-    /* "adios.pyx":1629
+    /* "adios.pyx":1821
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -25804,27 +28889,27 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios.pyx":1658
+  /* "adios.pyx":1850
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *         raise KeyError(key_)             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 1658, __pyx_L1_error) }
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1658, __pyx_L1_error)
+  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 1850, __pyx_L1_error) }
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1850, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_key_);
   __Pyx_GIVEREF(__pyx_v_key_);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key_);
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1658, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1850, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_Raise(__pyx_t_9, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __PYX_ERR(0, 1658, __pyx_L1_error)
+  __PYX_ERR(0, 1850, __pyx_L1_error)
 
-  /* "adios.pyx":1612
+  /* "adios.pyx":1804
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -25852,7 +28937,7 @@ static PyObject *__pyx_pf_5adios_5group_2__getitem__(struct __pyx_obj_5adios_gro
   return __pyx_r;
 }
 
-/* "adios.pyx":1660
+/* "adios.pyx":1852
  *         raise KeyError(key_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -25886,7 +28971,7 @@ static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1662
+  /* "adios.pyx":1854
  *     def __repr__(self):
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \             # <<<<<<<<<<<<<<
@@ -25895,14 +28980,14 @@ static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":1663
+  /* "adios.pyx":1855
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  *                 (self.vars.keys(),             # <<<<<<<<<<<<<<
  *                  self.attrs.keys())
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1663, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1855, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -25915,22 +29000,22 @@ static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1663, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1855, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1663, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1855, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":1664
+  /* "adios.pyx":1856
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  *                 (self.vars.keys(),
  *                  self.attrs.keys())             # <<<<<<<<<<<<<<
  * 
  *     ## To support ipython tab completion
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1664, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1856, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25943,22 +29028,22 @@ static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1664, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1856, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1664, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1856, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":1663
+  /* "adios.pyx":1855
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  *                 (self.vars.keys(),             # <<<<<<<<<<<<<<
  *                  self.attrs.keys())
  * 
  */
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1663, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1855, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -25967,21 +29052,21 @@ static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1662
+  /* "adios.pyx":1854
  *     def __repr__(self):
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.vars.keys(),
  *                  self.attrs.keys())
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosGroup_vars_r_attrs_r, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1662, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosGroup_vars_r_attrs_r, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1854, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1660
+  /* "adios.pyx":1852
  *         raise KeyError(key_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -26003,7 +29088,7 @@ static PyObject *__pyx_pf_5adios_5group_4__repr__(struct __pyx_obj_5adios_group
   return __pyx_r;
 }
 
-/* "adios.pyx":1667
+/* "adios.pyx":1859
  * 
  *     ## To support ipython tab completion
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -26033,7 +29118,7 @@ static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_gro
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios.pyx":1668
+  /* "adios.pyx":1860
  *     ## To support ipython tab completion
  *     def __getattr__(self, varname):
  *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
@@ -26041,7 +29126,7 @@ static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_gro
  *     def __dir__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1668, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1860, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26054,16 +29139,16 @@ static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_gro
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1668, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1860, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1668, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1860, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1668, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1860, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -26072,7 +29157,7 @@ static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_gro
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1667
+  /* "adios.pyx":1859
  * 
  *     ## To support ipython tab completion
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -26094,7 +29179,7 @@ static PyObject *__pyx_pf_5adios_5group_6__getattr__(struct __pyx_obj_5adios_gro
   return __pyx_r;
 }
 
-/* "adios.pyx":1670
+/* "adios.pyx":1862
  *         return self.__getitem__(varname)
  * 
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -26129,28 +29214,28 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios.pyx":1671
+  /* "adios.pyx":1863
  * 
  *     def __dir__(self):
  *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())
  */
-  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_k0 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1672
+  /* "adios.pyx":1864
  *     def __dir__(self):
  *         k0 = dir(type(self))
  *         k1 = normalize_key(self.vars.keys())             # <<<<<<<<<<<<<<
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26163,10 +29248,10 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1864, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -26181,17 +29266,17 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -26199,16 +29284,16 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
   __pyx_v_k1 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1673
+  /* "adios.pyx":1865
  *         k0 = dir(type(self))
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
  *         return k0 + k1 + k2
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1673, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1673, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -26221,10 +29306,10 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1673, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1865, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1673, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1865, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26239,17 +29324,17 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1673, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1865, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1673, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1865, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1673, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1865, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -26257,7 +29342,7 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
   __pyx_v_k2 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1674
+  /* "adios.pyx":1866
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
@@ -26265,16 +29350,16 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
  *     ## Require for dictionary key completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1674, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1866, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1674, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1866, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1670
+  /* "adios.pyx":1862
  *         return self.__getitem__(varname)
  * 
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -26300,7 +29385,7 @@ static PyObject *__pyx_pf_5adios_5group_8__dir__(struct __pyx_obj_5adios_group *
   return __pyx_r;
 }
 
-/* "adios.pyx":1677
+/* "adios.pyx":1869
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -26331,7 +29416,7 @@ static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios.pyx":1678
+  /* "adios.pyx":1870
  *     ## Require for dictionary key completion
  *     def keys(self):
  *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
@@ -26339,7 +29424,7 @@ static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__
  *     def dirs(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26352,14 +29437,14 @@ static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1870, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1870, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1678, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -26372,14 +29457,14 @@ static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1870, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1870, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1678, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1870, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -26387,7 +29472,7 @@ static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1677
+  /* "adios.pyx":1869
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -26409,7 +29494,7 @@ static PyObject *__pyx_pf_5adios_5group_10keys(struct __pyx_obj_5adios_group *__
   return __pyx_r;
 }
 
-/* "adios.pyx":1680
+/* "adios.pyx":1872
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -26447,26 +29532,26 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("dirs", 0);
 
-  /* "adios.pyx":1682
+  /* "adios.pyx":1874
  *     def dirs(self):
  *         """ Return child dir names """
  *         s = set()             # <<<<<<<<<<<<<<
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1874, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_s = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1683
+  /* "adios.pyx":1875
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1683, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26479,10 +29564,10 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -26490,9 +29575,9 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1875, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1875, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -26500,17 +29585,17 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1683, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1875, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1683, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1875, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -26520,7 +29605,7 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1683, __pyx_L1_error)
+          else __PYX_ERR(0, 1875, __pyx_L1_error)
         }
         break;
       }
@@ -26529,40 +29614,40 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":1684
+    /* "adios.pyx":1876
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__48, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__49, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios.pyx":1685
+    /* "adios.pyx":1877
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_7 = NULL;
@@ -26576,33 +29661,33 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
       }
     }
     if (!__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1685, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1877, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1685, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1877, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1685, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1877, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":1683
+    /* "adios.pyx":1875
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -26612,14 +29697,14 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":1686
+  /* "adios.pyx":1878
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1686, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1878, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -26632,10 +29717,10 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1878, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1878, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -26643,9 +29728,9 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1878, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1878, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -26653,17 +29738,17 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1686, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1878, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1686, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1878, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1686, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1878, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1686, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1878, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -26673,7 +29758,7 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1686, __pyx_L1_error)
+          else __PYX_ERR(0, 1878, __pyx_L1_error)
         }
         break;
       }
@@ -26682,40 +29767,40 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios.pyx":1687
+    /* "adios.pyx":1879
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__51, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1687, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__52, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios.pyx":1688
+    /* "adios.pyx":1880
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_8 = NULL;
@@ -26729,33 +29814,33 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
       }
     }
     if (!__pyx_t_8) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1688, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1880, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1688, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1880, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1688, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1880, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1688, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1880, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios.pyx":1686
+    /* "adios.pyx":1878
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -26765,7 +29850,7 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1689
+  /* "adios.pyx":1881
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))             # <<<<<<<<<<<<<<
@@ -26773,20 +29858,20 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
  * ## Helper dict
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1689, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1881, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 1689, __pyx_L1_error)
-  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1689, __pyx_L1_error)
+  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 1881, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1881, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1689, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1881, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1680
+  /* "adios.pyx":1872
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -26811,7 +29896,7 @@ static PyObject *__pyx_pf_5adios_5group_12dirs(struct __pyx_obj_5adios_group *__
   return __pyx_r;
 }
 
-/* "adios.pyx":1591
+/* "adios.pyx":1783
  * 
  *     ## Public Memeber
  *     cpdef public softdict vars             # <<<<<<<<<<<<<<
@@ -26866,7 +29951,7 @@ static int __pyx_pf_5adios_5group_4vars_2__set__(struct __pyx_obj_5adios_group *
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 1591, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 1783, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -26916,7 +30001,7 @@ static int __pyx_pf_5adios_5group_4vars_4__del__(struct __pyx_obj_5adios_group *
   return __pyx_r;
 }
 
-/* "adios.pyx":1592
+/* "adios.pyx":1784
  *     ## Public Memeber
  *     cpdef public softdict vars
  *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
@@ -26971,7 +30056,7 @@ static int __pyx_pf_5adios_5group_5attrs_2__set__(struct __pyx_obj_5adios_group
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 1592, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_5adios_softdict))))) __PYX_ERR(0, 1784, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -27021,7 +30106,7 @@ static int __pyx_pf_5adios_5group_5attrs_4__del__(struct __pyx_obj_5adios_group
   return __pyx_r;
 }
 
-/* "adios.pyx":1694
+/* "adios.pyx":1886
  * cdef class smartdict(dict):
  *     cdef factory
  *     def __init__(self, factory):             # <<<<<<<<<<<<<<
@@ -27054,7 +30139,7 @@ static int __pyx_pw_5adios_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1694, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1886, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -27065,7 +30150,7 @@ static int __pyx_pw_5adios_9smartdict_1__init__(PyObject *__pyx_v_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1694, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1886, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -27087,14 +30172,14 @@ static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1695
+  /* "adios.pyx":1887
  *     cdef factory
  *     def __init__(self, factory):
  *         dict.__init__(self)             # <<<<<<<<<<<<<<
  *         self.factory = factory
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1695, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1887, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -27107,23 +30192,23 @@ static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1887, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1695, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1887, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1887, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1696
+  /* "adios.pyx":1888
  *     def __init__(self, factory):
  *         dict.__init__(self)
  *         self.factory = factory             # <<<<<<<<<<<<<<
@@ -27136,7 +30221,7 @@ static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict
   __Pyx_DECREF(__pyx_v_self->factory);
   __pyx_v_self->factory = __pyx_v_factory;
 
-  /* "adios.pyx":1694
+  /* "adios.pyx":1886
  * cdef class smartdict(dict):
  *     cdef factory
  *     def __init__(self, factory):             # <<<<<<<<<<<<<<
@@ -27159,7 +30244,7 @@ static int __pyx_pf_5adios_9smartdict___init__(struct __pyx_obj_5adios_smartdict
   return __pyx_r;
 }
 
-/* "adios.pyx":1698
+/* "adios.pyx":1890
  *         self.factory = factory
  * 
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -27192,7 +30277,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "adios.pyx":1699
+  /* "adios.pyx":1891
  * 
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -27201,23 +30286,23 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
  */
   if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
     PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "keys", "dict");
-    __PYX_ERR(0, 1699, __pyx_L1_error)
+    __PYX_ERR(0, 1891, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1891, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1699, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1891, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "adios.pyx":1700
+    /* "adios.pyx":1892
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):
  *             dict.__setitem__(self, key, value)             # <<<<<<<<<<<<<<
  *         else:
  *             self.factory(key, value)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_setitem); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1700, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_setitem); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1892, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -27231,7 +30316,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1700, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1892, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -27245,13 +30330,13 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
     __Pyx_INCREF(__pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1892, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios.pyx":1699
+    /* "adios.pyx":1891
  * 
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -27261,7 +30346,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":1702
+  /* "adios.pyx":1894
  *             dict.__setitem__(self, key, value)
  *         else:
  *             self.factory(key, value)             # <<<<<<<<<<<<<<
@@ -27282,7 +30367,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1702, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1894, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_7) {
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
@@ -27293,7 +30378,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
     __Pyx_INCREF(__pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1894, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -27301,7 +30386,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
   }
   __pyx_L3:;
 
-  /* "adios.pyx":1698
+  /* "adios.pyx":1890
  *         self.factory = factory
  * 
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -27324,7 +30409,7 @@ static int __pyx_pf_5adios_9smartdict_2__setitem__(struct __pyx_obj_5adios_smart
   return __pyx_r;
 }
 
-/* "adios.pyx":1734
+/* "adios.pyx":1928
  *     property fname:
  *         """ The filename to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27350,7 +30435,7 @@ static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1735
+  /* "adios.pyx":1929
  *         """ The filename to write. """
  *         def __get__(self):
  *             return self.fname             # <<<<<<<<<<<<<<
@@ -27362,7 +30447,7 @@ static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_
   __pyx_r = __pyx_v_self->fname;
   goto __pyx_L0;
 
-  /* "adios.pyx":1734
+  /* "adios.pyx":1928
  *     property fname:
  *         """ The filename to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27377,7 +30462,7 @@ static PyObject *__pyx_pf_5adios_6writer_5fname___get__(struct __pyx_obj_5adios_
   return __pyx_r;
 }
 
-/* "adios.pyx":1739
+/* "adios.pyx":1933
  *     property gname:
  *         """ The groupname associated with the file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27403,7 +30488,7 @@ static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1740
+  /* "adios.pyx":1934
  *         """ The groupname associated with the file. """
  *         def __get__(self):
  *             return self.gname             # <<<<<<<<<<<<<<
@@ -27415,7 +30500,7 @@ static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_
   __pyx_r = __pyx_v_self->gname;
   goto __pyx_L0;
 
-  /* "adios.pyx":1739
+  /* "adios.pyx":1933
  *     property gname:
  *         """ The groupname associated with the file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27430,7 +30515,7 @@ static PyObject *__pyx_pf_5adios_6writer_5gname___get__(struct __pyx_obj_5adios_
   return __pyx_r;
 }
 
-/* "adios.pyx":1744
+/* "adios.pyx":1938
  *     property is_noxml:
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27457,7 +30542,7 @@ static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1745
+  /* "adios.pyx":1939
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):
  *             return self.is_noxml             # <<<<<<<<<<<<<<
@@ -27465,13 +30550,13 @@ static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adi
  *     property mode:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1745, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1939, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1744
+  /* "adios.pyx":1938
  *     property is_noxml:
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27490,7 +30575,7 @@ static PyObject *__pyx_pf_5adios_6writer_8is_noxml___get__(struct __pyx_obj_5adi
   return __pyx_r;
 }
 
-/* "adios.pyx":1749
+/* "adios.pyx":1943
  *     property mode:
  *         """ Writing mode: overwrite or append. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27516,7 +30601,7 @@ static PyObject *__pyx_pf_5adios_6writer_4mode___get__(struct __pyx_obj_5adios_w
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1750
+  /* "adios.pyx":1944
  *         """ Writing mode: overwrite or append. """
  *         def __get__(self):
  *             return self.mode             # <<<<<<<<<<<<<<
@@ -27528,7 +30613,7 @@ static PyObject *__pyx_pf_5adios_6writer_4mode___get__(struct __pyx_obj_5adios_w
   __pyx_r = __pyx_v_self->mode;
   goto __pyx_L0;
 
-  /* "adios.pyx":1749
+  /* "adios.pyx":1943
  *     property mode:
  *         """ Writing mode: overwrite or append. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27543,7 +30628,7 @@ static PyObject *__pyx_pf_5adios_6writer_4mode___get__(struct __pyx_obj_5adios_w
   return __pyx_r;
 }
 
-/* "adios.pyx":1754
+/* "adios.pyx":1948
  *     property vars:
  *         """ Dictionary of variables to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27569,7 +30654,7 @@ static PyObject *__pyx_pf_5adios_6writer_4vars___get__(struct __pyx_obj_5adios_w
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1755
+  /* "adios.pyx":1949
  *         """ Dictionary of variables to write. """
  *         def __get__(self):
  *             return self.vars             # <<<<<<<<<<<<<<
@@ -27581,7 +30666,7 @@ static PyObject *__pyx_pf_5adios_6writer_4vars___get__(struct __pyx_obj_5adios_w
   __pyx_r = __pyx_v_self->vars;
   goto __pyx_L0;
 
-  /* "adios.pyx":1754
+  /* "adios.pyx":1948
  *     property vars:
  *         """ Dictionary of variables to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27596,7 +30681,7 @@ static PyObject *__pyx_pf_5adios_6writer_4vars___get__(struct __pyx_obj_5adios_w
   return __pyx_r;
 }
 
-/* "adios.pyx":1759
+/* "adios.pyx":1953
  *     property attrs:
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27622,19 +30707,19 @@ static PyObject *__pyx_pf_5adios_6writer_5attrs___get__(struct __pyx_obj_5adios_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1760
+  /* "adios.pyx":1954
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):
  *             return self.attrs             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, str fname,
+ *     property timeaggregation_buffersize:
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->attrs);
   __pyx_r = __pyx_v_self->attrs;
   goto __pyx_L0;
 
-  /* "adios.pyx":1759
+  /* "adios.pyx":1953
  *     property attrs:
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27649,8 +30734,68 @@ static PyObject *__pyx_pf_5adios_6writer_5attrs___get__(struct __pyx_obj_5adios_
   return __pyx_r;
 }
 
-/* "adios.pyx":1762
- *             return self.attrs
+/* "adios.pyx":1958
+ *     property timeaggregation_buffersize:
+ *         """ Get time-aggregation buffersize. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.timeaggregation_buffersize
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_26timeaggregation_buffersize_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_26timeaggregation_buffersize_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_6writer_26timeaggregation_buffersize___get__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_26timeaggregation_buffersize___get__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":1959
+ *         """ Get time-aggregation buffersize. """
+ *         def __get__(self):
+ *             return self.timeaggregation_buffersize             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str fname,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->timeaggregation_buffersize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1959, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":1958
+ *     property timeaggregation_buffersize:
+ *         """ Get time-aggregation buffersize. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.timeaggregation_buffersize
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.writer.timeaggregation_buffersize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":1961
+ *             return self.timeaggregation_buffersize
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
@@ -27704,7 +30849,7 @@ static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1762, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1961, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -27718,10 +30863,10 @@ static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *_
     }
     __pyx_v_fname = ((PyObject*)values[0]);
     if (values[1]) {
-      __pyx_v_is_noxml = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_is_noxml == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1763, __pyx_L3_error)
+      __pyx_v_is_noxml = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_is_noxml == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1962, __pyx_L3_error)
     } else {
 
-      /* "adios.pyx":1763
+      /* "adios.pyx":1962
  * 
  *     def __init__(self, str fname,
  *                  bint is_noxml = True,             # <<<<<<<<<<<<<<
@@ -27732,25 +30877,25 @@ static int __pyx_pw_5adios_6writer_1__init__(PyObject *__pyx_v_self, PyObject *_
     }
     __pyx_v_mode = ((PyObject*)values[2]);
     if (values[3]) {
-      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[3]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 1765, __pyx_L3_error)
+      __pyx_v_comm = __Pyx_PyInt_As_MPI_Comm(values[3]); if (unlikely((__pyx_v_comm == (MPI_Comm)-1) && PyErr_Occurred())) __PYX_ERR(0, 1964, __pyx_L3_error)
     } else {
-      __pyx_v_comm = __pyx_k__53;
+      __pyx_v_comm = __pyx_k__54;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1762, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1961, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.writer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 1762, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 1764, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 1961, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 1963, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_6writer___init__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_fname, __pyx_v_is_noxml, __pyx_v_mode, __pyx_v_comm);
 
-  /* "adios.pyx":1762
- *             return self.attrs
+  /* "adios.pyx":1961
+ *             return self.timeaggregation_buffersize
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
@@ -27773,9 +30918,18 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   struct __pyx_opt_args_5adios_init_noxml __pyx_t_2;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1766
+  /* "adios.pyx":1965
  *                  str mode = "w",
  *                  MPI_Comm comm = MPI_COMM_WORLD):
+ *         self.gid = 0             # <<<<<<<<<<<<<<
+ *         self.fname = fname
+ *         self.method = ""
+ */
+  __pyx_v_self->gid = 0;
+
+  /* "adios.pyx":1966
+ *                  MPI_Comm comm = MPI_COMM_WORLD):
+ *         self.gid = 0
  *         self.fname = fname             # <<<<<<<<<<<<<<
  *         self.method = ""
  *         self.method_params = ""
@@ -27786,8 +30940,8 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __Pyx_DECREF(__pyx_v_self->fname);
   __pyx_v_self->fname = __pyx_v_fname;
 
-  /* "adios.pyx":1767
- *                  MPI_Comm comm = MPI_COMM_WORLD):
+  /* "adios.pyx":1967
+ *         self.gid = 0
  *         self.fname = fname
  *         self.method = ""             # <<<<<<<<<<<<<<
  *         self.method_params = ""
@@ -27799,7 +30953,7 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __Pyx_DECREF(__pyx_v_self->method);
   __pyx_v_self->method = __pyx_kp_s__10;
 
-  /* "adios.pyx":1768
+  /* "adios.pyx":1968
  *         self.fname = fname
  *         self.method = ""
  *         self.method_params = ""             # <<<<<<<<<<<<<<
@@ -27812,7 +30966,7 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __Pyx_DECREF(__pyx_v_self->method_params);
   __pyx_v_self->method_params = __pyx_kp_s__10;
 
-  /* "adios.pyx":1769
+  /* "adios.pyx":1969
  *         self.method = ""
  *         self.method_params = ""
  *         self.is_noxml = is_noxml             # <<<<<<<<<<<<<<
@@ -27821,7 +30975,7 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
  */
   __pyx_v_self->is_noxml = __pyx_v_is_noxml;
 
-  /* "adios.pyx":1770
+  /* "adios.pyx":1970
  *         self.method_params = ""
  *         self.is_noxml = is_noxml
  *         self.mode = mode             # <<<<<<<<<<<<<<
@@ -27834,7 +30988,7 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __Pyx_DECREF(__pyx_v_self->mode);
   __pyx_v_self->mode = __pyx_v_mode;
 
-  /* "adios.pyx":1771
+  /* "adios.pyx":1971
  *         self.is_noxml = is_noxml
  *         self.mode = mode
  *         self.comm = comm             # <<<<<<<<<<<<<<
@@ -27843,14 +30997,14 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
  */
   __pyx_v_self->comm = __pyx_v_comm;
 
-  /* "adios.pyx":1772
+  /* "adios.pyx":1972
  *         self.mode = mode
  *         self.comm = comm
  *         self.vars = dict()             # <<<<<<<<<<<<<<
  *         self.attrs = dict()
- * 
+ *         self.timeaggregation_buffersize = 0
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1772, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1972, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->vars);
@@ -27858,14 +31012,14 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __pyx_v_self->vars = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1773
+  /* "adios.pyx":1973
  *         self.comm = comm
  *         self.vars = dict()
  *         self.attrs = dict()             # <<<<<<<<<<<<<<
+ *         self.timeaggregation_buffersize = 0
  * 
- *         init_noxml(comm)
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1973, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -27873,8 +31027,17 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __pyx_v_self->attrs = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1775
+  /* "adios.pyx":1974
+ *         self.vars = dict()
  *         self.attrs = dict()
+ *         self.timeaggregation_buffersize = 0             # <<<<<<<<<<<<<<
+ * 
+ *         init_noxml(comm)
+ */
+  __pyx_v_self->timeaggregation_buffersize = 0;
+
+  /* "adios.pyx":1976
+ *         self.timeaggregation_buffersize = 0
  * 
  *         init_noxml(comm)             # <<<<<<<<<<<<<<
  *     ##def __var_factory__(self, name, value):
@@ -27884,8 +31047,8 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_f_5adios_init_noxml(0, &__pyx_t_2); 
 
-  /* "adios.pyx":1762
- *             return self.attrs
+  /* "adios.pyx":1961
+ *             return self.timeaggregation_buffersize
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
@@ -27904,17 +31067,17 @@ static int __pyx_pf_5adios_6writer___init__(struct __pyx_obj_5adios_writer *__py
   return __pyx_r;
 }
 
-/* "adios.pyx":1782
+/* "adios.pyx":1983
  *     ##    print "attr_factory:", name, value
  * 
- *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *     def declare_group(self, str gname = None,             # <<<<<<<<<<<<<<
  *                       str method = "POSIX1",
  *                       str method_params = ""):
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_6writer_2declare_group[] = "writer.declare_group(self, str gname, str method='POSIX1', str method_params='')\n\n        Define a group associated with the file.\n\n        Args:\n            gname (str): group name.\n            method (str, optional): Adios write method (default: 'POSIX1')\n            method_params (str, optional): parameters for the write method (default: '')\n\n        Example:\n\n        >>>  fw.declare_group('group', method='MPI_, metho [...]
+static char __pyx_doc_5adios_6writer_2declare_group[] = "writer.declare_group(self, str gname=None, str method='POSIX1', str method_params='')\n\n        Define a group associated with the file.\n\n        Args:\n            gname (str): group name.\n            method (str, optional): Adios write method (default: 'POSIX1')\n            method_params (str, optional): parameters for the write method (default: '')\n\n        Example:\n\n        >>>  fw.declare_group('group', method='MPI_,  [...]
 static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_gname = 0;
   PyObject *__pyx_v_method = 0;
@@ -27925,6 +31088,7 @@ static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self,
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_gname,&__pyx_n_s_method,&__pyx_n_s_method_params,0};
     PyObject* values[3] = {0,0,0};
+    values[0] = ((PyObject*)Py_None);
     values[1] = ((PyObject*)__pyx_n_s_POSIX1);
     values[2] = ((PyObject*)__pyx_kp_s__10);
     if (unlikely(__pyx_kwds)) {
@@ -27940,8 +31104,10 @@ static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self,
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gname);
+          if (value) { values[0] = value; kw_args--; }
+        }
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method);
@@ -27954,14 +31120,14 @@ static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 1782, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 1983, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
+        case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
@@ -27971,15 +31137,15 @@ static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1782, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1983, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.writer.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gname), (&PyString_Type), 1, "gname", 1))) __PYX_ERR(0, 1782, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 1783, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_params), (&PyString_Type), 1, "method_params", 1))) __PYX_ERR(0, 1784, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gname), (&PyString_Type), 1, "gname", 1))) __PYX_ERR(0, 1983, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 1984, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_params), (&PyString_Type), 1, "method_params", 1))) __PYX_ERR(0, 1985, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_6writer_2declare_group(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_gname, __pyx_v_method, __pyx_v_method_params);
 
   /* function exit code */
@@ -27994,42 +31160,101 @@ static PyObject *__pyx_pw_5adios_6writer_3declare_group(PyObject *__pyx_v_self,
 static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_gname, PyObject *__pyx_v_method, PyObject *__pyx_v_method_params) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_5adios_declare_group __pyx_t_2;
+  int __pyx_t_1;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  struct __pyx_opt_args_5adios_select_method __pyx_t_5;
+  int64_t __pyx_t_4;
+  struct __pyx_opt_args_5adios_declare_group __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  struct __pyx_opt_args_5adios_select_method __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("declare_group", 0);
 
-  /* "adios.pyx":1798
+  /* "adios.pyx":1999
  * 
  *         """
- *         self.gid = declare_group(gname, "", 1)             # <<<<<<<<<<<<<<
- *         self.gname = gname
- *         self.method = method
+ *         if gname is not None:             # <<<<<<<<<<<<<<
+ *             self.gname = gname
+ * 
  */
-  __pyx_t_2.__pyx_n = 2;
-  __pyx_t_2.time_index = __pyx_kp_s__10;
-  __pyx_t_2.stats = 1;
-  __pyx_t_1 = __pyx_f_5adios_declare_group(__pyx_v_gname, 0, &__pyx_t_2); 
-  __pyx_v_self->gid = __pyx_t_1;
+  __pyx_t_1 = (__pyx_v_gname != ((PyObject*)Py_None));
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
 
-  /* "adios.pyx":1799
+    /* "adios.pyx":2000
  *         """
- *         self.gid = declare_group(gname, "", 1)
- *         self.gname = gname             # <<<<<<<<<<<<<<
+ *         if gname is not None:
+ *             self.gname = gname             # <<<<<<<<<<<<<<
+ * 
+ *         if self.gname is None:
+ */
+    __Pyx_INCREF(__pyx_v_gname);
+    __Pyx_GIVEREF(__pyx_v_gname);
+    __Pyx_GOTREF(__pyx_v_self->gname);
+    __Pyx_DECREF(__pyx_v_self->gname);
+    __pyx_v_self->gname = __pyx_v_gname;
+
+    /* "adios.pyx":1999
+ * 
+ *         """
+ *         if gname is not None:             # <<<<<<<<<<<<<<
+ *             self.gname = gname
+ * 
+ */
+  }
+
+  /* "adios.pyx":2002
+ *             self.gname = gname
+ * 
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.gname = "group"
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_self->gname == ((PyObject*)Py_None));
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":2003
+ * 
+ *         if self.gname is None:
+ *             self.gname = "group"             # <<<<<<<<<<<<<<
+ * 
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)
+ */
+    __Pyx_INCREF(__pyx_n_s_group);
+    __Pyx_GIVEREF(__pyx_n_s_group);
+    __Pyx_GOTREF(__pyx_v_self->gname);
+    __Pyx_DECREF(__pyx_v_self->gname);
+    __pyx_v_self->gname = __pyx_n_s_group;
+
+    /* "adios.pyx":2002
+ *             self.gname = gname
+ * 
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.gname = "group"
+ * 
+ */
+  }
+
+  /* "adios.pyx":2005
+ *             self.gname = "group"
+ * 
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)             # <<<<<<<<<<<<<<
  *         self.method = method
  *         self.method_params = method_params
  */
-  __Pyx_INCREF(__pyx_v_gname);
-  __Pyx_GIVEREF(__pyx_v_gname);
-  __Pyx_GOTREF(__pyx_v_self->gname);
-  __Pyx_DECREF(__pyx_v_self->gname);
-  __pyx_v_self->gname = __pyx_v_gname;
+  __pyx_t_3 = __pyx_v_self->gname;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_5.__pyx_n = 2;
+  __pyx_t_5.time_index = __pyx_kp_s__10;
+  __pyx_t_5.stats = adios_stat_default;
+  __pyx_t_4 = __pyx_f_5adios_declare_group(((PyObject*)__pyx_t_3), 0, &__pyx_t_5); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_self->gid = __pyx_t_4;
 
-  /* "adios.pyx":1800
- *         self.gid = declare_group(gname, "", 1)
- *         self.gname = gname
+  /* "adios.pyx":2006
+ * 
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)
  *         self.method = method             # <<<<<<<<<<<<<<
  *         self.method_params = method_params
  *         select_method(self.gid, self.method, self.method_params, "")
@@ -28040,12 +31265,12 @@ static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_
   __Pyx_DECREF(__pyx_v_self->method);
   __pyx_v_self->method = __pyx_v_method;
 
-  /* "adios.pyx":1801
- *         self.gname = gname
+  /* "adios.pyx":2007
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)
  *         self.method = method
  *         self.method_params = method_params             # <<<<<<<<<<<<<<
  *         select_method(self.gid, self.method, self.method_params, "")
- * 
+ *         self.set_time_aggregation()
  */
   __Pyx_INCREF(__pyx_v_method_params);
   __Pyx_GIVEREF(__pyx_v_method_params);
@@ -28053,41 +31278,227 @@ static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_
   __Pyx_DECREF(__pyx_v_self->method_params);
   __pyx_v_self->method_params = __pyx_v_method_params;
 
-  /* "adios.pyx":1802
+  /* "adios.pyx":2008
  *         self.method = method
  *         self.method_params = method_params
  *         select_method(self.gid, self.method, self.method_params, "")             # <<<<<<<<<<<<<<
+ *         self.set_time_aggregation()
  * 
- *     def define_var(self, str varname,
  */
   __pyx_t_3 = __pyx_v_self->method;
   __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_v_self->method_params;
-  __Pyx_INCREF(__pyx_t_4);
-  __pyx_t_5.__pyx_n = 2;
-  __pyx_t_5.parameters = ((PyObject*)__pyx_t_4);
-  __pyx_t_5.base_path = __pyx_kp_s__10;
-  __pyx_f_5adios_select_method(__pyx_v_self->gid, ((PyObject*)__pyx_t_3), 0, &__pyx_t_5); 
+  __pyx_t_6 = __pyx_v_self->method_params;
+  __Pyx_INCREF(__pyx_t_6);
+  __pyx_t_7.__pyx_n = 2;
+  __pyx_t_7.parameters = ((PyObject*)__pyx_t_6);
+  __pyx_t_7.base_path = __pyx_kp_s__10;
+  __pyx_f_5adios_select_method(__pyx_v_self->gid, ((PyObject*)__pyx_t_3), 0, &__pyx_t_7); 
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios.pyx":1782
+  /* "adios.pyx":2009
+ *         self.method_params = method_params
+ *         select_method(self.gid, self.method, self.method_params, "")
+ *         self.set_time_aggregation()             # <<<<<<<<<<<<<<
+ * 
+ *     def set_time_aggregation(self, buffer_size = None):
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_time_aggregation); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2009, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_8 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_8)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_8);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_8) {
+    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2009, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  } else {
+    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2009, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "adios.pyx":1983
  *     ##    print "attr_factory:", name, value
  * 
- *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *     def declare_group(self, str gname = None,             # <<<<<<<<<<<<<<
  *                       str method = "POSIX1",
  *                       str method_params = ""):
  */
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios.writer.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1804
- *         select_method(self.gid, self.method, self.method_params, "")
+/* "adios.pyx":2011
+ *         self.set_time_aggregation()
+ * 
+ *     def set_time_aggregation(self, buffer_size = None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Set time-aggregation buffersize.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_6writer_5set_time_aggregation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_6writer_4set_time_aggregation[] = "writer.set_time_aggregation(self, buffer_size=None)\n\n        Set time-aggregation buffersize.\n        ";
+static PyObject *__pyx_pw_5adios_6writer_5set_time_aggregation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_buffer_size = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_time_aggregation (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buffer_size,0};
+    PyObject* values[1] = {0};
+    values[0] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_time_aggregation") < 0)) __PYX_ERR(0, 2011, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_buffer_size = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2011, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios.writer.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_5adios_6writer_4set_time_aggregation(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_buffer_size);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_6writer_4set_time_aggregation(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_buffer_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  uint64_t __pyx_t_3;
+  __Pyx_RefNannySetupContext("set_time_aggregation", 0);
+
+  /* "adios.pyx":2015
+ *         Set time-aggregation buffersize.
+ *         """
+ *         if buffer_size is not None:             # <<<<<<<<<<<<<<
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:
+ */
+  __pyx_t_1 = (__pyx_v_buffer_size != Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":2016
+ *         """
+ *         if buffer_size is not None:
+ *             self.timeaggregation_buffersize = buffer_size             # <<<<<<<<<<<<<<
+ *         if self.gid > 0:
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ */
+    __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_v_buffer_size); if (unlikely((__pyx_t_3 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2016, __pyx_L1_error)
+    __pyx_v_self->timeaggregation_buffersize = __pyx_t_3;
+
+    /* "adios.pyx":2015
+ *         Set time-aggregation buffersize.
+ *         """
+ *         if buffer_size is not None:             # <<<<<<<<<<<<<<
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:
+ */
+  }
+
+  /* "adios.pyx":2017
+ *         if buffer_size is not None:
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:             # <<<<<<<<<<<<<<
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ * 
+ */
+  __pyx_t_2 = ((__pyx_v_self->gid > 0) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":2018
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);             # <<<<<<<<<<<<<<
+ * 
+ *     def define_var(self, str varname,
+ */
+    __pyx_f_5adios_set_time_aggregation(__pyx_v_self->gid, __pyx_v_self->timeaggregation_buffersize, 0, 0);
+
+    /* "adios.pyx":2017
+ *         if buffer_size is not None:
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:             # <<<<<<<<<<<<<<
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ * 
+ */
+  }
+
+  /* "adios.pyx":2011
+ *         self.set_time_aggregation()
+ * 
+ *     def set_time_aggregation(self, buffer_size = None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Set time-aggregation buffersize.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("adios.writer.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2020
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
  * 
  *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
  *                    ldim = tuple(),
@@ -28095,26 +31506,37 @@ static PyObject *__pyx_pf_5adios_6writer_2declare_group(struct __pyx_obj_5adios_
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_5define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_6writer_4define_var[] = "writer.define_var(self, str varname, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>)\n\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name.\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n\n        Example:\ [...]
-static PyObject *__pyx_pw_5adios_6writer_5define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_6writer_7define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_6writer_6define_var[] = "writer.define_var(self, str varname, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>, transform=None)\n\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n     [...]
+static PyObject *__pyx_pw_5adios_6writer_7define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_ldim = 0;
   PyObject *__pyx_v_gdim = 0;
   PyObject *__pyx_v_offset = 0;
+  PyObject *__pyx_v_transform = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define_var (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varname,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[1] = __pyx_k__54;
-    values[2] = __pyx_k__55;
-    values[3] = __pyx_k__56;
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varname,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,&__pyx_n_s_transform,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    values[1] = __pyx_k__55;
+    values[2] = __pyx_k__56;
+    values[3] = __pyx_k__57;
+
+    /* "adios.pyx":2024
+ *                    gdim = tuple(),
+ *                    offset = tuple(),
+ *                    transform = None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Define a variable associated with the file.
+ */
+    values[4] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
@@ -28142,12 +31564,18 @@ static PyObject *__pyx_pw_5adios_6writer_5define_var(PyObject *__pyx_v_self, PyO
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
           if (value) { values[3] = value; kw_args--; }
         }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform);
+          if (value) { values[4] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 1804, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 2020, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
@@ -28160,17 +31588,26 @@ static PyObject *__pyx_pw_5adios_6writer_5define_var(PyObject *__pyx_v_self, PyO
     __pyx_v_ldim = values[1];
     __pyx_v_gdim = values[2];
     __pyx_v_offset = values[3];
+    __pyx_v_transform = values[4];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1804, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2020, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.writer.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 1804, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_6writer_4define_var(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_varname, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 2020, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_6writer_6define_var(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_varname, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset, __pyx_v_transform);
+
+  /* "adios.pyx":2020
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ * 
+ *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
+ *                    ldim = tuple(),
+ *                    gdim = tuple(),
+ */
 
   /* function exit code */
   goto __pyx_L0;
@@ -28181,21 +31618,22 @@ static PyObject *__pyx_pw_5adios_6writer_5define_var(PyObject *__pyx_v_self, PyO
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset) {
+static PyObject *__pyx_pf_5adios_6writer_6define_var(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_transform) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_var", 0);
 
-  /* "adios.pyx":1824
+  /* "adios.pyx":2042
  * 
  *         """
- *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)             # <<<<<<<<<<<<<<
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)             # <<<<<<<<<<<<<<
  * 
  *     def define_attr(self, str attrname):
  */
-  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1824, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_varname);
   __Pyx_GIVEREF(__pyx_v_varname);
@@ -28209,18 +31647,22 @@ static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_wri
   __Pyx_INCREF(__pyx_v_offset);
   __Pyx_GIVEREF(__pyx_v_offset);
   PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_offset);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_varinfo), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1824, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_transform, __pyx_v_transform) < 0) __PYX_ERR(0, 2042, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_varinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2042, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 1824, __pyx_L1_error)
+    __PYX_ERR(0, 2042, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_varname, __pyx_t_2) < 0)) __PYX_ERR(0, 1824, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_varname, __pyx_t_3) < 0)) __PYX_ERR(0, 2042, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":1804
- *         select_method(self.gid, self.method, self.method_params, "")
+  /* "adios.pyx":2020
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
  * 
  *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
  *                    ldim = tuple(),
@@ -28233,6 +31675,7 @@ static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_wri
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_AddTraceback("adios.writer.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -28241,8 +31684,8 @@ static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_wri
   return __pyx_r;
 }
 
-/* "adios.pyx":1826
- *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+/* "adios.pyx":2044
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)
  * 
  *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
  *         """
@@ -28250,14 +31693,14 @@ static PyObject *__pyx_pf_5adios_6writer_4define_var(struct __pyx_obj_5adios_wri
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_7define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname); /*proto*/
-static char __pyx_doc_5adios_6writer_6define_attr[] = "writer.define_attr(self, str attrname)\n\n        Define attribute in the file.\n\n        Args:\n            attrname (str): attribute name.\n        ";
-static PyObject *__pyx_pw_5adios_6writer_7define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname) {
+static PyObject *__pyx_pw_5adios_6writer_9define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname); /*proto*/
+static char __pyx_doc_5adios_6writer_8define_attr[] = "writer.define_attr(self, str attrname)\n\n        Define attribute in the file.\n\n        Args:\n            attrname (str): attribute name.\n        ";
+static PyObject *__pyx_pw_5adios_6writer_9define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define_attr (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 1826, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_6writer_6define_attr(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((PyObject*)__pyx_v_attrname));
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 2044, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_6writer_8define_attr(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((PyObject*)__pyx_v_attrname));
 
   /* function exit code */
   goto __pyx_L0;
@@ -28268,7 +31711,7 @@ static PyObject *__pyx_pw_5adios_6writer_7define_attr(PyObject *__pyx_v_self, Py
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname) {
+static PyObject *__pyx_pf_5adios_6writer_8define_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -28276,34 +31719,34 @@ static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_wr
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_attr", 0);
 
-  /* "adios.pyx":1834
+  /* "adios.pyx":2052
  *         """
  * 
  *         self.attrs[attrname] = attrinfo(attrname, is_static=True)             # <<<<<<<<<<<<<<
  * 
  *     def define_dynamic_attr(self, str attrname,
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1834, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2052, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_attrname);
   __Pyx_GIVEREF(__pyx_v_attrname);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_attrname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1834, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2052, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_True) < 0) __PYX_ERR(0, 1834, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1834, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_True) < 0) __PYX_ERR(0, 2052, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2052, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 1834, __pyx_L1_error)
+    __PYX_ERR(0, 2052, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1834, __pyx_L1_error)
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 2052, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":1826
- *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+  /* "adios.pyx":2044
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)
  * 
  *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
  *         """
@@ -28325,7 +31768,7 @@ static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_wr
   return __pyx_r;
 }
 
-/* "adios.pyx":1836
+/* "adios.pyx":2054
  *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
  * 
  *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
@@ -28334,9 +31777,9 @@ static PyObject *__pyx_pf_5adios_6writer_6define_attr(struct __pyx_obj_5adios_wr
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_6writer_8define_dynamic_attr[] = "writer.define_dynamic_attr(self, str attrname, str varname, dtype)";
-static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_6writer_11define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_6writer_10define_dynamic_attr[] = "writer.define_dynamic_attr(self, str attrname, str varname, dtype)";
+static PyObject *__pyx_pw_5adios_6writer_11define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_attrname = 0;
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_dtype = 0;
@@ -28364,16 +31807,16 @@ static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 1); __PYX_ERR(0, 1836, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 1); __PYX_ERR(0, 2054, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 2); __PYX_ERR(0, 1836, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 2); __PYX_ERR(0, 2054, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_dynamic_attr") < 0)) __PYX_ERR(0, 1836, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_dynamic_attr") < 0)) __PYX_ERR(0, 2054, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -28388,15 +31831,15 @@ static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1836, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2054, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.writer.define_dynamic_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 1836, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 1837, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_6writer_8define_dynamic_attr(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_attrname, __pyx_v_varname, __pyx_v_dtype);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 2054, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 2055, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_6writer_10define_dynamic_attr(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_attrname, __pyx_v_varname, __pyx_v_dtype);
 
   /* function exit code */
   goto __pyx_L0;
@@ -28407,7 +31850,7 @@ static PyObject *__pyx_pw_5adios_6writer_9define_dynamic_attr(PyObject *__pyx_v_
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype) {
+static PyObject *__pyx_pf_5adios_6writer_10define_dynamic_attr(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -28415,14 +31858,14 @@ static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_dynamic_attr", 0);
 
-  /* "adios.pyx":1839
+  /* "adios.pyx":2057
  *                             str varname,
  *                             dtype):
  *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)             # <<<<<<<<<<<<<<
+ * 
  *     def __setitem__(self, name, val):
- *         if self.vars.has_key(name):
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1839, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2057, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_attrname);
   __Pyx_GIVEREF(__pyx_v_attrname);
@@ -28433,21 +31876,21 @@ static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5
   __Pyx_INCREF(__pyx_v_dtype);
   __Pyx_GIVEREF(__pyx_v_dtype);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_dtype);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1839, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2057, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_False) < 0) __PYX_ERR(0, 1839, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1839, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_False) < 0) __PYX_ERR(0, 2057, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2057, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 1839, __pyx_L1_error)
+    __PYX_ERR(0, 2057, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1839, __pyx_L1_error)
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 2057, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios.pyx":1836
+  /* "adios.pyx":2054
  *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
  * 
  *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
@@ -28470,147 +31913,355 @@ static PyObject *__pyx_pf_5adios_6writer_8define_dynamic_attr(struct __pyx_obj_5
   return __pyx_r;
 }
 
-/* "adios.pyx":1840
- *                             dtype):
+/* "adios.pyx":2059
  *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+ * 
  *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
- *             self.vars[name] = val
+ *             if not isinstance(val, varinfo):
  */
 
 /* Python wrapper */
-static int __pyx_pw_5adios_6writer_11__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /*proto*/
-static int __pyx_pw_5adios_6writer_11__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
+static int __pyx_pw_5adios_6writer_13__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /*proto*/
+static int __pyx_pw_5adios_6writer_13__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_10__setitem__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_val));
+  __pyx_r = __pyx_pf_5adios_6writer_12__setitem__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_val));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_6writer_10__setitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
+static int __pyx_pf_5adios_6writer_12__setitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
+  PyObject *__pyx_v_n = NULL;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "adios.pyx":1841
- *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+  /* "adios.pyx":2060
+ * 
  *     def __setitem__(self, name, val):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
- *             self.vars[name] = val
- *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, varinfo):
+ *                 self.vars[name].value = val
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1841, __pyx_L1_error)
+    __PYX_ERR(0, 2060, __pyx_L1_error)
   }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1841, __pyx_L1_error)
+  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 2060, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1842
+    /* "adios.pyx":2061
  *     def __setitem__(self, name, val):
  *         if self.vars.has_key(name):
- *             self.vars[name] = val             # <<<<<<<<<<<<<<
+ *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
+ *                 self.vars[name].value = val
+ *             else:
+ */
+    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5adios_varinfo); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios.pyx":2062
+ *         if self.vars.has_key(name):
+ *             if not isinstance(val, varinfo):
+ *                 self.vars[name].value = val             # <<<<<<<<<<<<<<
+ *             else:
+ *                 self.vars[name] = val
+ */
+      if (unlikely(__pyx_v_self->vars == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2062, __pyx_L1_error)
+      }
+      __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2062, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2062, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "adios.pyx":2061
+ *     def __setitem__(self, name, val):
+ *         if self.vars.has_key(name):
+ *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
+ *                 self.vars[name].value = val
+ *             else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "adios.pyx":2064
+ *                 self.vars[name].value = val
+ *             else:
+ *                 self.vars[name] = val             # <<<<<<<<<<<<<<
  *         elif self.attrs.has_key(name):
- *             self.attrs[name] = val
+ *             if not isinstance(val, attrinfo):
  */
-    if (unlikely(__pyx_v_self->vars == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1842, __pyx_L1_error)
+    /*else*/ {
+      if (unlikely(__pyx_v_self->vars == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2064, __pyx_L1_error)
+      }
+      if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 2064, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1842, __pyx_L1_error)
+    __pyx_L4:;
 
-    /* "adios.pyx":1841
- *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+    /* "adios.pyx":2060
+ * 
  *     def __setitem__(self, name, val):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
- *             self.vars[name] = val
- *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, varinfo):
+ *                 self.vars[name].value = val
  */
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":1843
- *         if self.vars.has_key(name):
- *             self.vars[name] = val
+  /* "adios.pyx":2065
+ *             else:
+ *                 self.vars[name] = val
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
- *             self.attrs[name] = val
- *         else:
+ *             if not isinstance(val, attrinfo):
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
  */
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1843, __pyx_L1_error)
+    __PYX_ERR(0, 2065, __pyx_L1_error)
   }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1843, __pyx_L1_error)
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+  __pyx_t_1 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 2065, __pyx_L1_error)
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios.pyx":2066
+ *                 self.vars[name] = val
+ *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+ *             else:
+ */
+    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5adios_attrinfo); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios.pyx":2067
+ *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, attrinfo):
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 self.attrs[name].value = val
+ */
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2067, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2067, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
+        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+        if (likely(__pyx_t_4)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_4);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_5, function);
+        }
+      }
+      if (!__pyx_t_4) {
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2067, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+      } else {
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2067, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
+        __Pyx_INCREF(__pyx_v_val);
+        __Pyx_GIVEREF(__pyx_v_val);
+        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_val);
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2067, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2067, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2067, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_v_name);
+      __Pyx_GIVEREF(__pyx_v_name);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_val);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2067, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(__pyx_v_self->attrs == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2067, __pyx_L1_error)
+      }
+      if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_name, __pyx_t_5) < 0)) __PYX_ERR(0, 2067, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "adios.pyx":1844
- *             self.vars[name] = val
+      /* "adios.pyx":2066
+ *                 self.vars[name] = val
  *         elif self.attrs.has_key(name):
- *             self.attrs[name] = val             # <<<<<<<<<<<<<<
+ *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+ *             else:
+ */
+      goto __pyx_L5;
+    }
+
+    /* "adios.pyx":2069
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+ *             else:
+ *                 self.attrs[name].value = val             # <<<<<<<<<<<<<<
  *         else:
- *             self.vars[name] = val
+ *             n = np.array(val)
  */
-    if (unlikely(__pyx_v_self->attrs == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1844, __pyx_L1_error)
+    /*else*/ {
+      if (unlikely(__pyx_v_self->attrs == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2069, __pyx_L1_error)
+      }
+      __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2069, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2069, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1844, __pyx_L1_error)
+    __pyx_L5:;
 
-    /* "adios.pyx":1843
- *         if self.vars.has_key(name):
- *             self.vars[name] = val
+    /* "adios.pyx":2065
+ *             else:
+ *                 self.vars[name] = val
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
- *             self.attrs[name] = val
- *         else:
+ *             if not isinstance(val, attrinfo):
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
  */
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":1846
- *             self.attrs[name] = val
+  /* "adios.pyx":2071
+ *                 self.attrs[name].value = val
  *         else:
- *             self.vars[name] = val             # <<<<<<<<<<<<<<
+ *             n = np.array(val)             # <<<<<<<<<<<<<<
+ *             self.vars[name] = varinfo(name, n.shape)
+ *             self.vars[name].value = val
+ */
+  /*else*/ {
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2071, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2071, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_6, function);
+      }
+    }
+    if (!__pyx_t_3) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_val); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2071, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+    } else {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2071, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_val);
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2071, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_v_n = __pyx_t_5;
+    __pyx_t_5 = 0;
+
+    /* "adios.pyx":2072
+ *         else:
+ *             n = np.array(val)
+ *             self.vars[name] = varinfo(name, n.shape)             # <<<<<<<<<<<<<<
+ *             self.vars[name].value = val
+ * 
+ */
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_INCREF(__pyx_v_name);
+    __Pyx_GIVEREF(__pyx_v_name);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_name);
+    __Pyx_GIVEREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_varinfo), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(0, 2072, __pyx_L1_error)
+    }
+    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_t_5) < 0)) __PYX_ERR(0, 2072, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "adios.pyx":2073
+ *             n = np.array(val)
+ *             self.vars[name] = varinfo(name, n.shape)
+ *             self.vars[name].value = val             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, name):
  */
-  /*else*/ {
     if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1846, __pyx_L1_error)
+      __PYX_ERR(0, 2073, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1846, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2073, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __pyx_L3:;
 
-  /* "adios.pyx":1840
- *                             dtype):
+  /* "adios.pyx":2059
  *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+ * 
  *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
- *             self.vars[name] = val
+ *             if not isinstance(val, varinfo):
  */
 
   /* function exit code */
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
   __Pyx_AddTraceback("adios.writer.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_n);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1848
- *             self.vars[name] = val
+/* "adios.pyx":2075
+ *             self.vars[name].value = val
  * 
  *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
@@ -28618,19 +32269,19 @@ static int __pyx_pf_5adios_6writer_10__setitem__(struct __pyx_obj_5adios_writer
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_13__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_13__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
+static PyObject *__pyx_pw_5adios_6writer_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_12__getitem__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name));
+  __pyx_r = __pyx_pf_5adios_6writer_14__getitem__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name) {
+static PyObject *__pyx_pf_5adios_6writer_14__getitem__(struct __pyx_obj_5adios_writer *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -28639,7 +32290,7 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios.pyx":1849
+  /* "adios.pyx":2076
  * 
  *     def __getitem__(self, name):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
@@ -28648,13 +32299,13 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1849, __pyx_L1_error)
+    __PYX_ERR(0, 2076, __pyx_L1_error)
   }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1849, __pyx_L1_error)
+  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 2076, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1850
+    /* "adios.pyx":2077
  *     def __getitem__(self, name):
  *         if self.vars.has_key(name):
  *             return self.vars[name]             # <<<<<<<<<<<<<<
@@ -28664,15 +32315,15 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1850, __pyx_L1_error)
+      __PYX_ERR(0, 2077, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1850, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2077, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "adios.pyx":1849
+    /* "adios.pyx":2076
  * 
  *     def __getitem__(self, name):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
@@ -28681,7 +32332,7 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
  */
   }
 
-  /* "adios.pyx":1851
+  /* "adios.pyx":2078
  *         if self.vars.has_key(name):
  *             return self.vars[name]
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
@@ -28690,13 +32341,13 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
  */
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1851, __pyx_L1_error)
+    __PYX_ERR(0, 2078, __pyx_L1_error)
   }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1851, __pyx_L1_error)
+  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 2078, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":1852
+    /* "adios.pyx":2079
  *             return self.vars[name]
  *         elif self.attrs.has_key(name):
  *             return self.attrs[name]             # <<<<<<<<<<<<<<
@@ -28706,15 +32357,15 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_self->attrs == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1852, __pyx_L1_error)
+      __PYX_ERR(0, 2079, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1852, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2079, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "adios.pyx":1851
+    /* "adios.pyx":2078
  *         if self.vars.has_key(name):
  *             return self.vars[name]
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
@@ -28723,7 +32374,7 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
  */
   }
 
-  /* "adios.pyx":1854
+  /* "adios.pyx":2081
  *             return self.attrs[name]
  *         else:
  *             raise KeyError(name)             # <<<<<<<<<<<<<<
@@ -28731,21 +32382,21 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
  *     def close(self):
  */
   /*else*/ {
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1854, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2081, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1854, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2081, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(0, 1854, __pyx_L1_error)
+    __PYX_ERR(0, 2081, __pyx_L1_error)
   }
 
-  /* "adios.pyx":1848
- *             self.vars[name] = val
+  /* "adios.pyx":2075
+ *             self.vars[name].value = val
  * 
  *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
@@ -28764,7 +32415,7 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
   return __pyx_r;
 }
 
-/* "adios.pyx":1856
+/* "adios.pyx":2083
  *             raise KeyError(name)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -28773,20 +32424,20 @@ static PyObject *__pyx_pf_5adios_6writer_12__getitem__(struct __pyx_obj_5adios_w
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_15close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_6writer_14close[] = "writer.close(self)\n\n        Write variables and attributes to a file and close the writer.\n        ";
-static PyObject *__pyx_pw_5adios_6writer_15close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_5adios_6writer_17close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_6writer_16close[] = "writer.close(self)\n\n        Write variables and attributes to a file and close the writer.\n        ";
+static PyObject *__pyx_pw_5adios_6writer_17close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_14close(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_6writer_16close(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_6writer_16close(struct __pyx_obj_5adios_writer *__pyx_v_self) {
   int64_t __pyx_v_fd;
   PyObject *__pyx_v_extra_vars = NULL;
   PyObject *__pyx_v_extra_attrs = NULL;
@@ -28797,12 +32448,12 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_5;
   Py_ssize_t __pyx_t_6;
-  Py_ssize_t __pyx_t_7;
+  int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
   PyObject *__pyx_t_10 = NULL;
@@ -28811,131 +32462,145 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
   PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "adios.pyx":1860
+  /* "adios.pyx":2087
  *         Write variables and attributes to a file and close the writer.
  *         """
- *         if self.gname is None:             # <<<<<<<<<<<<<<
- *             self.declare_group("group")
+ *         if self.gid == 0:             # <<<<<<<<<<<<<<
+ *             self.declare_group()
  * 
  */
-  __pyx_t_1 = (__pyx_v_self->gname == ((PyObject*)Py_None));
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = ((__pyx_v_self->gid == 0) != 0);
+  if (__pyx_t_1) {
 
-    /* "adios.pyx":1861
+    /* "adios.pyx":2088
  *         """
- *         if self.gname is None:
- *             self.declare_group("group")             # <<<<<<<<<<<<<<
+ *         if self.gid == 0:
+ *             self.declare_group()             # <<<<<<<<<<<<<<
  * 
  *         fd = open(self.gname, self.fname, self.mode)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_declare_group); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1861, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_declare_group); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2088, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1861, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_4 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    if (__pyx_t_4) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2088, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2088, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios.pyx":1860
+    /* "adios.pyx":2087
  *         Write variables and attributes to a file and close the writer.
  *         """
- *         if self.gname is None:             # <<<<<<<<<<<<<<
- *             self.declare_group("group")
+ *         if self.gid == 0:             # <<<<<<<<<<<<<<
+ *             self.declare_group()
  * 
  */
   }
 
-  /* "adios.pyx":1863
- *             self.declare_group("group")
+  /* "adios.pyx":2090
+ *             self.declare_group()
  * 
  *         fd = open(self.gname, self.fname, self.mode)             # <<<<<<<<<<<<<<
  * 
  *         extra_vars = dict()
  */
-  __pyx_t_4 = __pyx_v_self->gname;
-  __Pyx_INCREF(__pyx_t_4);
+  __pyx_t_2 = __pyx_v_self->gname;
+  __Pyx_INCREF(__pyx_t_2);
   __pyx_t_3 = __pyx_v_self->fname;
   __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_5 = __pyx_v_self->mode;
-  __Pyx_INCREF(__pyx_t_5);
-  __pyx_v_fd = __pyx_f_5adios_open(((PyObject*)__pyx_t_4), ((PyObject*)__pyx_t_3), ((PyObject*)__pyx_t_5), 0, NULL);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __pyx_v_self->mode;
+  __Pyx_INCREF(__pyx_t_4);
+  __pyx_v_fd = __pyx_f_5adios_open(((PyObject*)__pyx_t_2), ((PyObject*)__pyx_t_3), ((PyObject*)__pyx_t_4), 0, NULL);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":1865
+  /* "adios.pyx":2092
  *         fd = open(self.gname, self.fname, self.mode)
  * 
  *         extra_vars = dict()             # <<<<<<<<<<<<<<
  *         extra_attrs = dict()
  * 
  */
-  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1865, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_v_extra_vars = ((PyObject*)__pyx_t_5);
-  __pyx_t_5 = 0;
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2092, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_v_extra_vars = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-  /* "adios.pyx":1866
+  /* "adios.pyx":2093
  * 
  *         extra_vars = dict()
  *         extra_attrs = dict()             # <<<<<<<<<<<<<<
  * 
  *         for key, val in self.vars.iteritems():
  */
-  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1866, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_v_extra_attrs = ((PyObject*)__pyx_t_5);
-  __pyx_t_5 = 0;
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2093, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_v_extra_attrs = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-  /* "adios.pyx":1868
+  /* "adios.pyx":2095
  *         extra_attrs = dict()
  * 
  *         for key, val in self.vars.iteritems():             # <<<<<<<<<<<<<<
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)
  */
-  __pyx_t_6 = 0;
+  __pyx_t_5 = 0;
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    __PYX_ERR(0, 1868, __pyx_L1_error)
+    __PYX_ERR(0, 2095, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_self->vars, 1, __pyx_n_s_iteritems, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1868, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_self->vars, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2095, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_3;
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_3;
   __pyx_t_3 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_3, &__pyx_t_4, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1868, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, &__pyx_t_2, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2095, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
     __pyx_t_3 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-    /* "adios.pyx":1869
+    /* "adios.pyx":2096
  * 
  *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
  *                 n = np.array(val)
  *                 extra_vars[key] = varinfo(key, n.shape)
  */
-    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5adios_varinfo); 
-    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
-    if (__pyx_t_1) {
+    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5adios_varinfo); 
+    __pyx_t_9 = ((!(__pyx_t_1 != 0)) != 0);
+    if (__pyx_t_9) {
 
-      /* "adios.pyx":1870
+      /* "adios.pyx":2097
  *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)             # <<<<<<<<<<<<<<
  *                 extra_vars[key] = varinfo(key, n.shape)
  *                 extra_vars[key].value = val
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1870, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2097, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1870, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2097, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -28949,59 +32614,59 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_val); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1870, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2097, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1870, __pyx_L1_error)
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2097, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
         __Pyx_INCREF(__pyx_v_val);
         __Pyx_GIVEREF(__pyx_v_val);
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_val);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1870, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2097, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_4);
-      __pyx_t_4 = 0;
+      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_2);
+      __pyx_t_2 = 0;
 
-      /* "adios.pyx":1871
+      /* "adios.pyx":2098
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)
  *                 extra_vars[key] = varinfo(key, n.shape)             # <<<<<<<<<<<<<<
  *                 extra_vars[key].value = val
  *             else:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1871, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1871, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2098, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2098, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_INCREF(__pyx_v_key);
       __Pyx_GIVEREF(__pyx_v_key);
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_key);
-      __Pyx_GIVEREF(__pyx_t_4);
-      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
-      __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_varinfo), __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1871, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
+      __pyx_t_2 = 0;
+      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_varinfo), __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2098, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_vars, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 1871, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(PyDict_SetItem(__pyx_v_extra_vars, __pyx_v_key, __pyx_t_2) < 0)) __PYX_ERR(0, 2098, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios.pyx":1872
+      /* "adios.pyx":2099
  *                 n = np.array(val)
  *                 extra_vars[key] = varinfo(key, n.shape)
  *                 extra_vars[key].value = val             # <<<<<<<<<<<<<<
  *             else:
- *                 if self.is_noxml: val.define(self.gid)
+ *                 if self.is_noxml:
  */
-      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_extra_vars, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1872, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 1872, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_extra_vars, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2099, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2099, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios.pyx":1869
+      /* "adios.pyx":2096
  * 
  *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
@@ -29011,19 +32676,27 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
       goto __pyx_L6;
     }
 
-    /* "adios.pyx":1874
+    /* "adios.pyx":2101
  *                 extra_vars[key].value = val
  *             else:
- *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
+ *                 if self.is_noxml:             # <<<<<<<<<<<<<<
+ *                     val.define(self.gid)
  * 
- *         for key, val in extra_vars.iteritems():
  */
     /*else*/ {
-      __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_1) {
-        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1874, __pyx_L1_error)
+      __pyx_t_9 = (__pyx_v_self->is_noxml != 0);
+      if (__pyx_t_9) {
+
+        /* "adios.pyx":2102
+ *             else:
+ *                 if self.is_noxml:
+ *                     val.define(self.gid)             # <<<<<<<<<<<<<<
+ * 
+ *         for key, val in extra_vars.iteritems():
+ */
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2102, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1874, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2102, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __pyx_t_3 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -29036,95 +32709,103 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
           }
         }
         if (!__pyx_t_3) {
-          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1874, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2102, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_2);
         } else {
-          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1874, __pyx_L1_error)
+          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2102, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
           __Pyx_GIVEREF(__pyx_t_11);
           PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_11);
           __pyx_t_11 = 0;
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1874, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_4);
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2102, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+        /* "adios.pyx":2101
+ *                 extra_vars[key].value = val
+ *             else:
+ *                 if self.is_noxml:             # <<<<<<<<<<<<<<
+ *                     val.define(self.gid)
+ * 
+ */
       }
     }
     __pyx_L6:;
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":1876
- *                 if self.is_noxml: val.define(self.gid)
+  /* "adios.pyx":2104
+ *                     val.define(self.gid)
  * 
  *         for key, val in extra_vars.iteritems():             # <<<<<<<<<<<<<<
  *             if self.is_noxml: val.define(self.gid)
  *             self.vars[key] = val
  */
-  __pyx_t_7 = 0;
-  __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_extra_vars, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1876, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_4;
-  __pyx_t_4 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_extra_vars, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_2;
+  __pyx_t_2 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_4, &__pyx_t_10, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1876, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_5, &__pyx_t_6, &__pyx_t_2, &__pyx_t_10, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2104, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GOTREF(__pyx_t_10);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2);
+    __pyx_t_2 = 0;
     __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_10);
     __pyx_t_10 = 0;
 
-    /* "adios.pyx":1877
+    /* "adios.pyx":2105
  * 
  *         for key, val in extra_vars.iteritems():
  *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
  *             self.vars[key] = val
  * 
  */
-    __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_1) {
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1877, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1877, __pyx_L1_error)
+    __pyx_t_9 = (__pyx_v_self->is_noxml != 0);
+    if (__pyx_t_9) {
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2105, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2105, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_11 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
         if (likely(__pyx_t_11)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
           __Pyx_INCREF(__pyx_t_11);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
+          __Pyx_DECREF_SET(__pyx_t_2, function);
         }
       }
       if (!__pyx_t_11) {
-        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1877, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2105, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_GOTREF(__pyx_t_10);
       } else {
-        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1877, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2105, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __pyx_t_11 = NULL;
         __Pyx_GIVEREF(__pyx_t_12);
         PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_12);
         __pyx_t_12 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1877, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2105, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
 
-    /* "adios.pyx":1878
+    /* "adios.pyx":2106
  *         for key, val in extra_vars.iteritems():
  *             if self.is_noxml: val.define(self.gid)
  *             self.vars[key] = val             # <<<<<<<<<<<<<<
@@ -29133,61 +32814,61 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
  */
     if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1878, __pyx_L1_error)
+      __PYX_ERR(0, 2106, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_key, __pyx_v_val) < 0)) __PYX_ERR(0, 1878, __pyx_L1_error)
+    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_key, __pyx_v_val) < 0)) __PYX_ERR(0, 2106, __pyx_L1_error)
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":1880
+  /* "adios.pyx":2108
  *             self.vars[key] = val
  * 
  *         for key, val in self.attrs.iteritems():             # <<<<<<<<<<<<<<
  *             if not isinstance(val, attrinfo):
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  */
-  __pyx_t_6 = 0;
+  __pyx_t_5 = 0;
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    __PYX_ERR(0, 1880, __pyx_L1_error)
+    __PYX_ERR(0, 2108, __pyx_L1_error)
   }
-  __pyx_t_10 = __Pyx_dict_iterator(__pyx_v_self->attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1880, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_dict_iterator(__pyx_v_self->attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2108, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_10;
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_10;
   __pyx_t_10 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_10, &__pyx_t_4, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1880, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_6, &__pyx_t_5, &__pyx_t_10, &__pyx_t_2, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2108, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_10);
     __pyx_t_10 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-    /* "adios.pyx":1881
+    /* "adios.pyx":2109
  * 
  *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  *             else:
  */
-    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5adios_attrinfo); 
-    __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-    if (__pyx_t_2) {
+    __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5adios_attrinfo); 
+    __pyx_t_1 = ((!(__pyx_t_9 != 0)) != 0);
+    if (__pyx_t_1) {
 
-      /* "adios.pyx":1882
+      /* "adios.pyx":2110
  *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
  *             else:
  *                 if self.is_noxml: val.define(self.gid)
  */
-      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1882, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2110, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1882, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2110, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __pyx_t_10 = NULL;
@@ -29201,41 +32882,41 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_val); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1882, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2110, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1882, __pyx_L1_error)
+        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2110, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_val);
         __Pyx_GIVEREF(__pyx_v_val);
         PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_val);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1882, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2110, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1882, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2110, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1882, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2110, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_v_key);
       __Pyx_GIVEREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
+      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_val);
       __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1882, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_attrinfo), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2110, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_attrs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 1882, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(PyDict_SetItem(__pyx_v_extra_attrs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 2110, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "adios.pyx":1881
+      /* "adios.pyx":2109
  * 
  *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
@@ -29245,7 +32926,7 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
       goto __pyx_L13;
     }
 
-    /* "adios.pyx":1884
+    /* "adios.pyx":2112
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  *             else:
  *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
@@ -29253,81 +32934,81 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
  *         for key, val in extra_attrs.iteritems():
  */
     /*else*/ {
-      __pyx_t_2 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_2) {
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1884, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1884, __pyx_L1_error)
+      __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
+      if (__pyx_t_1) {
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2112, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2112, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __pyx_t_10 = NULL;
-        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
           if (likely(__pyx_t_10)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
             __Pyx_INCREF(__pyx_t_10);
             __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __Pyx_DECREF_SET(__pyx_t_2, function);
           }
         }
         if (!__pyx_t_10) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1884, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2112, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else {
-          __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1884, __pyx_L1_error)
+          __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2112, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
           __Pyx_GIVEREF(__pyx_t_12);
           PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_12);
           __pyx_t_12 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1884, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2112, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
     }
     __pyx_L13:;
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":1886
+  /* "adios.pyx":2114
  *                 if self.is_noxml: val.define(self.gid)
  * 
  *         for key, val in extra_attrs.iteritems():             # <<<<<<<<<<<<<<
  *             if self.is_noxml: val.define(self.gid)
  * 
  */
-  __pyx_t_7 = 0;
-  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_extra_attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1886, __pyx_L1_error)
+  __pyx_t_6 = 0;
+  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_extra_attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2114, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_3;
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_3;
   __pyx_t_3 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_3, &__pyx_t_4, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1886, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_5, &__pyx_t_6, &__pyx_t_3, &__pyx_t_2, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2114, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
     __pyx_t_3 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-    /* "adios.pyx":1887
+    /* "adios.pyx":2115
  * 
  *         for key, val in extra_attrs.iteritems():
  *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
  * 
  *         """
  */
-    __pyx_t_2 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_2) {
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1887, __pyx_L1_error)
+    __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
+    if (__pyx_t_1) {
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2115, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1887, __pyx_L1_error)
+      __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2115, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_t_12 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -29340,27 +33021,27 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
         }
       }
       if (!__pyx_t_12) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1887, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2115, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1887, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2115, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL;
         __Pyx_GIVEREF(__pyx_t_11);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_11);
         __pyx_t_11 = 0;
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1887, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2115, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios.pyx":1898
+  /* "adios.pyx":2126
  *         """
  * 
  *         for var in self.vars.values():             # <<<<<<<<<<<<<<
@@ -29369,63 +33050,63 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    __PYX_ERR(0, 1898, __pyx_L1_error)
+    __PYX_ERR(0, 2126, __pyx_L1_error)
   }
-  __pyx_t_5 = __Pyx_PyDict_Values(__pyx_v_self->vars); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
-    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
+  __pyx_t_4 = __Pyx_PyDict_Values(__pyx_v_self->vars); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
+    __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
     __pyx_t_13 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1898, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1898, __pyx_L1_error)
+    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2126, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_13 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2126, __pyx_L1_error)
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
     if (likely(!__pyx_t_13)) {
-      if (likely(PyList_CheckExact(__pyx_t_4))) {
-        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
+      if (likely(PyList_CheckExact(__pyx_t_2))) {
+        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1898, __pyx_L1_error)
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2126, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2126, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
         #endif
       } else {
-        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1898, __pyx_L1_error)
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2126, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2126, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
         #endif
       }
     } else {
-      __pyx_t_5 = __pyx_t_13(__pyx_t_4);
-      if (unlikely(!__pyx_t_5)) {
+      __pyx_t_4 = __pyx_t_13(__pyx_t_2);
+      if (unlikely(!__pyx_t_4)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1898, __pyx_L1_error)
+          else __PYX_ERR(0, 2126, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GOTREF(__pyx_t_4);
     }
-    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_5);
-    __pyx_t_5 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_4);
+    __pyx_t_4 = 0;
 
-    /* "adios.pyx":1899
+    /* "adios.pyx":2127
  * 
  *         for var in self.vars.values():
  *             var.write(fd)             # <<<<<<<<<<<<<<
  * 
  *         close(fd)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1899, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2127, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1899, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2127, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -29438,24 +33119,24 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
       }
     }
     if (!__pyx_t_11) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1899, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2127, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1899, __pyx_L1_error)
+      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2127, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
       __Pyx_GIVEREF(__pyx_t_10);
       PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10);
       __pyx_t_10 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1899, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2127, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "adios.pyx":1898
+    /* "adios.pyx":2126
  *         """
  * 
  *         for var in self.vars.values():             # <<<<<<<<<<<<<<
@@ -29463,9 +33144,9 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
  * 
  */
   }
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":1901
+  /* "adios.pyx":2129
  *             var.write(fd)
  * 
  *         close(fd)             # <<<<<<<<<<<<<<
@@ -29474,7 +33155,7 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
  */
   __pyx_f_5adios_close(__pyx_v_fd, 0);
 
-  /* "adios.pyx":1856
+  /* "adios.pyx":2083
  *             raise KeyError(name)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -29486,9 +33167,9 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_10);
   __Pyx_XDECREF(__pyx_t_11);
   __Pyx_XDECREF(__pyx_t_12);
@@ -29506,7 +33187,7 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
   return __pyx_r;
 }
 
-/* "adios.pyx":1903
+/* "adios.pyx":2131
  *         close(fd)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -29515,19 +33196,19 @@ static PyObject *__pyx_pf_5adios_6writer_14close(struct __pyx_obj_5adios_writer
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_17__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_5adios_6writer_17__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_5adios_6writer_19__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_6writer_19__repr__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_16__repr__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_6writer_18__repr__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_6writer_18__repr__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -29535,7 +33216,7 @@ static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writ
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1904
+  /* "adios.pyx":2132
  * 
  *     def __repr__(self):
  *         return ("AdiosWriter (fname=%r, gname=%r, "             # <<<<<<<<<<<<<<
@@ -29544,7 +33225,7 @@ static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writ
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":1910
+  /* "adios.pyx":2138
  *                  self.method,
  *                  self.method_params,
  *                  self.vars.keys(),             # <<<<<<<<<<<<<<
@@ -29553,12 +33234,12 @@ static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writ
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    __PYX_ERR(0, 1910, __pyx_L1_error)
+    __PYX_ERR(0, 2138, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1910, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios.pyx":1911
+  /* "adios.pyx":2139
  *                  self.method_params,
  *                  self.vars.keys(),
  *                  self.attrs.keys(),             # <<<<<<<<<<<<<<
@@ -29567,19 +33248,19 @@ static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writ
  */
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    __PYX_ERR(0, 1911, __pyx_L1_error)
+    __PYX_ERR(0, 2139, __pyx_L1_error)
   }
-  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1911, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2139, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":1906
+  /* "adios.pyx":2134
  *         return ("AdiosWriter (fname=%r, gname=%r, "
  *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
  *                 (self.fname,             # <<<<<<<<<<<<<<
  *                  self.gname,
  *                  self.method,
  */
-  __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1906, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2134, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_self->fname);
   __Pyx_GIVEREF(__pyx_v_self->fname);
@@ -29603,21 +33284,21 @@ static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writ
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1905
+  /* "adios.pyx":2133
  *     def __repr__(self):
  *         return ("AdiosWriter (fname=%r, gname=%r, "
  *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.fname,
  *                  self.gname,
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1905, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2133, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1903
+  /* "adios.pyx":2131
  *         close(fd)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -29638,36 +33319,36 @@ static PyObject *__pyx_pf_5adios_6writer_16__repr__(struct __pyx_obj_5adios_writ
   return __pyx_r;
 }
 
-/* "adios.pyx":1914
+/* "adios.pyx":2142
  *                  self.mode)
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_19__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_5adios_6writer_18__enter__[] = "writer.__enter__(self)\n Enter for with statemetn ";
-static PyObject *__pyx_pw_5adios_6writer_19__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_5adios_6writer_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_5adios_6writer_20__enter__[] = "writer.__enter__(self)\n Enter for with statement ";
+static PyObject *__pyx_pw_5adios_6writer_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_6writer_18__enter__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_5adios_6writer_20__enter__(((struct __pyx_obj_5adios_writer *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_18__enter__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_5adios_6writer_20__enter__(struct __pyx_obj_5adios_writer *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "adios.pyx":1916
+  /* "adios.pyx":2144
  *     def __enter__(self):
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self             # <<<<<<<<<<<<<<
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):
@@ -29677,11 +33358,11 @@ static PyObject *__pyx_pf_5adios_6writer_18__enter__(struct __pyx_obj_5adios_wri
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "adios.pyx":1914
+  /* "adios.pyx":2142
  *                  self.mode)
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
@@ -29692,7 +33373,7 @@ static PyObject *__pyx_pf_5adios_6writer_18__enter__(struct __pyx_obj_5adios_wri
   return __pyx_r;
 }
 
-/* "adios.pyx":1918
+/* "adios.pyx":2146
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -29701,9 +33382,9 @@ static PyObject *__pyx_pf_5adios_6writer_18__enter__(struct __pyx_obj_5adios_wri
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_6writer_21__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_6writer_20__exit__[] = "writer.__exit__(self, exception_type, exception_value, traceback)\n Close file on exit. ";
-static PyObject *__pyx_pw_5adios_6writer_21__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_6writer_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_6writer_22__exit__[] = "writer.__exit__(self, exception_type, exception_value, traceback)\n Close file on exit. ";
+static PyObject *__pyx_pw_5adios_6writer_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   CYTHON_UNUSED PyObject *__pyx_v_exception_type = 0;
   CYTHON_UNUSED PyObject *__pyx_v_exception_value = 0;
   CYTHON_UNUSED PyObject *__pyx_v_traceback = 0;
@@ -29731,16 +33412,16 @@ static PyObject *__pyx_pw_5adios_6writer_21__exit__(PyObject *__pyx_v_self, PyOb
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 1918, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 2146, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 1918, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 2146, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 1918, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 2146, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -29755,20 +33436,20 @@ static PyObject *__pyx_pw_5adios_6writer_21__exit__(PyObject *__pyx_v_self, PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1918, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2146, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.writer.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_6writer_20__exit__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback);
+  __pyx_r = __pyx_pf_5adios_6writer_22__exit__(((struct __pyx_obj_5adios_writer *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_6writer_20__exit__(struct __pyx_obj_5adios_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
+static PyObject *__pyx_pf_5adios_6writer_22__exit__(struct __pyx_obj_5adios_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -29776,14 +33457,14 @@ static PyObject *__pyx_pf_5adios_6writer_20__exit__(struct __pyx_obj_5adios_writ
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "adios.pyx":1920
+  /* "adios.pyx":2148
  *     def __exit__(self, exception_type, exception_value, traceback):
  *         """ Close file on exit. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  * cdef class attrinfo(object):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1920, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2148, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -29796,16 +33477,16 @@ static PyObject *__pyx_pf_5adios_6writer_20__exit__(struct __pyx_obj_5adios_writ
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1920, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2148, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1920, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2148, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":1918
+  /* "adios.pyx":2146
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -29828,7 +33509,7 @@ static PyObject *__pyx_pf_5adios_6writer_20__exit__(struct __pyx_obj_5adios_writ
   return __pyx_r;
 }
 
-/* "adios.pyx":1929
+/* "adios.pyx":2157
  * 
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -29854,7 +33535,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4name___get__(struct __pyx_obj_5adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1930
+  /* "adios.pyx":2158
  *     property name:
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -29866,7 +33547,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4name___get__(struct __pyx_obj_5adios
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios.pyx":1929
+  /* "adios.pyx":2157
  * 
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -29881,7 +33562,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4name___get__(struct __pyx_obj_5adios
   return __pyx_r;
 }
 
-/* "adios.pyx":1933
+/* "adios.pyx":2161
  * 
  *     property is_static:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -29908,7 +33589,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_9is_static___get__(struct __pyx_obj_5
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1934
+  /* "adios.pyx":2162
  *     property is_static:
  *         def __get__(self):
  *             return self.is_static             # <<<<<<<<<<<<<<
@@ -29916,13 +33597,13 @@ static PyObject *__pyx_pf_5adios_8attrinfo_9is_static___get__(struct __pyx_obj_5
  *     property dtype:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1934, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2162, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1933
+  /* "adios.pyx":2161
  * 
  *     property is_static:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -29941,7 +33622,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_9is_static___get__(struct __pyx_obj_5
   return __pyx_r;
 }
 
-/* "adios.pyx":1937
+/* "adios.pyx":2165
  * 
  *     property dtype:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -29967,7 +33648,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_5dtype___get__(struct __pyx_obj_5adio
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1938
+  /* "adios.pyx":2166
  *     property dtype:
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -29979,7 +33660,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_5dtype___get__(struct __pyx_obj_5adio
   __pyx_r = __pyx_v_self->dtype;
   goto __pyx_L0;
 
-  /* "adios.pyx":1937
+  /* "adios.pyx":2165
  * 
  *     property dtype:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -29994,7 +33675,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_5dtype___get__(struct __pyx_obj_5adio
   return __pyx_r;
 }
 
-/* "adios.pyx":1941
+/* "adios.pyx":2169
  * 
  *     property value:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30020,7 +33701,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adio
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios.pyx":1942
+  /* "adios.pyx":2170
  *     property value:
  *         def __get__(self):
  *             return self.value             # <<<<<<<<<<<<<<
@@ -30032,7 +33713,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adio
   __pyx_r = __pyx_v_self->value;
   goto __pyx_L0;
 
-  /* "adios.pyx":1941
+  /* "adios.pyx":2169
  * 
  *     property value:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30047,7 +33728,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_5value___get__(struct __pyx_obj_5adio
   return __pyx_r;
 }
 
-/* "adios.pyx":1944
+/* "adios.pyx":2172
  *             return self.value
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -30073,7 +33754,7 @@ static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_att
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "adios.pyx":1945
+  /* "adios.pyx":2173
  * 
  *         def __set__(self, value):
  *             self.value = value             # <<<<<<<<<<<<<<
@@ -30086,7 +33767,7 @@ static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_att
   __Pyx_DECREF(__pyx_v_self->value);
   __pyx_v_self->value = __pyx_v_value;
 
-  /* "adios.pyx":1944
+  /* "adios.pyx":2172
  *             return self.value
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -30100,7 +33781,7 @@ static int __pyx_pf_5adios_8attrinfo_5value_2__set__(struct __pyx_obj_5adios_att
   return __pyx_r;
 }
 
-/* "adios.pyx":1947
+/* "adios.pyx":2175
  *             self.value = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
@@ -30122,7 +33803,7 @@ static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_value,&__pyx_n_s_dtype,&__pyx_n_s_is_static,0};
     PyObject* values[4] = {0,0,0,0};
 
-    /* "adios.pyx":1948
+    /* "adios.pyx":2176
  * 
  *     def __init__(self, str name,
  *                  value = None,             # <<<<<<<<<<<<<<
@@ -30131,7 +33812,7 @@ static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject
  */
     values[1] = ((PyObject *)Py_None);
 
-    /* "adios.pyx":1949
+    /* "adios.pyx":2177
  *     def __init__(self, str name,
  *                  value = None,
  *                  dtype = None,             # <<<<<<<<<<<<<<
@@ -30172,7 +33853,7 @@ static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1947, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2175, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -30188,10 +33869,10 @@ static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject
     __pyx_v_value = values[1];
     __pyx_v_dtype = values[2];
     if (values[3]) {
-      __pyx_v_is_static = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_is_static == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1950, __pyx_L3_error)
+      __pyx_v_is_static = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_is_static == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2178, __pyx_L3_error)
     } else {
 
-      /* "adios.pyx":1950
+      /* "adios.pyx":2178
  *                  value = None,
  *                  dtype = None,
  *                  bint is_static = True):             # <<<<<<<<<<<<<<
@@ -30203,16 +33884,16 @@ static int __pyx_pw_5adios_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1947, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2175, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.attrinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1947, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 2175, __pyx_L1_error)
   __pyx_r = __pyx_pf_5adios_8attrinfo___init__(((struct __pyx_obj_5adios_attrinfo *)__pyx_v_self), __pyx_v_name, __pyx_v_value, __pyx_v_dtype, __pyx_v_is_static);
 
-  /* "adios.pyx":1947
+  /* "adios.pyx":2175
  *             self.value = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
@@ -30234,7 +33915,7 @@ static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1951
+  /* "adios.pyx":2179
  *                  dtype = None,
  *                  bint is_static = True):
  *         self.name = name             # <<<<<<<<<<<<<<
@@ -30247,7 +33928,7 @@ static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios.pyx":1952
+  /* "adios.pyx":2180
  *                  bint is_static = True):
  *         self.name = name
  *         self.value = value             # <<<<<<<<<<<<<<
@@ -30260,7 +33941,7 @@ static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *
   __Pyx_DECREF(__pyx_v_self->value);
   __pyx_v_self->value = __pyx_v_value;
 
-  /* "adios.pyx":1953
+  /* "adios.pyx":2181
  *         self.name = name
  *         self.value = value
  *         self.dtype = dtype             # <<<<<<<<<<<<<<
@@ -30273,7 +33954,7 @@ static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *
   __Pyx_DECREF(__pyx_v_self->dtype);
   __pyx_v_self->dtype = __pyx_v_dtype;
 
-  /* "adios.pyx":1954
+  /* "adios.pyx":2182
  *         self.value = value
  *         self.dtype = dtype
  *         self.is_static = is_static             # <<<<<<<<<<<<<<
@@ -30282,7 +33963,7 @@ static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *
  */
   __pyx_v_self->is_static = __pyx_v_is_static;
 
-  /* "adios.pyx":1947
+  /* "adios.pyx":2175
  *             self.value = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
@@ -30296,7 +33977,7 @@ static int __pyx_pf_5adios_8attrinfo___init__(struct __pyx_obj_5adios_attrinfo *
   return __pyx_r;
 }
 
-/* "adios.pyx":1956
+/* "adios.pyx":2184
  *         self.is_static = is_static
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
@@ -30313,7 +33994,7 @@ static PyObject *__pyx_pw_5adios_8attrinfo_3define(PyObject *__pyx_v_self, PyObj
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define (wrapper)", 0);
   assert(__pyx_arg_gid); {
-    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1956, __pyx_L3_error)
+    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2184, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -30337,7 +34018,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("define", 0);
 
-  /* "adios.pyx":1957
+  /* "adios.pyx":2185
  * 
  *     def define(self, int64_t gid):
  *         if self.is_static:             # <<<<<<<<<<<<<<
@@ -30347,7 +34028,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
   __pyx_t_1 = (__pyx_v_self->is_static != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":1958
+    /* "adios.pyx":2186
  *     def define(self, int64_t gid):
  *         if self.is_static:
  *             if self.value is None:             # <<<<<<<<<<<<<<
@@ -30358,20 +34039,20 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios.pyx":1959
+      /* "adios.pyx":2187
  *         if self.is_static:
  *             if self.value is None:
  *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1959, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2187, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1959, __pyx_L1_error)
+      __PYX_ERR(0, 2187, __pyx_L1_error)
 
-      /* "adios.pyx":1958
+      /* "adios.pyx":2186
  *     def define(self, int64_t gid):
  *         if self.is_static:
  *             if self.value is None:             # <<<<<<<<<<<<<<
@@ -30380,7 +34061,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
  */
     }
 
-    /* "adios.pyx":1961
+    /* "adios.pyx":2189
  *                 raise TypeError("Value is none")
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)             # <<<<<<<<<<<<<<
@@ -30395,7 +34076,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "adios.pyx":1957
+    /* "adios.pyx":2185
  * 
  *     def define(self, int64_t gid):
  *         if self.is_static:             # <<<<<<<<<<<<<<
@@ -30405,7 +34086,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
     goto __pyx_L3;
   }
 
-  /* "adios.pyx":1966
+  /* "adios.pyx":2194
  *             ##define_attribute(gid, self.name, "",
  *             ##                 atype, "", str(self.value))
  *             raise NotImplementedError             # <<<<<<<<<<<<<<
@@ -30414,11 +34095,11 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(0, 1966, __pyx_L1_error)
+    __PYX_ERR(0, 2194, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "adios.pyx":1956
+  /* "adios.pyx":2184
  *         self.is_static = is_static
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
@@ -30440,7 +34121,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_2define(struct __pyx_obj_5adios_attri
   return __pyx_r;
 }
 
-/* "adios.pyx":1968
+/* "adios.pyx":2196
  *             raise NotImplementedError
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -30468,7 +34149,7 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_att
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":1969
+  /* "adios.pyx":2197
  * 
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
@@ -30477,24 +34158,24 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_att
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":1971
+  /* "adios.pyx":2199
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
  *                 (self.name,
  *                  self.is_static,             # <<<<<<<<<<<<<<
  *                  self.value,
  *                  self.dtype)
  */
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1971, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2199, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios.pyx":1970
+  /* "adios.pyx":2198
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
  *                 (self.name,             # <<<<<<<<<<<<<<
  *                  self.is_static,
  *                  self.value,
  */
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -30509,21 +34190,21 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_att
   PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->dtype);
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":1969
+  /* "adios.pyx":2197
  * 
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.name,
  *                  self.is_static,
  */
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1969, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2197, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":1968
+  /* "adios.pyx":2196
  *             raise NotImplementedError
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -30543,8 +34224,131 @@ static PyObject *__pyx_pf_5adios_8attrinfo_4__repr__(struct __pyx_obj_5adios_att
   return __pyx_r;
 }
 
-/* "adios.pyx":1982
- *     cdef public value
+/* "adios.pyx":2213
+ *     property transform:
+ *         """ Transform method """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.fname
+ *         def __set__(self, value):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_5adios_7varinfo_9transform_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_5adios_7varinfo_9transform_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_9transform___get__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_5adios_7varinfo_9transform___get__(struct __pyx_obj_5adios_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios.pyx":2214
+ *         """ Transform method """
+ *         def __get__(self):
+ *             return self.fname             # <<<<<<<<<<<<<<
+ *         def __set__(self, value):
+ *             self.transform = value
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2214, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios.pyx":2213
+ *     property transform:
+ *         """ Transform method """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.fname
+ *         def __set__(self, value):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.varinfo.transform.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2215
+ *         def __get__(self):
+ *             return self.fname
+ *         def __set__(self, value):             # <<<<<<<<<<<<<<
+ *             self.transform = value
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_5adios_7varinfo_9transform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_5adios_7varinfo_9transform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_5adios_7varinfo_9transform_2__set__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_5adios_7varinfo_9transform_2__set__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "adios.pyx":2216
+ *             return self.fname
+ *         def __set__(self, value):
+ *             self.transform = value             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str name,
+ */
+  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 2216, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->transform);
+  __Pyx_DECREF(__pyx_v_self->transform);
+  __pyx_v_self->transform = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":2215
+ *         def __get__(self):
+ *             return self.fname
+ *         def __set__(self, value):             # <<<<<<<<<<<<<<
+ *             self.transform = value
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.varinfo.transform.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios.pyx":2218
+ *             self.transform = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
@@ -30559,28 +34363,39 @@ static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *
   PyObject *__pyx_v_gdim = 0;
   PyObject *__pyx_v_offset = 0;
   PyObject *__pyx_v_value = 0;
+  PyObject *__pyx_v_transform = 0;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,&__pyx_n_s_value,0};
-    PyObject* values[5] = {0,0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,&__pyx_n_s_value,&__pyx_n_s_transform,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
     values[1] = __pyx_k__59;
     values[2] = __pyx_k__60;
     values[3] = __pyx_k__61;
 
-    /* "adios.pyx":1986
+    /* "adios.pyx":2222
  *                  gdim = tuple(),
  *                  offset = tuple(),
- *                  value = None):             # <<<<<<<<<<<<<<
+ *                  value = None,             # <<<<<<<<<<<<<<
+ *                  transform = None):
  *         self.name = name
- *         self.ldim = ldim
  */
     values[4] = ((PyObject *)Py_None);
+
+    /* "adios.pyx":2223
+ *                  offset = tuple(),
+ *                  value = None,
+ *                  transform = None):             # <<<<<<<<<<<<<<
+ *         self.name = name
+ *         self.ldim = ldim
+ */
+    values[5] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -30614,12 +34429,18 @@ static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value);
           if (value) { values[4] = value; kw_args--; }
         }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform);
+          if (value) { values[5] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1982, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2218, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -30634,20 +34455,21 @@ static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *
     __pyx_v_gdim = values[2];
     __pyx_v_offset = values[3];
     __pyx_v_value = values[4];
+    __pyx_v_transform = values[5];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1982, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2218, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.varinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1982, __pyx_L1_error)
-  __pyx_r = __pyx_pf_5adios_7varinfo___init__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), __pyx_v_name, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset, __pyx_v_value);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 2218, __pyx_L1_error)
+  __pyx_r = __pyx_pf_5adios_7varinfo___init__(((struct __pyx_obj_5adios_varinfo *)__pyx_v_self), __pyx_v_name, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset, __pyx_v_value, __pyx_v_transform);
 
-  /* "adios.pyx":1982
- *     cdef public value
+  /* "adios.pyx":2218
+ *             self.transform = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
@@ -30663,14 +34485,15 @@ static int __pyx_pw_5adios_7varinfo_1__init__(PyObject *__pyx_v_self, PyObject *
   return __pyx_r;
 }
 
-static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value) {
+static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value, PyObject *__pyx_v_transform) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios.pyx":1987
- *                  offset = tuple(),
- *                  value = None):
+  /* "adios.pyx":2224
+ *                  value = None,
+ *                  transform = None):
  *         self.name = name             # <<<<<<<<<<<<<<
  *         self.ldim = ldim
  *         self.gdim = gdim
@@ -30681,8 +34504,8 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios.pyx":1988
- *                  value = None):
+  /* "adios.pyx":2225
+ *                  transform = None):
  *         self.name = name
  *         self.ldim = ldim             # <<<<<<<<<<<<<<
  *         self.gdim = gdim
@@ -30694,7 +34517,7 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
   __Pyx_DECREF(__pyx_v_self->ldim);
   __pyx_v_self->ldim = __pyx_v_ldim;
 
-  /* "adios.pyx":1989
+  /* "adios.pyx":2226
  *         self.name = name
  *         self.ldim = ldim
  *         self.gdim = gdim             # <<<<<<<<<<<<<<
@@ -30707,12 +34530,12 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
   __Pyx_DECREF(__pyx_v_self->gdim);
   __pyx_v_self->gdim = __pyx_v_gdim;
 
-  /* "adios.pyx":1990
+  /* "adios.pyx":2227
  *         self.ldim = ldim
  *         self.gdim = gdim
  *         self.offset = offset             # <<<<<<<<<<<<<<
  *         self.value = value
- * 
+ *         self.transform = transform
  */
   __Pyx_INCREF(__pyx_v_offset);
   __Pyx_GIVEREF(__pyx_v_offset);
@@ -30720,12 +34543,12 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
   __Pyx_DECREF(__pyx_v_self->offset);
   __pyx_v_self->offset = __pyx_v_offset;
 
-  /* "adios.pyx":1991
+  /* "adios.pyx":2228
  *         self.gdim = gdim
  *         self.offset = offset
  *         self.value = value             # <<<<<<<<<<<<<<
+ *         self.transform = transform
  * 
- *     def define(self, int64_t gid):
  */
   __Pyx_INCREF(__pyx_v_value);
   __Pyx_GIVEREF(__pyx_v_value);
@@ -30733,8 +34556,24 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
   __Pyx_DECREF(__pyx_v_self->value);
   __pyx_v_self->value = __pyx_v_value;
 
-  /* "adios.pyx":1982
- *     cdef public value
+  /* "adios.pyx":2229
+ *         self.offset = offset
+ *         self.value = value
+ *         self.transform = transform             # <<<<<<<<<<<<<<
+ * 
+ *     def define(self, int64_t gid):
+ */
+  if (!(likely(PyString_CheckExact(__pyx_v_transform))||((__pyx_v_transform) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_transform)->tp_name), 0))) __PYX_ERR(0, 2229, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_transform;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->transform);
+  __Pyx_DECREF(__pyx_v_self->transform);
+  __pyx_v_self->transform = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios.pyx":2218
+ *             self.transform = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
@@ -30743,12 +34582,18 @@ static int __pyx_pf_5adios_7varinfo___init__(struct __pyx_obj_5adios_varinfo *__
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios.varinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios.pyx":1993
- *         self.value = value
+/* "adios.pyx":2231
+ *         self.transform = transform
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
  *         if self.value is None:
@@ -30764,7 +34609,7 @@ static PyObject *__pyx_pw_5adios_7varinfo_3define(PyObject *__pyx_v_self, PyObje
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define (wrapper)", 0);
   assert(__pyx_arg_gid); {
-    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1993, __pyx_L3_error)
+    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2231, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -30785,6 +34630,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   PyObject *__pyx_v_offset_ = NULL;
   PyObject *__pyx_v_val_ = NULL;
   PyObject *__pyx_v_atype = NULL;
+  int64_t __pyx_v_varid;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -30796,10 +34642,11 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   PyObject *__pyx_t_9 = NULL;
-  struct __pyx_opt_args_5adios_define_var __pyx_t_10;
+  int64_t __pyx_t_10;
+  struct __pyx_opt_args_5adios_define_var __pyx_t_11;
   __Pyx_RefNannySetupContext("define", 0);
 
-  /* "adios.pyx":1994
+  /* "adios.pyx":2232
  * 
  *     def define(self, int64_t gid):
  *         if self.value is None:             # <<<<<<<<<<<<<<
@@ -30810,20 +34657,20 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":1995
+    /* "adios.pyx":2233
  *     def define(self, int64_t gid):
  *         if self.value is None:
  *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *         ldim_ = self.ldim
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1995, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2233, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1995, __pyx_L1_error)
+    __PYX_ERR(0, 2233, __pyx_L1_error)
 
-    /* "adios.pyx":1994
+    /* "adios.pyx":2232
  * 
  *     def define(self, int64_t gid):
  *         if self.value is None:             # <<<<<<<<<<<<<<
@@ -30832,7 +34679,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
  */
   }
 
-  /* "adios.pyx":1997
+  /* "adios.pyx":2235
  *             raise TypeError("Value is none")
  * 
  *         ldim_ = self.ldim             # <<<<<<<<<<<<<<
@@ -30844,7 +34691,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_v_ldim_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":1998
+  /* "adios.pyx":2236
  * 
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -30871,19 +34718,19 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":1999
+    /* "adios.pyx":2237
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):
  *             ldim_ = tuple(self.ldim)             # <<<<<<<<<<<<<<
  * 
  *         gdim_ = self.gdim
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->ldim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1999, __pyx_L1_error)
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->ldim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2237, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_ldim_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":1998
+    /* "adios.pyx":2236
  * 
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -30892,7 +34739,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
  */
   }
 
-  /* "adios.pyx":2001
+  /* "adios.pyx":2239
  *             ldim_ = tuple(self.ldim)
  * 
  *         gdim_ = self.gdim             # <<<<<<<<<<<<<<
@@ -30904,7 +34751,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_v_gdim_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":2002
+  /* "adios.pyx":2240
  * 
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -30931,19 +34778,19 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":2003
+    /* "adios.pyx":2241
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):
  *             gdim_ = tuple(self.gdim)             # <<<<<<<<<<<<<<
  * 
  *         offset_ = self.offset
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->gdim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2003, __pyx_L1_error)
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->gdim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2241, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_gdim_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":2002
+    /* "adios.pyx":2240
  * 
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -30952,7 +34799,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
  */
   }
 
-  /* "adios.pyx":2005
+  /* "adios.pyx":2243
  *             gdim_ = tuple(self.gdim)
  * 
  *         offset_ = self.offset             # <<<<<<<<<<<<<<
@@ -30964,7 +34811,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_v_offset_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":2006
+  /* "adios.pyx":2244
  * 
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -30991,19 +34838,19 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios.pyx":2007
+    /* "adios.pyx":2245
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):
  *             offset_ = tuple(self.offset)             # <<<<<<<<<<<<<<
  * 
  *         val_ = self.value
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2007, __pyx_L1_error)
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2245, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_offset_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":2006
+    /* "adios.pyx":2244
  * 
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31012,7 +34859,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
  */
   }
 
-  /* "adios.pyx":2009
+  /* "adios.pyx":2247
  *             offset_ = tuple(self.offset)
  * 
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -31024,7 +34871,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_v_val_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":2010
+  /* "adios.pyx":2248
  * 
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31038,16 +34885,16 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios.pyx":2011
+    /* "adios.pyx":2249
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):
  *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
  * 
  *         atype = np2adiostype(val_.dtype)
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2011, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2249, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2011, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2249, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = NULL;
@@ -31061,16 +34908,16 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2249, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2011, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2249, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->value);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2249, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
@@ -31078,7 +34925,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios.pyx":2010
+    /* "adios.pyx":2248
  * 
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31087,139 +34934,181 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
  */
   }
 
-  /* "adios.pyx":2013
+  /* "adios.pyx":2251
  *             val_ = np.array(self.value)
  * 
  *         atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
  *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
+ *         cdef int64_t varid = 0;
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2013, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2251, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 2013, __pyx_L1_error)
-  __pyx_t_6 = __pyx_f_5adios_np2adiostype(((PyArray_Descr *)__pyx_t_3), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2013, __pyx_L1_error)
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 2251, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_5adios_np2adiostype(((PyArray_Descr *)__pyx_t_3), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2251, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_atype = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "adios.pyx":2015
+  /* "adios.pyx":2253
  *         atype = np2adiostype(val_.dtype)
  *         ## No space allowed
- *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
+ *         cdef int64_t varid = 0;             # <<<<<<<<<<<<<<
+ *         varid = define_var(gid, self.name, "", atype,
+ *                    str(ldim_).replace(' ', '').strip('(,)'),
+ */
+  __pyx_v_varid = 0;
+
+  /* "adios.pyx":2254
+ *         ## No space allowed
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  */
   __pyx_t_6 = __pyx_v_self->name;
   __Pyx_INCREF(__pyx_t_6);
-  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_atype); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_atype); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2254, __pyx_L1_error)
 
-  /* "adios.pyx":2016
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
+  /* "adios.pyx":2255
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_ldim_);
   __Pyx_GIVEREF(__pyx_v_ldim_);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_ldim_);
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 2016, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 2255, __pyx_L1_error)
 
-  /* "adios.pyx":2017
- *         define_var(gid, self.name, "", atype,
+  /* "adios.pyx":2256
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_gdim_);
   __Pyx_GIVEREF(__pyx_v_gdim_);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_gdim_);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 2017, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 2256, __pyx_L1_error)
 
-  /* "adios.pyx":2018
+  /* "adios.pyx":2257
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
- *     def bytes(self):
+ *         if (self.transform is not None):
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_offset_);
   __Pyx_GIVEREF(__pyx_v_offset_);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_offset_);
-  __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_9)->tp_name), 0))) __PYX_ERR(0, 2018, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_9)->tp_name), 0))) __PYX_ERR(0, 2257, __pyx_L1_error)
 
-  /* "adios.pyx":2015
- *         atype = np2adiostype(val_.dtype)
+  /* "adios.pyx":2254
  *         ## No space allowed
- *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  */
-  __pyx_t_10.__pyx_n = 3;
-  __pyx_t_10.dimensions = ((PyObject*)__pyx_t_7);
-  __pyx_t_10.global_dimensions = ((PyObject*)__pyx_t_5);
-  __pyx_t_10.local_offsets = ((PyObject*)__pyx_t_9);
-  __pyx_f_5adios_define_var(__pyx_v_gid, ((PyObject*)__pyx_t_6), __pyx_kp_s__10, __pyx_t_8, 0, &__pyx_t_10); 
+  __pyx_t_11.__pyx_n = 3;
+  __pyx_t_11.dimensions = ((PyObject*)__pyx_t_7);
+  __pyx_t_11.global_dimensions = ((PyObject*)__pyx_t_5);
+  __pyx_t_11.local_offsets = ((PyObject*)__pyx_t_9);
+  __pyx_t_10 = __pyx_f_5adios_define_var(__pyx_v_gid, ((PyObject*)__pyx_t_6), __pyx_kp_s__10, __pyx_t_8, 0, &__pyx_t_11); 
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_v_varid = __pyx_t_10;
 
-  /* "adios.pyx":1993
- *         self.value = value
+  /* "adios.pyx":2259
+ *                    str(offset_).replace(' ', '').strip('(,)'))
+ * 
+ *         if (self.transform is not None):             # <<<<<<<<<<<<<<
+ *             set_transform(varid, self.transform)
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_self->transform != ((PyObject*)Py_None));
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios.pyx":2260
+ * 
+ *         if (self.transform is not None):
+ *             set_transform(varid, self.transform)             # <<<<<<<<<<<<<<
+ * 
+ *     def bytes(self):
+ */
+    __pyx_t_9 = __pyx_v_self->transform;
+    __Pyx_INCREF(__pyx_t_9);
+    __pyx_f_5adios_set_transform(__pyx_v_varid, ((PyObject*)__pyx_t_9), 0);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "adios.pyx":2259
+ *                    str(offset_).replace(' ', '').strip('(,)'))
+ * 
+ *         if (self.transform is not None):             # <<<<<<<<<<<<<<
+ *             set_transform(varid, self.transform)
+ * 
+ */
+  }
+
+  /* "adios.pyx":2231
+ *         self.transform = transform
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
  *         if self.value is None:
@@ -31248,8 +35137,8 @@ static PyObject *__pyx_pf_5adios_7varinfo_2define(struct __pyx_obj_5adios_varinf
   return __pyx_r;
 }
 
-/* "adios.pyx":2020
- *                    str(offset_).replace(' ', '').strip('(,)'))
+/* "adios.pyx":2262
+ *             set_transform(varid, self.transform)
  * 
  *     def bytes(self):             # <<<<<<<<<<<<<<
  *         val_ = self.value
@@ -31282,7 +35171,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("bytes", 0);
 
-  /* "adios.pyx":2021
+  /* "adios.pyx":2263
  * 
  *     def bytes(self):
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -31294,7 +35183,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
   __pyx_v_val_ = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":2022
+  /* "adios.pyx":2264
  *     def bytes(self):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31308,16 +35197,16 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "adios.pyx":2023
+    /* "adios.pyx":2265
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):
  *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
  * 
  *         return val_.size * val_.itemsize
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2023, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2265, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2023, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2265, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -31331,16 +35220,16 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2265, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2023, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2265, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2265, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -31348,7 +35237,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":2022
+    /* "adios.pyx":2264
  *     def bytes(self):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31357,7 +35246,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
  */
   }
 
-  /* "adios.pyx":2025
+  /* "adios.pyx":2267
  *             val_ = np.array(self.value)
  * 
  *         return val_.size * val_.itemsize             # <<<<<<<<<<<<<<
@@ -31365,11 +35254,11 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
  *     def write(self, int64_t fd):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2025, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2025, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2025, __pyx_L1_error)
+  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -31377,8 +35266,8 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":2020
- *                    str(offset_).replace(' ', '').strip('(,)'))
+  /* "adios.pyx":2262
+ *             set_transform(varid, self.transform)
  * 
  *     def bytes(self):             # <<<<<<<<<<<<<<
  *         val_ = self.value
@@ -31400,7 +35289,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_4bytes(struct __pyx_obj_5adios_varinfo
   return __pyx_r;
 }
 
-/* "adios.pyx":2027
+/* "adios.pyx":2269
  *         return val_.size * val_.itemsize
  * 
  *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
@@ -31417,7 +35306,7 @@ static PyObject *__pyx_pw_5adios_7varinfo_7write(PyObject *__pyx_v_self, PyObjec
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("write (wrapper)", 0);
   assert(__pyx_arg_fd); {
-    __pyx_v_fd = __Pyx_PyInt_As_int64_t(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2027, __pyx_L3_error)
+    __pyx_v_fd = __Pyx_PyInt_As_int64_t(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2269, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -31444,7 +35333,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("write", 0);
 
-  /* "adios.pyx":2028
+  /* "adios.pyx":2270
  * 
  *     def write(self, int64_t fd):
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -31456,7 +35345,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
   __pyx_v_val_ = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios.pyx":2029
+  /* "adios.pyx":2271
  *     def write(self, int64_t fd):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31470,16 +35359,16 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "adios.pyx":2030
+    /* "adios.pyx":2272
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):
  *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
  * 
  *         write(fd, self.name, val_)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2030, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2272, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2030, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2272, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -31493,16 +35382,16 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2272, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2030, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2272, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2272, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -31510,7 +35399,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios.pyx":2029
+    /* "adios.pyx":2271
  *     def write(self, int64_t fd):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31519,7 +35408,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
  */
   }
 
-  /* "adios.pyx":2032
+  /* "adios.pyx":2274
  *             val_ = np.array(self.value)
  * 
  *         write(fd, self.name, val_)             # <<<<<<<<<<<<<<
@@ -31531,7 +35420,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
   __pyx_f_5adios_write(__pyx_v_fd, ((PyObject*)__pyx_t_1), __pyx_v_val_, 0, NULL);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":2027
+  /* "adios.pyx":2269
  *         return val_.size * val_.itemsize
  * 
  *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
@@ -31556,12 +35445,12 @@ static PyObject *__pyx_pf_5adios_7varinfo_6write(struct __pyx_obj_5adios_varinfo
   return __pyx_r;
 }
 
-/* "adios.pyx":2034
+/* "adios.pyx":2276
  *         write(fd, self.name, val_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  */
 
 /* Python wrapper */
@@ -31584,23 +35473,23 @@ static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_vari
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios.pyx":2035
+  /* "adios.pyx":2277
  * 
  *     def __repr__(self):
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  * 
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios.pyx":2036
+  /* "adios.pyx":2278
  *     def __repr__(self):
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)             # <<<<<<<<<<<<<<
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)             # <<<<<<<<<<<<<<
  * 
  * ## Aliases
  */
-  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2036, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2278, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -31614,30 +35503,33 @@ static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_vari
   __Pyx_INCREF(__pyx_v_self->offset);
   __Pyx_GIVEREF(__pyx_v_self->offset);
   PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->offset);
+  __Pyx_INCREF(__pyx_v_self->transform);
+  __Pyx_GIVEREF(__pyx_v_self->transform);
+  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->transform);
   __Pyx_INCREF(__pyx_v_self->value);
   __Pyx_GIVEREF(__pyx_v_self->value);
-  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->value);
+  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_self->value);
 
-  /* "adios.pyx":2035
+  /* "adios.pyx":2277
  * 
  *     def __repr__(self):
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2035, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2277, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":2034
+  /* "adios.pyx":2276
  *         write(fd, self.name, val_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  */
 
   /* function exit code */
@@ -31652,7 +35544,7 @@ static PyObject *__pyx_pf_5adios_7varinfo_8__repr__(struct __pyx_obj_5adios_vari
   return __pyx_r;
 }
 
-/* "adios.pyx":1977
+/* "adios.pyx":2205
  * cdef class varinfo(object):
  *     cdef str name
  *     cdef public ldim             # <<<<<<<<<<<<<<
@@ -31747,7 +35639,7 @@ static int __pyx_pf_5adios_7varinfo_4ldim_4__del__(struct __pyx_obj_5adios_varin
   return __pyx_r;
 }
 
-/* "adios.pyx":1978
+/* "adios.pyx":2206
  *     cdef str name
  *     cdef public ldim
  *     cdef public gdim             # <<<<<<<<<<<<<<
@@ -31842,12 +35734,12 @@ static int __pyx_pf_5adios_7varinfo_4gdim_4__del__(struct __pyx_obj_5adios_varin
   return __pyx_r;
 }
 
-/* "adios.pyx":1979
+/* "adios.pyx":2207
  *     cdef public ldim
  *     cdef public gdim
  *     cdef public offset             # <<<<<<<<<<<<<<
  *     cdef public value
- * 
+ *     cdef str transform
  */
 
 /* Python wrapper */
@@ -31937,12 +35829,12 @@ static int __pyx_pf_5adios_7varinfo_6offset_4__del__(struct __pyx_obj_5adios_var
   return __pyx_r;
 }
 
-/* "adios.pyx":1980
+/* "adios.pyx":2208
  *     cdef public gdim
  *     cdef public offset
  *     cdef public value             # <<<<<<<<<<<<<<
+ *     cdef str transform
  * 
- *     def __init__(self, str name,
  */
 
 /* Python wrapper */
@@ -32032,7 +35924,7 @@ static int __pyx_pf_5adios_7varinfo_5value_4__del__(struct __pyx_obj_5adios_vari
   return __pyx_r;
 }
 
-/* "adios.pyx":2050
+/* "adios.pyx":2292
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
@@ -32041,10 +35933,10 @@ static int __pyx_pf_5adios_7varinfo_5value_4__del__(struct __pyx_obj_5adios_vari
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_57readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_5adios_56readvar[] = "readvar(fname, varname)\n Retrieve a variable value from an Adios file.\n\n    Args:\n        fname (str): Adios file name\n        varname (str): Variable name to retrieve\n\n    Returns:\n        NumPy ndarray: variable value\n    ";
-static PyMethodDef __pyx_mdef_5adios_57readvar = {"readvar", (PyCFunction)__pyx_pw_5adios_57readvar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_56readvar};
-static PyObject *__pyx_pw_5adios_57readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_5adios_93readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_5adios_92readvar[] = "readvar(fname, varname)\n Retrieve a variable value from an Adios file.\n\n    Args:\n        fname (str): Adios file name\n        varname (str): Variable name to retrieve\n\n    Returns:\n        NumPy ndarray: variable value\n    ";
+static PyMethodDef __pyx_mdef_5adios_93readvar = {"readvar", (PyCFunction)__pyx_pw_5adios_93readvar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_92readvar};
+static PyObject *__pyx_pw_5adios_93readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_fname = 0;
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_r = 0;
@@ -32070,11 +35962,11 @@ static PyObject *__pyx_pw_5adios_57readvar(PyObject *__pyx_self, PyObject *__pyx
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, 1); __PYX_ERR(0, 2050, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, 1); __PYX_ERR(0, 2292, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) __PYX_ERR(0, 2050, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) __PYX_ERR(0, 2292, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -32087,20 +35979,20 @@ static PyObject *__pyx_pw_5adios_57readvar(PyObject *__pyx_self, PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2050, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2292, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios.readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_5adios_56readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
+  __pyx_r = __pyx_pf_5adios_92readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname) {
+static PyObject *__pyx_pf_5adios_92readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname) {
   struct __pyx_obj_5adios_file *__pyx_v_f = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
@@ -32110,44 +36002,44 @@ static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, P
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("readvar", 0);
 
-  /* "adios.pyx":2060
+  /* "adios.pyx":2302
  *         NumPy ndarray: variable value
  *     """
  *     f = file(fname, comm=MPI_COMM_SELF)             # <<<<<<<<<<<<<<
  *     v = f[varname]
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2060, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_fname);
   __Pyx_GIVEREF(__pyx_v_fname);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2060, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_int(MPI_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2060, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(MPI_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(0, 2060, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(0, 2302, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2060, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_f = ((struct __pyx_obj_5adios_file *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":2061
+  /* "adios.pyx":2303
  *     """
  *     f = file(fname, comm=MPI_COMM_SELF)
  *     v = f[varname]             # <<<<<<<<<<<<<<
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  */
-  __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_f), __pyx_v_varname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2061, __pyx_L1_error)
+  __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_f), __pyx_v_varname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2303, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_v = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":2062
+  /* "adios.pyx":2304
  *     f = file(fname, comm=MPI_COMM_SELF)
  *     v = f[varname]
  *     return v.read(from_steps=0, nsteps=v.nsteps)             # <<<<<<<<<<<<<<
@@ -32155,16 +36047,16 @@ static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, P
  * def bpls(fname):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_read); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2062, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_read); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2062, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_steps, __pyx_int_0) < 0) __PYX_ERR(0, 2062, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2062, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_steps, __pyx_int_0) < 0) __PYX_ERR(0, 2304, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) __PYX_ERR(0, 2062, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2062, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32172,7 +36064,7 @@ static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, P
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":2050
+  /* "adios.pyx":2292
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
@@ -32195,7 +36087,7 @@ static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, P
   return __pyx_r;
 }
 
-/* "adios.pyx":2064
+/* "adios.pyx":2306
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
@@ -32204,21 +36096,21 @@ static PyObject *__pyx_pf_5adios_56readvar(CYTHON_UNUSED PyObject *__pyx_self, P
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_5adios_59bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname); /*proto*/
-static char __pyx_doc_5adios_58bpls[] = "bpls(fname)\n Return meta data of an Adios file as a Python dictionary object.\n\n    Args:\n        fname (str): Adios file name\n\n    Returns:\n        dict: Adios file meta data\n    ";
-static PyMethodDef __pyx_mdef_5adios_59bpls = {"bpls", (PyCFunction)__pyx_pw_5adios_59bpls, METH_O, __pyx_doc_5adios_58bpls};
-static PyObject *__pyx_pw_5adios_59bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname) {
+static PyObject *__pyx_pw_5adios_95bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname); /*proto*/
+static char __pyx_doc_5adios_94bpls[] = "bpls(fname)\n Return meta data of an Adios file as a Python dictionary object.\n\n    Args:\n        fname (str): Adios file name\n\n    Returns:\n        dict: Adios file meta data\n    ";
+static PyMethodDef __pyx_mdef_5adios_95bpls = {"bpls", (PyCFunction)__pyx_pw_5adios_95bpls, METH_O, __pyx_doc_5adios_94bpls};
+static PyObject *__pyx_pw_5adios_95bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("bpls (wrapper)", 0);
-  __pyx_r = __pyx_pf_5adios_58bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
+  __pyx_r = __pyx_pf_5adios_94bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname) {
+static PyObject *__pyx_pf_5adios_94bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname) {
   struct __pyx_obj_5adios_file *__pyx_v_f = NULL;
   PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_r = NULL;
@@ -32233,32 +36125,32 @@ static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("bpls", 0);
 
-  /* "adios.pyx":2073
+  /* "adios.pyx":2315
  *         dict: Adios file meta data
  *     """
  *     f = file(fname, comm=MPI_COMM_SELF)             # <<<<<<<<<<<<<<
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2073, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_fname);
   __Pyx_GIVEREF(__pyx_v_fname);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2073, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyInt_From_int(MPI_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2073, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(MPI_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_3) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2073, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5adios_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_f = ((struct __pyx_obj_5adios_file *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios.pyx":2074
+  /* "adios.pyx":2316
  *     """
  *     f = file(fname, comm=MPI_COMM_SELF)
  *     return {'nvars': f.nvars,             # <<<<<<<<<<<<<<
@@ -32266,40 +36158,40 @@ static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyOb
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2074, __pyx_L1_error)
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2074, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nvars, __pyx_t_2) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nvars, __pyx_t_2) < 0) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":2075
+  /* "adios.pyx":2317
  *     f = file(fname, comm=MPI_COMM_SELF)
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,             # <<<<<<<<<<<<<<
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2075, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nattrs, __pyx_t_2) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nattrs, __pyx_t_2) < 0) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":2076
+  /* "adios.pyx":2318
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),             # <<<<<<<<<<<<<<
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  *             'time_steps': (f.current_step, f.last_step),
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2076, __pyx_L1_error)
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = 0;
   if (unlikely(((PyObject *)__pyx_v_f->vars) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    __PYX_ERR(0, 2076, __pyx_L1_error)
+    __PYX_ERR(0, 2318, __pyx_L1_error)
   }
-  __pyx_t_7 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->vars), 0, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2076, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->vars), 0, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_XDECREF(__pyx_t_1);
   __pyx_t_1 = __pyx_t_7;
@@ -32307,34 +36199,34 @@ static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   while (1) {
     __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_5, &__pyx_t_4, &__pyx_t_7, NULL, NULL, __pyx_t_6);
     if (unlikely(__pyx_t_8 == 0)) break;
-    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2076, __pyx_L1_error)
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2318, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_7);
     __pyx_t_7 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2076, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2318, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2076, __pyx_L1_error)
+  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_vars, __pyx_t_1) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_vars, __pyx_t_1) < 0) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios.pyx":2077
+  /* "adios.pyx":2319
  *             'nattrs': f.nattrs,
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),             # <<<<<<<<<<<<<<
  *             'time_steps': (f.current_step, f.last_step),
  *             'file_size': f.file_size}
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2077, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = 0;
   if (unlikely(((PyObject *)__pyx_v_f->attrs) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    __PYX_ERR(0, 2077, __pyx_L1_error)
+    __PYX_ERR(0, 2319, __pyx_L1_error)
   }
-  __pyx_t_7 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->attrs), 0, __pyx_n_s_iterkeys, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2077, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->attrs), 0, __pyx_n_s_iterkeys, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_XDECREF(__pyx_t_2);
   __pyx_t_2 = __pyx_t_7;
@@ -32342,30 +36234,30 @@ static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   while (1) {
     __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_4, &__pyx_t_5, &__pyx_t_7, NULL, NULL, __pyx_t_6);
     if (unlikely(__pyx_t_8 == 0)) break;
-    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2077, __pyx_L1_error)
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2319, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_7);
     __pyx_t_7 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2077, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2319, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2077, __pyx_L1_error)
+  __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attrs, __pyx_t_2) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attrs, __pyx_t_2) < 0) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":2078
+  /* "adios.pyx":2320
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  *             'time_steps': (f.current_step, f.last_step),             # <<<<<<<<<<<<<<
  *             'file_size': f.file_size}
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2078, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2078, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2078, __pyx_L1_error)
+  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
@@ -32373,23 +36265,23 @@ static PyObject *__pyx_pf_5adios_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyOb
   PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
   __pyx_t_2 = 0;
   __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_time_steps, __pyx_t_7) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_time_steps, __pyx_t_7) < 0) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "adios.pyx":2079
+  /* "adios.pyx":2321
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  *             'time_steps': (f.current_step, f.last_step),
  *             'file_size': f.file_size}             # <<<<<<<<<<<<<<
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_f->file_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2079, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_f->file_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2321, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_file_size, __pyx_t_7) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_file_size, __pyx_t_7) < 0) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "adios.pyx":2064
+  /* "adios.pyx":2306
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
@@ -35932,7 +39824,7 @@ static PyObject *__pyx_sq_item_5adios_writer(PyObject *o, Py_ssize_t i) {
 
 static int __pyx_mp_ass_subscript_5adios_writer(PyObject *o, PyObject *i, PyObject *v) {
   if (v) {
-    return __pyx_pw_5adios_6writer_11__setitem__(o, i, v);
+    return __pyx_pw_5adios_6writer_13__setitem__(o, i, v);
   }
   else {
     PyErr_Format(PyExc_NotImplementedError,
@@ -35965,14 +39857,19 @@ static PyObject *__pyx_getprop_5adios_6writer_attrs(PyObject *o, CYTHON_UNUSED v
   return __pyx_pw_5adios_6writer_5attrs_1__get__(o);
 }
 
+static PyObject *__pyx_getprop_5adios_6writer_timeaggregation_buffersize(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_6writer_26timeaggregation_buffersize_1__get__(o);
+}
+
 static PyMethodDef __pyx_methods_5adios_writer[] = {
   {"declare_group", (PyCFunction)__pyx_pw_5adios_6writer_3declare_group, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_2declare_group},
-  {"define_var", (PyCFunction)__pyx_pw_5adios_6writer_5define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_4define_var},
-  {"define_attr", (PyCFunction)__pyx_pw_5adios_6writer_7define_attr, METH_O, __pyx_doc_5adios_6writer_6define_attr},
-  {"define_dynamic_attr", (PyCFunction)__pyx_pw_5adios_6writer_9define_dynamic_attr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_8define_dynamic_attr},
-  {"close", (PyCFunction)__pyx_pw_5adios_6writer_15close, METH_NOARGS, __pyx_doc_5adios_6writer_14close},
-  {"__enter__", (PyCFunction)__pyx_pw_5adios_6writer_19__enter__, METH_NOARGS, __pyx_doc_5adios_6writer_18__enter__},
-  {"__exit__", (PyCFunction)__pyx_pw_5adios_6writer_21__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_20__exit__},
+  {"set_time_aggregation", (PyCFunction)__pyx_pw_5adios_6writer_5set_time_aggregation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_4set_time_aggregation},
+  {"define_var", (PyCFunction)__pyx_pw_5adios_6writer_7define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_6define_var},
+  {"define_attr", (PyCFunction)__pyx_pw_5adios_6writer_9define_attr, METH_O, __pyx_doc_5adios_6writer_8define_attr},
+  {"define_dynamic_attr", (PyCFunction)__pyx_pw_5adios_6writer_11define_dynamic_attr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_10define_dynamic_attr},
+  {"close", (PyCFunction)__pyx_pw_5adios_6writer_17close, METH_NOARGS, __pyx_doc_5adios_6writer_16close},
+  {"__enter__", (PyCFunction)__pyx_pw_5adios_6writer_21__enter__, METH_NOARGS, __pyx_doc_5adios_6writer_20__enter__},
+  {"__exit__", (PyCFunction)__pyx_pw_5adios_6writer_23__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_6writer_22__exit__},
   {0, 0, 0, 0}
 };
 
@@ -35983,6 +39880,7 @@ static struct PyGetSetDef __pyx_getsets_5adios_writer[] = {
   {(char *)"mode", __pyx_getprop_5adios_6writer_mode, 0, (char *)" Writing mode: overwrite or append. ", 0},
   {(char *)"vars", __pyx_getprop_5adios_6writer_vars, 0, (char *)" Dictionary of variables to write. ", 0},
   {(char *)"attrs", __pyx_getprop_5adios_6writer_attrs, 0, (char *)" Dictionary of attributes to write. ", 0},
+  {(char *)"timeaggregation_buffersize", __pyx_getprop_5adios_6writer_timeaggregation_buffersize, 0, (char *)" Get time-aggregation buffersize. ", 0},
   {0, 0, 0, 0, 0}
 };
 
@@ -36001,7 +39899,7 @@ static PySequenceMethods __pyx_tp_as_sequence_writer = {
 
 static PyMappingMethods __pyx_tp_as_mapping_writer = {
   0, /*mp_length*/
-  __pyx_pw_5adios_6writer_13__getitem__, /*mp_subscript*/
+  __pyx_pw_5adios_6writer_15__getitem__, /*mp_subscript*/
   __pyx_mp_ass_subscript_5adios_writer, /*mp_ass_subscript*/
 };
 
@@ -36020,7 +39918,7 @@ static PyTypeObject __pyx_type_5adios_writer = {
   #if PY_MAJOR_VERSION >= 3
   0, /*tp_as_async*/
   #endif
-  __pyx_pw_5adios_6writer_17__repr__, /*tp_repr*/
+  __pyx_pw_5adios_6writer_19__repr__, /*tp_repr*/
   0, /*tp_as_number*/
   &__pyx_tp_as_sequence_writer, /*tp_as_sequence*/
   &__pyx_tp_as_mapping_writer, /*tp_as_mapping*/
@@ -36229,6 +40127,7 @@ static PyObject *__pyx_tp_new_5adios_varinfo(PyTypeObject *t, CYTHON_UNUSED PyOb
   p->gdim = Py_None; Py_INCREF(Py_None);
   p->offset = Py_None; Py_INCREF(Py_None);
   p->value = Py_None; Py_INCREF(Py_None);
+  p->transform = ((PyObject*)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
@@ -36245,6 +40144,7 @@ static void __pyx_tp_dealloc_5adios_varinfo(PyObject *o) {
   Py_CLEAR(p->gdim);
   Py_CLEAR(p->offset);
   Py_CLEAR(p->value);
+  Py_CLEAR(p->transform);
   (*Py_TYPE(o)->tp_free)(o);
 }
 
@@ -36284,6 +40184,20 @@ static int __pyx_tp_clear_5adios_varinfo(PyObject *o) {
   return 0;
 }
 
+static PyObject *__pyx_getprop_5adios_7varinfo_transform(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_5adios_7varinfo_9transform_1__get__(o);
+}
+
+static int __pyx_setprop_5adios_7varinfo_transform(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_5adios_7varinfo_9transform_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
 static PyObject *__pyx_getprop_5adios_7varinfo_ldim(PyObject *o, CYTHON_UNUSED void *x) {
   return __pyx_pw_5adios_7varinfo_4ldim_1__get__(o);
 }
@@ -36344,6 +40258,7 @@ static PyMethodDef __pyx_methods_5adios_varinfo[] = {
 };
 
 static struct PyGetSetDef __pyx_getsets_5adios_varinfo[] = {
+  {(char *)"transform", __pyx_getprop_5adios_7varinfo_transform, __pyx_setprop_5adios_7varinfo_transform, (char *)" Transform method ", 0},
   {(char *)"ldim", __pyx_getprop_5adios_7varinfo_ldim, __pyx_setprop_5adios_7varinfo_ldim, (char *)"ldim: object", 0},
   {(char *)"gdim", __pyx_getprop_5adios_7varinfo_gdim, __pyx_setprop_5adios_7varinfo_gdim, (char *)"gdim: object", 0},
   {(char *)"offset", __pyx_getprop_5adios_7varinfo_offset, __pyx_setprop_5adios_7varinfo_offset, (char *)"offset: object", 0},
@@ -36377,7 +40292,7 @@ static PyTypeObject __pyx_type_5adios_varinfo = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "varinfo(str name, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>, value=None)", /*tp_doc*/
+  "varinfo(str name, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>, value=None, transform=None)", /*tp_doc*/
   __pyx_tp_traverse_5adios_varinfo, /*tp_traverse*/
   __pyx_tp_clear_5adios_varinfo, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -36429,14 +40344,32 @@ static PyMethodDef __pyx_methods[] = {
   {"allocate_buffer", (PyCFunction)__pyx_pw_5adios_35allocate_buffer, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_34allocate_buffer},
   {"declare_group", (PyCFunction)__pyx_pw_5adios_37declare_group, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_36declare_group},
   {"define_var", (PyCFunction)__pyx_pw_5adios_39define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_38define_var},
-  {"define_attribute", (PyCFunction)__pyx_pw_5adios_41define_attribute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_40define_attribute},
-  {"define_attribute_byvalue", (PyCFunction)__pyx_pw_5adios_43define_attribute_byvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_42define_attribute_byvalue},
-  {"select_method", (PyCFunction)__pyx_pw_5adios_45select_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_44select_method},
-  {"adios2npdtype", (PyCFunction)__pyx_pw_5adios_47adios2npdtype, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_46adios2npdtype},
-  {"np2adiostype", (PyCFunction)__pyx_pw_5adios_49np2adiostype, METH_O, __pyx_doc_5adios_48np2adiostype},
-  {"adiostype2string", (PyCFunction)__pyx_pw_5adios_51adiostype2string, METH_O, __pyx_doc_5adios_50adiostype2string},
-  {"read_init", (PyCFunction)__pyx_pw_5adios_53read_init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_52read_init},
-  {"read_finalize", (PyCFunction)__pyx_pw_5adios_55read_finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_54read_finalize},
+  {"define_schema_version", (PyCFunction)__pyx_pw_5adios_41define_schema_version, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_40define_schema_version},
+  {"define_var_mesh", (PyCFunction)__pyx_pw_5adios_43define_var_mesh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_42define_var_mesh},
+  {"define_var_centering", (PyCFunction)__pyx_pw_5adios_45define_var_centering, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_44define_var_centering},
+  {"define_var_timesteps", (PyCFunction)__pyx_pw_5adios_47define_var_timesteps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_46define_var_timesteps},
+  {"define_var_timescale", (PyCFunction)__pyx_pw_5adios_49define_var_timescale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_48define_var_timescale},
+  {"define_var_timeseriesformat", (PyCFunction)__pyx_pw_5adios_51define_var_timeseriesformat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_50define_var_timeseriesformat},
+  {"define_var_hyperslab", (PyCFunction)__pyx_pw_5adios_53define_var_hyperslab, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_52define_var_hyperslab},
+  {"define_mesh_timevarying", (PyCFunction)__pyx_pw_5adios_55define_mesh_timevarying, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_54define_mesh_timevarying},
+  {"define_mesh_timesteps", (PyCFunction)__pyx_pw_5adios_57define_mesh_timesteps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_56define_mesh_timesteps},
+  {"define_mesh_timescale", (PyCFunction)__pyx_pw_5adios_59define_mesh_timescale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_58define_mesh_timescale},
+  {"define_mesh_timeseriesformat", (PyCFunction)__pyx_pw_5adios_61define_mesh_timeseriesformat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_60define_mesh_timeseriesformat},
+  {"define_mesh_uniform", (PyCFunction)__pyx_pw_5adios_63define_mesh_uniform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_62define_mesh_uniform},
+  {"define_mesh_rectilinear", (PyCFunction)__pyx_pw_5adios_65define_mesh_rectilinear, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_64define_mesh_rectilinear},
+  {"define_mesh_structured", (PyCFunction)__pyx_pw_5adios_67define_mesh_structured, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_66define_mesh_structured},
+  {"define_mesh_unstructured", (PyCFunction)__pyx_pw_5adios_69define_mesh_unstructured, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_68define_mesh_unstructured},
+  {"define_attribute", (PyCFunction)__pyx_pw_5adios_71define_attribute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_70define_attribute},
+  {"define_attribute_byvalue", (PyCFunction)__pyx_pw_5adios_73define_attribute_byvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_72define_attribute_byvalue},
+  {"select_method", (PyCFunction)__pyx_pw_5adios_75select_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_74select_method},
+  {"set_transform", (PyCFunction)__pyx_pw_5adios_77set_transform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_76set_transform},
+  {"set_max_buffer_size", (PyCFunction)__pyx_pw_5adios_79set_max_buffer_size, METH_O, __pyx_doc_5adios_78set_max_buffer_size},
+  {"set_time_aggregation", (PyCFunction)__pyx_pw_5adios_81set_time_aggregation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_80set_time_aggregation},
+  {"adios2npdtype", (PyCFunction)__pyx_pw_5adios_83adios2npdtype, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_82adios2npdtype},
+  {"np2adiostype", (PyCFunction)__pyx_pw_5adios_85np2adiostype, METH_O, __pyx_doc_5adios_84np2adiostype},
+  {"adiostype2string", (PyCFunction)__pyx_pw_5adios_87adiostype2string, METH_O, __pyx_doc_5adios_86adiostype2string},
+  {"read_init", (PyCFunction)__pyx_pw_5adios_89read_init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_88read_init},
+  {"read_finalize", (PyCFunction)__pyx_pw_5adios_91read_finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_5adios_90read_finalize},
   {0, 0, 0, 0}
 };
 
@@ -36556,8 +40489,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1},
   {&__pyx_n_s_bpls, __pyx_k_bpls, sizeof(__pyx_k_bpls), 0, 0, 1, 1},
   {&__pyx_n_s_buffer_size, __pyx_k_buffer_size, sizeof(__pyx_k_buffer_size), 0, 0, 1, 1},
+  {&__pyx_n_s_buffersize, __pyx_k_buffersize, sizeof(__pyx_k_buffersize), 0, 0, 1, 1},
   {&__pyx_n_s_byte, __pyx_k_byte, sizeof(__pyx_k_byte), 0, 0, 1, 1},
   {&__pyx_kp_s_bytes, __pyx_k_bytes, sizeof(__pyx_k_bytes), 0, 0, 1, 0},
+  {&__pyx_n_s_cell_type, __pyx_k_cell_type, sizeof(__pyx_k_cell_type), 0, 0, 1, 1},
+  {&__pyx_n_s_centering, __pyx_k_centering, sizeof(__pyx_k_centering), 0, 0, 1, 1},
   {&__pyx_n_s_char, __pyx_k_char, sizeof(__pyx_k_char), 0, 0, 1, 1},
   {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
   {&__pyx_n_s_comm, __pyx_k_comm, sizeof(__pyx_k_comm), 0, 0, 1, 1},
@@ -36568,9 +40504,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_concatenate, __pyx_k_concatenate, sizeof(__pyx_k_concatenate), 0, 0, 1, 1},
   {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1},
   {&__pyx_n_s_contiguous, __pyx_k_contiguous, sizeof(__pyx_k_contiguous), 0, 0, 1, 1},
+  {&__pyx_n_s_coordinates, __pyx_k_coordinates, sizeof(__pyx_k_coordinates), 0, 0, 1, 1},
   {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
   {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
   {&__pyx_n_s_current_step, __pyx_k_current_step, sizeof(__pyx_k_current_step), 0, 0, 1, 1},
+  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
   {&__pyx_n_s_data_size, __pyx_k_data_size, sizeof(__pyx_k_data_size), 0, 0, 1, 1},
   {&__pyx_n_s_declare_group, __pyx_k_declare_group, sizeof(__pyx_k_declare_group), 0, 0, 1, 1},
   {&__pyx_n_s_define, __pyx_k_define, sizeof(__pyx_k_define), 0, 0, 1, 1},
@@ -36610,7 +40548,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_group, __pyx_k_group, sizeof(__pyx_k_group), 0, 0, 1, 1},
   {&__pyx_n_s_group_id, __pyx_k_group_id, sizeof(__pyx_k_group_id), 0, 0, 1, 1},
   {&__pyx_n_s_group_name, __pyx_k_group_name, sizeof(__pyx_k_group_name), 0, 0, 1, 1},
+  {&__pyx_n_s_groupid, __pyx_k_groupid, sizeof(__pyx_k_groupid), 0, 0, 1, 1},
   {&__pyx_n_s_hl, __pyx_k_hl, sizeof(__pyx_k_hl), 0, 0, 1, 1},
+  {&__pyx_n_s_hyperslab, __pyx_k_hyperslab, sizeof(__pyx_k_hyperslab), 0, 0, 1, 1},
   {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
   {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
   {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
@@ -36638,6 +40578,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_long, __pyx_k_long, sizeof(__pyx_k_long), 0, 0, 1, 1},
   {&__pyx_n_s_long_double, __pyx_k_long_double, sizeof(__pyx_k_long_double), 0, 0, 1, 1},
   {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
+  {&__pyx_n_s_maximum, __pyx_k_maximum, sizeof(__pyx_k_maximum), 0, 0, 1, 1},
+  {&__pyx_n_s_meshname, __pyx_k_meshname, sizeof(__pyx_k_meshname), 0, 0, 1, 1},
   {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
   {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1},
   {&__pyx_n_s_method_name, __pyx_k_method_name, sizeof(__pyx_k_method_name), 0, 0, 1, 1},
@@ -36654,11 +40596,14 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1},
   {&__pyx_n_s_normalize_key, __pyx_k_normalize_key, sizeof(__pyx_k_normalize_key), 0, 0, 1, 1},
   {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
+  {&__pyx_n_s_npoints, __pyx_k_npoints, sizeof(__pyx_k_npoints), 0, 0, 1, 1},
+  {&__pyx_n_s_nspace, __pyx_k_nspace, sizeof(__pyx_k_nspace), 0, 0, 1, 1},
   {&__pyx_n_s_nsteps, __pyx_k_nsteps, sizeof(__pyx_k_nsteps), 0, 0, 1, 1},
   {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
   {&__pyx_n_s_nvars, __pyx_k_nvars, sizeof(__pyx_k_nvars), 0, 0, 1, 1},
   {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1},
   {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1},
+  {&__pyx_n_s_origin, __pyx_k_origin, sizeof(__pyx_k_origin), 0, 0, 1, 1},
   {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
   {&__pyx_n_s_parameters, __pyx_k_parameters, sizeof(__pyx_k_parameters), 0, 0, 1, 1},
   {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
@@ -36684,13 +40629,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1},
   {&__pyx_n_s_rstrip, __pyx_k_rstrip, sizeof(__pyx_k_rstrip), 0, 0, 1, 1},
   {&__pyx_n_s_scalar, __pyx_k_scalar, sizeof(__pyx_k_scalar), 0, 0, 1, 1},
+  {&__pyx_n_s_schema_version, __pyx_k_schema_version, sizeof(__pyx_k_schema_version), 0, 0, 1, 1},
   {&__pyx_n_s_sel, __pyx_k_sel, sizeof(__pyx_k_sel), 0, 0, 1, 1},
   {&__pyx_n_s_select, __pyx_k_select, sizeof(__pyx_k_select), 0, 0, 1, 1},
   {&__pyx_n_s_selections, __pyx_k_selections, sizeof(__pyx_k_selections), 0, 0, 1, 1},
+  {&__pyx_n_s_set_time_aggregation, __pyx_k_set_time_aggregation, sizeof(__pyx_k_set_time_aggregation), 0, 0, 1, 1},
   {&__pyx_n_s_setitem, __pyx_k_setitem, sizeof(__pyx_k_setitem), 0, 0, 1, 1},
   {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
   {&__pyx_n_s_short, __pyx_k_short, sizeof(__pyx_k_short), 0, 0, 1, 1},
   {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
+  {&__pyx_n_s_spacing, __pyx_k_spacing, sizeof(__pyx_k_spacing), 0, 0, 1, 1},
   {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
   {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
   {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1},
@@ -36701,13 +40649,20 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_string_array, __pyx_k_string_array, sizeof(__pyx_k_string_array), 0, 0, 1, 1},
   {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1},
   {&__pyx_n_s_strlen, __pyx_k_strlen, sizeof(__pyx_k_strlen), 0, 0, 1, 1},
+  {&__pyx_n_s_syncgroupid, __pyx_k_syncgroupid, sizeof(__pyx_k_syncgroupid), 0, 0, 1, 1},
   {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
   {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
   {&__pyx_n_s_time_index, __pyx_k_time_index, sizeof(__pyx_k_time_index), 0, 0, 1, 1},
   {&__pyx_n_s_time_steps, __pyx_k_time_steps, sizeof(__pyx_k_time_steps), 0, 0, 1, 1},
   {&__pyx_n_s_timeout_sec, __pyx_k_timeout_sec, sizeof(__pyx_k_timeout_sec), 0, 0, 1, 1},
+  {&__pyx_n_s_timescale, __pyx_k_timescale, sizeof(__pyx_k_timescale), 0, 0, 1, 1},
+  {&__pyx_n_s_timeseries, __pyx_k_timeseries, sizeof(__pyx_k_timeseries), 0, 0, 1, 1},
+  {&__pyx_n_s_timesteps, __pyx_k_timesteps, sizeof(__pyx_k_timesteps), 0, 0, 1, 1},
+  {&__pyx_n_s_timevarying, __pyx_k_timevarying, sizeof(__pyx_k_timevarying), 0, 0, 1, 1},
   {&__pyx_n_s_tostring, __pyx_k_tostring, sizeof(__pyx_k_tostring), 0, 0, 1, 1},
   {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
+  {&__pyx_n_s_transform, __pyx_k_transform, sizeof(__pyx_k_transform), 0, 0, 1, 1},
+  {&__pyx_n_s_transform_type_str, __pyx_k_transform_type_str, sizeof(__pyx_k_transform_type_str), 0, 0, 1, 1},
   {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
   {&__pyx_n_s_uint16, __pyx_k_uint16, sizeof(__pyx_k_uint16), 0, 0, 1, 1},
   {&__pyx_n_s_uint32, __pyx_k_uint32, sizeof(__pyx_k_uint32), 0, 0, 1, 1},
@@ -36724,8 +40679,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
   {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
   {&__pyx_n_s_var, __pyx_k_var, sizeof(__pyx_k_var), 0, 0, 1, 1},
+  {&__pyx_n_s_var_id, __pyx_k_var_id, sizeof(__pyx_k_var_id), 0, 0, 1, 1},
   {&__pyx_n_s_var_namelist, __pyx_k_var_namelist, sizeof(__pyx_k_var_namelist), 0, 0, 1, 1},
-  {&__pyx_kp_u_var_read_line_1265, __pyx_k_var_read_line_1265, sizeof(__pyx_k_var_read_line_1265), 0, 1, 0, 0},
+  {&__pyx_kp_u_var_read_line_1457, __pyx_k_var_read_line_1457, sizeof(__pyx_k_var_read_line_1457), 0, 1, 0, 0},
   {&__pyx_n_s_varid, __pyx_k_varid, sizeof(__pyx_k_varid), 0, 0, 1, 1},
   {&__pyx_n_s_varname, __pyx_k_varname, sizeof(__pyx_k_varname), 0, 0, 1, 1},
   {&__pyx_n_s_vars, __pyx_k_vars, sizeof(__pyx_k_vars), 0, 0, 1, 1},
@@ -36734,8 +40690,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
   {&__pyx_n_s_when, __pyx_k_when, sizeof(__pyx_k_when), 0, 0, 1, 1},
   {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
-  {&__pyx_kp_u_writer_declare_group_line_1782, __pyx_k_writer_declare_group_line_1782, sizeof(__pyx_k_writer_declare_group_line_1782), 0, 1, 0, 0},
-  {&__pyx_kp_u_writer_define_var_line_1804, __pyx_k_writer_define_var_line_1804, sizeof(__pyx_k_writer_define_var_line_1804), 0, 1, 0, 0},
+  {&__pyx_kp_u_writer_declare_group_line_1983, __pyx_k_writer_declare_group_line_1983, sizeof(__pyx_k_writer_declare_group_line_1983), 0, 1, 0, 0},
+  {&__pyx_kp_u_writer_define_var_line_2020, __pyx_k_writer_define_var_line_2020, sizeof(__pyx_k_writer_define_var_line_2020), 0, 1, 0, 0},
   {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
   {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
   {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
@@ -36748,15 +40704,15 @@ static int __Pyx_InitCachedBuiltins(void) {
   #else
   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) __PYX_ERR(0, 71, __pyx_L1_error)
   #endif
-  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(0, 358, __pyx_L1_error)
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 594, __pyx_L1_error)
-  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 704, __pyx_L1_error)
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 708, __pyx_L1_error)
-  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 1193, __pyx_L1_error)
-  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 1200, __pyx_L1_error)
-  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 1357, __pyx_L1_error)
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1448, __pyx_L1_error)
-  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 1470, __pyx_L1_error)
+  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(0, 442, __pyx_L1_error)
+  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 786, __pyx_L1_error)
+  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 896, __pyx_L1_error)
+  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 900, __pyx_L1_error)
+  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 1392, __pyx_L1_error)
+  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 1549, __pyx_L1_error)
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1640, __pyx_L1_error)
+  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 1662, __pyx_L1_error)
   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 218, __pyx_L1_error)
   __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 799, __pyx_L1_error)
   return 0;
@@ -36790,506 +40746,495 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_slice__3);
   __Pyx_GIVEREF(__pyx_slice__3);
 
-  /* "adios.pyx":359
+  /* "adios.pyx":443
  *     for slice_ in index:
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))             # <<<<<<<<<<<<<<
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  */
-  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 359, __pyx_L1_error)
+  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 443, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_slice__4);
   __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "adios.pyx":370
+  /* "adios.pyx":454
  *     index = tuple(fixed)
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))             # <<<<<<<<<<<<<<
  * 
  *     return index
  */
-  __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 370, __pyx_L1_error)
+  __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 454, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_slice__5);
   __Pyx_GIVEREF(__pyx_slice__5);
-  __pyx_tuple__6 = PyTuple_New(1); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 370, __pyx_L1_error)
+  __pyx_tuple__6 = PyTuple_New(1); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 454, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__6);
   __Pyx_INCREF(__pyx_slice__5);
   __Pyx_GIVEREF(__pyx_slice__5);
   PyTuple_SET_ITEM(__pyx_tuple__6, 0, __pyx_slice__5);
   __Pyx_GIVEREF(__pyx_tuple__6);
 
-  /* "adios.pyx":708
+  /* "adios.pyx":900
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 708, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 900, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__13);
+  __Pyx_GIVEREF(__pyx_tuple__13);
 
-  /* "adios.pyx":710
+  /* "adios.pyx":902
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 710, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 902, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
 
-  /* "adios.pyx":711
+  /* "adios.pyx":903
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in dict.keys(self):
  */
-  __pyx_slice__14 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__14)) __PYX_ERR(0, 711, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__14);
-  __Pyx_GIVEREF(__pyx_slice__14);
+  __pyx_slice__15 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__15)) __PYX_ERR(0, 903, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__15);
+  __Pyx_GIVEREF(__pyx_slice__15);
 
-  /* "adios.pyx":823
+  /* "adios.pyx":1015
  *         assert self.fp != NULL, 'Not an open file'
  * 
  *         self.name = fname.split('/')[-1]  ## basename             # <<<<<<<<<<<<<<
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs
  */
-  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 823, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
+  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1015, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__18);
+  __Pyx_GIVEREF(__pyx_tuple__18);
 
-  /* "adios.pyx":862
+  /* "adios.pyx":1054
  *         """ Print native ADIOS_FILE structure. """
  *         assert self.fp != NULL, 'Not an open file'
  *         print ('=== AdiosFile ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  *         printfile(self.fp)
  */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_AdiosFile); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 862, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_AdiosFile); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1054, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
 
-  /* "adios.pyx":910
+  /* "adios.pyx":1102
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 910, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
+  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__20);
+  __Pyx_GIVEREF(__pyx_tuple__20);
 
-  /* "adios.pyx":912
+  /* "adios.pyx":1104
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
+  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
 
-  /* "adios.pyx":913
+  /* "adios.pyx":1105
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-  __pyx_slice__21 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) __PYX_ERR(0, 913, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__21);
-  __Pyx_GIVEREF(__pyx_slice__21);
+  __pyx_slice__22 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(0, 1105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__22);
+  __Pyx_GIVEREF(__pyx_slice__22);
 
-  /* "adios.pyx":987
+  /* "adios.pyx":1179
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 987, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__22);
-  __Pyx_GIVEREF(__pyx_tuple__22);
-  __pyx_slice__23 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) __PYX_ERR(0, 987, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__23);
-  __Pyx_GIVEREF(__pyx_slice__23);
+  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1179, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__23);
+  __Pyx_GIVEREF(__pyx_tuple__23);
+  __pyx_slice__24 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(0, 1179, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__24);
+  __Pyx_GIVEREF(__pyx_slice__24);
 
-  /* "adios.pyx":988
+  /* "adios.pyx":1180
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 988, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__24);
-  __Pyx_GIVEREF(__pyx_tuple__24);
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 1180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__25);
+  __Pyx_GIVEREF(__pyx_tuple__25);
 
-  /* "adios.pyx":990
+  /* "adios.pyx":1182
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 990, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__25);
-  __Pyx_GIVEREF(__pyx_tuple__25);
-  __pyx_slice__26 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) __PYX_ERR(0, 990, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__26);
-  __Pyx_GIVEREF(__pyx_slice__26);
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
+  __pyx_slice__27 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__27);
+  __Pyx_GIVEREF(__pyx_slice__27);
 
-  /* "adios.pyx":991
+  /* "adios.pyx":1183
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 991, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__27);
-  __Pyx_GIVEREF(__pyx_tuple__27);
+  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1183, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__28);
+  __Pyx_GIVEREF(__pyx_tuple__28);
 
-  /* "adios.pyx":1332
+  /* "adios.pyx":1524
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()
  *             npoffset.fill(0)             # <<<<<<<<<<<<<<
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)
  */
-  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1332, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1524, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
 
-  /* "adios.pyx":1343
+  /* "adios.pyx":1535
  * 
  *         if len(scalar) == 0:
  *             scalar = tuple((False,) * len(npshape))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(npoffset):
  */
-  __pyx_tuple__29 = PyTuple_New(1); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1343, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__29);
+  __pyx_tuple__30 = PyTuple_New(1); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1535, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
   __Pyx_INCREF(Py_False);
   __Pyx_GIVEREF(Py_False);
-  PyTuple_SET_ITEM(__pyx_tuple__29, 0, Py_False);
-  __Pyx_GIVEREF(__pyx_tuple__29);
+  PyTuple_SET_ITEM(__pyx_tuple__30, 0, Py_False);
+  __Pyx_GIVEREF(__pyx_tuple__30);
 
-  /* "adios.pyx":1355
+  /* "adios.pyx":1547
  * 
  *         if (npshape < npcount + npoffset).any():
  *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Requested_is_larger_than_the_sha); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1355, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Requested_is_larger_than_the_sha); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 1547, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__31);
+  __Pyx_GIVEREF(__pyx_tuple__31);
 
-  /* "adios.pyx":1363
+  /* "adios.pyx":1555
  * 
  *         if len(shape) > 0:
  *             var[:] = fill             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) __PYX_ERR(0, 1363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__31);
-  __Pyx_GIVEREF(__pyx_slice__31);
+  __pyx_slice__32 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__32)) __PYX_ERR(0, 1555, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__32);
+  __Pyx_GIVEREF(__pyx_slice__32);
 
-  /* "adios.pyx":1383
+  /* "adios.pyx":1575
  *         """ Print native ADIOS_VARINFO structure. """
  *         assert self.vp != NULL, 'Not an open variable'
  *         print ('=== AdiosVariable ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_AdiosVariable); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1383, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_AdiosVariable); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 1575, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
 
-  /* "adios.pyx":1407
+  /* "adios.pyx":1599
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 1407, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1599, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__34);
+  __Pyx_GIVEREF(__pyx_tuple__34);
 
-  /* "adios.pyx":1409
+  /* "adios.pyx":1601
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1409, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__34);
-  __Pyx_GIVEREF(__pyx_tuple__34);
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 1601, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__35);
+  __Pyx_GIVEREF(__pyx_tuple__35);
 
-  /* "adios.pyx":1410
+  /* "adios.pyx":1602
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.attrs.keys():
  */
-  __pyx_slice__35 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) __PYX_ERR(0, 1410, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__35);
-  __Pyx_GIVEREF(__pyx_slice__35);
+  __pyx_slice__36 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) __PYX_ERR(0, 1602, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__36);
+  __Pyx_GIVEREF(__pyx_slice__36);
 
-  /* "adios.pyx":1431
+  /* "adios.pyx":1623
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],             # <<<<<<<<<<<<<<
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],
  */
-  __pyx_slice__36 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) __PYX_ERR(0, 1431, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__36);
-  __Pyx_GIVEREF(__pyx_slice__36);
+  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 1623, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__37);
+  __Pyx_GIVEREF(__pyx_slice__37);
 
-  /* "adios.pyx":1432
+  /* "adios.pyx":1624
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],             # <<<<<<<<<<<<<<
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],
  */
-  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 1432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__37);
-  __Pyx_GIVEREF(__pyx_slice__37);
+  __pyx_slice__38 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__38)) __PYX_ERR(0, 1624, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__38);
+  __Pyx_GIVEREF(__pyx_slice__38);
 
-  /* "adios.pyx":1433
+  /* "adios.pyx":1625
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],             # <<<<<<<<<<<<<<
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],
  */
-  __pyx_slice__38 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__38)) __PYX_ERR(0, 1433, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__38);
-  __Pyx_GIVEREF(__pyx_slice__38);
+  __pyx_slice__39 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 1625, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__39);
+  __Pyx_GIVEREF(__pyx_slice__39);
 
-  /* "adios.pyx":1450
+  /* "adios.pyx":1642
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],             # <<<<<<<<<<<<<<
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  */
-  __pyx_slice__39 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 1450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__39);
-  __Pyx_GIVEREF(__pyx_slice__39);
+  __pyx_slice__40 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(0, 1642, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__40);
+  __Pyx_GIVEREF(__pyx_slice__40);
 
-  /* "adios.pyx":1451
+  /* "adios.pyx":1643
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],             # <<<<<<<<<<<<<<
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],
  */
-  __pyx_slice__40 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(0, 1451, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__40);
-  __Pyx_GIVEREF(__pyx_slice__40);
+  __pyx_slice__41 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(0, 1643, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__41);
+  __Pyx_GIVEREF(__pyx_slice__41);
 
-  /* "adios.pyx":1452
+  /* "adios.pyx":1644
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],             # <<<<<<<<<<<<<<
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],
  */
-  __pyx_slice__41 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(0, 1452, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__41);
-  __Pyx_GIVEREF(__pyx_slice__41);
+  __pyx_slice__42 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) __PYX_ERR(0, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__42);
+  __Pyx_GIVEREF(__pyx_slice__42);
 
-  /* "adios.pyx":1470
+  /* "adios.pyx":1662
  * 
  *         else:
  *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, args):
  */
-  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Not_implemented_yet); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1470, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__42);
-  __Pyx_GIVEREF(__pyx_tuple__42);
+  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_Not_implemented_yet); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1662, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__43);
+  __Pyx_GIVEREF(__pyx_tuple__43);
 
-  /* "adios.pyx":1596
+  /* "adios.pyx":1788
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.name = name.rstrip('/')             # <<<<<<<<<<<<<<
  * 
  *         self.vars = softdict()
  */
-  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1596, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
+  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1788, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__44);
+  __Pyx_GIVEREF(__pyx_tuple__44);
 
-  /* "adios.pyx":1631
+  /* "adios.pyx":1823
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1631, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__45);
+  __Pyx_GIVEREF(__pyx_tuple__45);
 
-  /* "adios.pyx":1633
+  /* "adios.pyx":1825
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
+  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 1825, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__46);
+  __Pyx_GIVEREF(__pyx_tuple__46);
 
-  /* "adios.pyx":1634
+  /* "adios.pyx":1826
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-  __pyx_slice__46 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__46)) __PYX_ERR(0, 1634, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__46);
-  __Pyx_GIVEREF(__pyx_slice__46);
+  __pyx_slice__47 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__47)) __PYX_ERR(0, 1826, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__47);
+  __Pyx_GIVEREF(__pyx_slice__47);
 
-  /* "adios.pyx":1684
+  /* "adios.pyx":1876
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 1684, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__47);
-  __Pyx_GIVEREF(__pyx_tuple__47);
-  __pyx_slice__48 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__48)) __PYX_ERR(0, 1684, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__48);
-  __Pyx_GIVEREF(__pyx_slice__48);
+  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 1876, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__48);
+  __Pyx_GIVEREF(__pyx_tuple__48);
+  __pyx_slice__49 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__49)) __PYX_ERR(0, 1876, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__49);
+  __Pyx_GIVEREF(__pyx_slice__49);
 
-  /* "adios.pyx":1685
+  /* "adios.pyx":1877
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 1685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__49);
-  __Pyx_GIVEREF(__pyx_tuple__49);
+  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1877, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__50);
+  __Pyx_GIVEREF(__pyx_tuple__50);
 
-  /* "adios.pyx":1687
+  /* "adios.pyx":1879
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1687, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__50);
-  __Pyx_GIVEREF(__pyx_tuple__50);
-  __pyx_slice__51 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__51)) __PYX_ERR(0, 1687, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__51);
-  __Pyx_GIVEREF(__pyx_slice__51);
+  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 1879, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__51);
+  __Pyx_GIVEREF(__pyx_tuple__51);
+  __pyx_slice__52 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__52)) __PYX_ERR(0, 1879, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__52);
+  __Pyx_GIVEREF(__pyx_slice__52);
 
-  /* "adios.pyx":1688
+  /* "adios.pyx":1880
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 1688, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__52);
-  __Pyx_GIVEREF(__pyx_tuple__52);
-
-  /* "adios.pyx":1861
- *         """
- *         if self.gname is None:
- *             self.declare_group("group")             # <<<<<<<<<<<<<<
- * 
- *         fd = open(self.gname, self.fname, self.mode)
- */
-  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_n_s_group); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 1861, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__57);
-  __Pyx_GIVEREF(__pyx_tuple__57);
+  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 1880, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__53);
+  __Pyx_GIVEREF(__pyx_tuple__53);
 
-  /* "adios.pyx":1959
+  /* "adios.pyx":2187
  *         if self.is_static:
  *             if self.value is None:
  *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)
  */
-  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 1959, __pyx_L1_error)
+  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 2187, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__58);
   __Pyx_GIVEREF(__pyx_tuple__58);
 
-  /* "adios.pyx":1995
+  /* "adios.pyx":2233
  *     def define(self, int64_t gid):
  *         if self.value is None:
  *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *         ldim_ = self.ldim
  */
-  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 1995, __pyx_L1_error)
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 2233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__62);
   __Pyx_GIVEREF(__pyx_tuple__62);
 
-  /* "adios.pyx":2016
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
+  /* "adios.pyx":2255
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_tuple__64 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_tuple__64 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__64);
   __Pyx_GIVEREF(__pyx_tuple__64);
-  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__66);
   __Pyx_GIVEREF(__pyx_tuple__66);
 
-  /* "adios.pyx":2017
- *         define_var(gid, self.name, "", atype,
+  /* "adios.pyx":2256
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_tuple__67 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_tuple__67 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__67);
   __Pyx_GIVEREF(__pyx_tuple__67);
-  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__68);
   __Pyx_GIVEREF(__pyx_tuple__68);
 
-  /* "adios.pyx":2018
+  /* "adios.pyx":2257
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
- *     def bytes(self):
+ *         if (self.transform is not None):
  */
-  __pyx_tuple__69 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_tuple__69 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__69);
   __Pyx_GIVEREF(__pyx_tuple__69);
-  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 2018, __pyx_L1_error)
+  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 2257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__70);
   __Pyx_GIVEREF(__pyx_tuple__70);
 
@@ -37371,29 +41316,29 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__77);
   __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_normalize_key, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 58, __pyx_L1_error)
 
-  /* "adios.pyx":2050
+  /* "adios.pyx":2292
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_tuple__79 = PyTuple_Pack(4, __pyx_n_s_fname, __pyx_n_s_varname, __pyx_n_s_f, __pyx_n_s_v); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 2050, __pyx_L1_error)
+  __pyx_tuple__79 = PyTuple_Pack(4, __pyx_n_s_fname, __pyx_n_s_varname, __pyx_n_s_f, __pyx_n_s_v); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 2292, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__79);
   __Pyx_GIVEREF(__pyx_tuple__79);
-  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_readvar_2, 2050, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 2050, __pyx_L1_error)
+  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_readvar_2, 2292, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 2292, __pyx_L1_error)
 
-  /* "adios.pyx":2064
+  /* "adios.pyx":2306
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
  *     """ Return meta data of an Adios file as a Python dictionary object.
  * 
  */
-  __pyx_tuple__81 = PyTuple_Pack(3, __pyx_n_s_fname, __pyx_n_s_f, __pyx_n_s_k); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 2064, __pyx_L1_error)
+  __pyx_tuple__81 = PyTuple_Pack(3, __pyx_n_s_fname, __pyx_n_s_f, __pyx_n_s_k); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 2306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__81);
   __Pyx_GIVEREF(__pyx_tuple__81);
-  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_bpls, 2064, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 2064, __pyx_L1_error)
+  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_bpls, 2306, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 2306, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -37513,9 +41458,9 @@ PyMODINIT_FUNC PyInit_adios(void)
   /*--- Function export code ---*/
   /*--- Type init code ---*/
   __pyx_type_5adios_softdict.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_5adios_softdict) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_softdict) < 0) __PYX_ERR(0, 890, __pyx_L1_error)
   __pyx_type_5adios_softdict.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "softdict", (PyObject *)&__pyx_type_5adios_softdict) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "softdict", (PyObject *)&__pyx_type_5adios_softdict) < 0) __PYX_ERR(0, 890, __pyx_L1_error)
   __pyx_ptype_5adios_softdict = &__pyx_type_5adios_softdict;
   __pyx_vtabptr_5adios_file = &__pyx_vtable_5adios_file;
   __pyx_vtable_5adios_file.close = (PyObject *(*)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch))__pyx_f_5adios_4file_close;
@@ -37523,11 +41468,11 @@ PyMODINIT_FUNC PyInit_adios(void)
   __pyx_vtable_5adios_file.release_step = (PyObject *(*)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch))__pyx_f_5adios_4file_release_step;
   __pyx_vtable_5adios_file.advance = (PyObject *(*)(struct __pyx_obj_5adios_file *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_4file_advance *__pyx_optional_args))__pyx_f_5adios_4file_advance;
   __pyx_type_5adios_file.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_5adios_file) < 0) __PYX_ERR(0, 722, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_file) < 0) __PYX_ERR(0, 914, __pyx_L1_error)
   __pyx_type_5adios_file.tp_print = 0;
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 722, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 914, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_5adios_4file_16__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_5adios_4file_16__getitem__.doc = __pyx_doc_5adios_4file_16__getitem__;
@@ -37537,7 +41482,7 @@ PyMODINIT_FUNC PyInit_adios(void)
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 722, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_file, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 914, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_5adios_4file_18__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_5adios_4file_18__repr__.doc = __pyx_doc_5adios_4file_18__repr__;
@@ -37545,12 +41490,12 @@ PyMODINIT_FUNC PyInit_adios(void)
     }
   }
   #endif
-  if (__Pyx_SetVtable(__pyx_type_5adios_file.tp_dict, __pyx_vtabptr_5adios_file) < 0) __PYX_ERR(0, 722, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "file", (PyObject *)&__pyx_type_5adios_file) < 0) __PYX_ERR(0, 722, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_5adios_file.tp_dict, __pyx_vtabptr_5adios_file) < 0) __PYX_ERR(0, 914, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "file", (PyObject *)&__pyx_type_5adios_file) < 0) __PYX_ERR(0, 914, __pyx_L1_error)
   __pyx_ptype_5adios_file = &__pyx_type_5adios_file;
-  if (PyType_Ready(&__pyx_type_5adios_blockinfo) < 0) __PYX_ERR(0, 994, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_blockinfo) < 0) __PYX_ERR(0, 1186, __pyx_L1_error)
   __pyx_type_5adios_blockinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "blockinfo", (PyObject *)&__pyx_type_5adios_blockinfo) < 0) __PYX_ERR(0, 994, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "blockinfo", (PyObject *)&__pyx_type_5adios_blockinfo) < 0) __PYX_ERR(0, 1186, __pyx_L1_error)
   __pyx_ptype_5adios_blockinfo = &__pyx_type_5adios_blockinfo;
   __pyx_vtabptr_5adios_var = &__pyx_vtable_5adios_var;
   __pyx_vtable_5adios_var.close = (PyObject *(*)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch))__pyx_f_5adios_3var_close;
@@ -37560,21 +41505,21 @@ PyMODINIT_FUNC PyInit_adios(void)
   __pyx_vtable_5adios_var.read = (PyObject *(*)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_5adios_3var_read *__pyx_optional_args))__pyx_f_5adios_3var_read;
   __pyx_vtable_5adios_var.printself = (PyObject *(*)(struct __pyx_obj_5adios_var *, int __pyx_skip_dispatch))__pyx_f_5adios_3var_printself;
   __pyx_type_5adios_var.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_5adios_var) < 0) __PYX_ERR(0, 1029, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_var) < 0) __PYX_ERR(0, 1221, __pyx_L1_error)
   __pyx_type_5adios_var.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_5adios_var.tp_dict, __pyx_vtabptr_5adios_var) < 0) __PYX_ERR(0, 1029, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "var", (PyObject *)&__pyx_type_5adios_var) < 0) __PYX_ERR(0, 1029, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_5adios_var.tp_dict, __pyx_vtabptr_5adios_var) < 0) __PYX_ERR(0, 1221, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "var", (PyObject *)&__pyx_type_5adios_var) < 0) __PYX_ERR(0, 1221, __pyx_L1_error)
   __pyx_ptype_5adios_var = &__pyx_type_5adios_var;
-  if (PyType_Ready(&__pyx_type_5adios_attr) < 0) __PYX_ERR(0, 1494, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_attr) < 0) __PYX_ERR(0, 1686, __pyx_L1_error)
   __pyx_type_5adios_attr.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_5adios_attr) < 0) __PYX_ERR(0, 1494, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_5adios_attr) < 0) __PYX_ERR(0, 1686, __pyx_L1_error)
   __pyx_ptype_5adios_attr = &__pyx_type_5adios_attr;
   __pyx_type_5adios_group.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_5adios_group) < 0) __PYX_ERR(0, 1580, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_group) < 0) __PYX_ERR(0, 1772, __pyx_L1_error)
   __pyx_type_5adios_group.tp_print = 0;
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_group, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1580, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_group, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1772, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_5adios_5group_2__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_5adios_5group_2__getitem__.doc = __pyx_doc_5adios_5group_2__getitem__;
@@ -37584,7 +41529,7 @@ PyMODINIT_FUNC PyInit_adios(void)
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_group, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1580, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_5adios_group, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1772, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_5adios_5group_4__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_5adios_5group_4__repr__.doc = __pyx_doc_5adios_5group_4__repr__;
@@ -37592,24 +41537,24 @@ PyMODINIT_FUNC PyInit_adios(void)
     }
   }
   #endif
-  if (PyObject_SetAttrString(__pyx_m, "group", (PyObject *)&__pyx_type_5adios_group) < 0) __PYX_ERR(0, 1580, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "group", (PyObject *)&__pyx_type_5adios_group) < 0) __PYX_ERR(0, 1772, __pyx_L1_error)
   __pyx_ptype_5adios_group = &__pyx_type_5adios_group;
   __pyx_type_5adios_smartdict.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_5adios_smartdict) < 0) __PYX_ERR(0, 1692, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_smartdict) < 0) __PYX_ERR(0, 1884, __pyx_L1_error)
   __pyx_type_5adios_smartdict.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_5adios_smartdict) < 0) __PYX_ERR(0, 1692, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_5adios_smartdict) < 0) __PYX_ERR(0, 1884, __pyx_L1_error)
   __pyx_ptype_5adios_smartdict = &__pyx_type_5adios_smartdict;
-  if (PyType_Ready(&__pyx_type_5adios_writer) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_writer) < 0) __PYX_ERR(0, 1896, __pyx_L1_error)
   __pyx_type_5adios_writer.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_5adios_writer) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_5adios_writer) < 0) __PYX_ERR(0, 1896, __pyx_L1_error)
   __pyx_ptype_5adios_writer = &__pyx_type_5adios_writer;
-  if (PyType_Ready(&__pyx_type_5adios_attrinfo) < 0) __PYX_ERR(0, 1922, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_attrinfo) < 0) __PYX_ERR(0, 2150, __pyx_L1_error)
   __pyx_type_5adios_attrinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_5adios_attrinfo) < 0) __PYX_ERR(0, 1922, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_5adios_attrinfo) < 0) __PYX_ERR(0, 2150, __pyx_L1_error)
   __pyx_ptype_5adios_attrinfo = &__pyx_type_5adios_attrinfo;
-  if (PyType_Ready(&__pyx_type_5adios_varinfo) < 0) __PYX_ERR(0, 1975, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_5adios_varinfo) < 0) __PYX_ERR(0, 2203, __pyx_L1_error)
   __pyx_type_5adios_varinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_5adios_varinfo) < 0) __PYX_ERR(0, 1975, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_5adios_varinfo) < 0) __PYX_ERR(0, 2203, __pyx_L1_error)
   __pyx_ptype_5adios_varinfo = &__pyx_type_5adios_varinfo;
   /*--- Type import code ---*/
   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
@@ -37688,401 +41633,401 @@ PyMODINIT_FUNC PyInit_adios(void)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize_key, __pyx_t_2) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":308
+  /* "adios.pyx":392
  * ## ====================
  * 
  * class DATATYPE:             # <<<<<<<<<<<<<<
  *     unknown = -1
  *     byte = 0
  */
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DATATYPE, __pyx_n_s_DATATYPE, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 308, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DATATYPE, __pyx_n_s_DATATYPE, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":309
+  /* "adios.pyx":393
  * 
  * class DATATYPE:
  *     unknown = -1             # <<<<<<<<<<<<<<
  *     byte = 0
  *     short = 1
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) __PYX_ERR(0, 309, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) __PYX_ERR(0, 393, __pyx_L1_error)
 
-  /* "adios.pyx":310
+  /* "adios.pyx":394
  * class DATATYPE:
  *     unknown = -1
  *     byte = 0             # <<<<<<<<<<<<<<
  *     short = 1
  *     integer = 2
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_byte, __pyx_int_0) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_byte, __pyx_int_0) < 0) __PYX_ERR(0, 394, __pyx_L1_error)
 
-  /* "adios.pyx":311
+  /* "adios.pyx":395
  *     unknown = -1
  *     byte = 0
  *     short = 1             # <<<<<<<<<<<<<<
  *     integer = 2
  *     long = 4
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_short, __pyx_int_1) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_short, __pyx_int_1) < 0) __PYX_ERR(0, 395, __pyx_L1_error)
 
-  /* "adios.pyx":312
+  /* "adios.pyx":396
  *     byte = 0
  *     short = 1
  *     integer = 2             # <<<<<<<<<<<<<<
  *     long = 4
  *     unsigned_byte = 50
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_integer, __pyx_int_2) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_integer, __pyx_int_2) < 0) __PYX_ERR(0, 396, __pyx_L1_error)
 
-  /* "adios.pyx":313
+  /* "adios.pyx":397
  *     short = 1
  *     integer = 2
  *     long = 4             # <<<<<<<<<<<<<<
  *     unsigned_byte = 50
  *     unsigned_short = 51
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_long, __pyx_int_4) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_long, __pyx_int_4) < 0) __PYX_ERR(0, 397, __pyx_L1_error)
 
-  /* "adios.pyx":314
+  /* "adios.pyx":398
  *     integer = 2
  *     long = 4
  *     unsigned_byte = 50             # <<<<<<<<<<<<<<
  *     unsigned_short = 51
  *     unsigned_integer = 52
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_byte, __pyx_int_50) < 0) __PYX_ERR(0, 314, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_byte, __pyx_int_50) < 0) __PYX_ERR(0, 398, __pyx_L1_error)
 
-  /* "adios.pyx":315
+  /* "adios.pyx":399
  *     long = 4
  *     unsigned_byte = 50
  *     unsigned_short = 51             # <<<<<<<<<<<<<<
  *     unsigned_integer = 52
  *     unsigned_long = 54
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_short, __pyx_int_51) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_short, __pyx_int_51) < 0) __PYX_ERR(0, 399, __pyx_L1_error)
 
-  /* "adios.pyx":316
+  /* "adios.pyx":400
  *     unsigned_byte = 50
  *     unsigned_short = 51
  *     unsigned_integer = 52             # <<<<<<<<<<<<<<
  *     unsigned_long = 54
  *     real = 5
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_integer, __pyx_int_52) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_integer, __pyx_int_52) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
 
-  /* "adios.pyx":317
+  /* "adios.pyx":401
  *     unsigned_short = 51
  *     unsigned_integer = 52
  *     unsigned_long = 54             # <<<<<<<<<<<<<<
  *     real = 5
  *     double = 6
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_long, __pyx_int_54) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_unsigned_long, __pyx_int_54) < 0) __PYX_ERR(0, 401, __pyx_L1_error)
 
-  /* "adios.pyx":318
+  /* "adios.pyx":402
  *     unsigned_integer = 52
  *     unsigned_long = 54
  *     real = 5             # <<<<<<<<<<<<<<
  *     double = 6
  *     long_double = 7
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_real, __pyx_int_5) < 0) __PYX_ERR(0, 318, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_real, __pyx_int_5) < 0) __PYX_ERR(0, 402, __pyx_L1_error)
 
-  /* "adios.pyx":319
+  /* "adios.pyx":403
  *     unsigned_long = 54
  *     real = 5
  *     double = 6             # <<<<<<<<<<<<<<
  *     long_double = 7
  *     string = 9
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_double, __pyx_int_6) < 0) __PYX_ERR(0, 319, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_double, __pyx_int_6) < 0) __PYX_ERR(0, 403, __pyx_L1_error)
 
-  /* "adios.pyx":320
+  /* "adios.pyx":404
  *     real = 5
  *     double = 6
  *     long_double = 7             # <<<<<<<<<<<<<<
  *     string = 9
  *     complex = 10
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_long_double, __pyx_int_7) < 0) __PYX_ERR(0, 320, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_long_double, __pyx_int_7) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
 
-  /* "adios.pyx":321
+  /* "adios.pyx":405
  *     double = 6
  *     long_double = 7
  *     string = 9             # <<<<<<<<<<<<<<
  *     complex = 10
  *     double_complex = 11
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_string, __pyx_int_9) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_string, __pyx_int_9) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
 
-  /* "adios.pyx":322
+  /* "adios.pyx":406
  *     long_double = 7
  *     string = 9
  *     complex = 10             # <<<<<<<<<<<<<<
  *     double_complex = 11
  *     string_array = 12
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_complex_2, __pyx_int_10) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_complex_2, __pyx_int_10) < 0) __PYX_ERR(0, 406, __pyx_L1_error)
 
-  /* "adios.pyx":323
+  /* "adios.pyx":407
  *     string = 9
  *     complex = 10
  *     double_complex = 11             # <<<<<<<<<<<<<<
  *     string_array = 12
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_double_complex, __pyx_int_11) < 0) __PYX_ERR(0, 323, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_double_complex, __pyx_int_11) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
 
-  /* "adios.pyx":324
+  /* "adios.pyx":408
  *     complex = 10
  *     double_complex = 11
  *     string_array = 12             # <<<<<<<<<<<<<<
  * 
  * class FLAG:
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_string_array, __pyx_int_12) < 0) __PYX_ERR(0, 324, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_string_array, __pyx_int_12) < 0) __PYX_ERR(0, 408, __pyx_L1_error)
 
-  /* "adios.pyx":308
+  /* "adios.pyx":392
  * ## ====================
  * 
  * class DATATYPE:             # <<<<<<<<<<<<<<
  *     unknown = -1
  *     byte = 0
  */
-  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_DATATYPE, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 308, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_DATATYPE, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_1) < 0) __PYX_ERR(0, 308, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_1) < 0) __PYX_ERR(0, 392, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":326
+  /* "adios.pyx":410
  *     string_array = 12
  * 
  * class FLAG:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     YES = 1
  */
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_FLAG, __pyx_n_s_FLAG, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_FLAG, __pyx_n_s_FLAG, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 410, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":327
+  /* "adios.pyx":411
  * 
  * class FLAG:
  *     UNKNOWN = 0             # <<<<<<<<<<<<<<
  *     YES = 1
  *     NO = 2
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 327, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 411, __pyx_L1_error)
 
-  /* "adios.pyx":328
+  /* "adios.pyx":412
  * class FLAG:
  *     UNKNOWN = 0
  *     YES = 1             # <<<<<<<<<<<<<<
  *     NO = 2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_YES, __pyx_int_1) < 0) __PYX_ERR(0, 328, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_YES, __pyx_int_1) < 0) __PYX_ERR(0, 412, __pyx_L1_error)
 
-  /* "adios.pyx":329
+  /* "adios.pyx":413
  *     UNKNOWN = 0
  *     YES = 1
  *     NO = 2             # <<<<<<<<<<<<<<
  * 
  * class BUFFER_ALLOC_WHEN:
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NO, __pyx_int_2) < 0) __PYX_ERR(0, 329, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NO, __pyx_int_2) < 0) __PYX_ERR(0, 413, __pyx_L1_error)
 
-  /* "adios.pyx":326
+  /* "adios.pyx":410
  *     string_array = 12
  * 
  * class FLAG:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     YES = 1
  */
-  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_FLAG, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_FLAG, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 410, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_1) < 0) __PYX_ERR(0, 326, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_1) < 0) __PYX_ERR(0, 410, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":331
+  /* "adios.pyx":415
  *     NO = 2
  * 
  * class BUFFER_ALLOC_WHEN:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     NOW = 1
  */
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_n_s_BUFFER_ALLOC_WHEN, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 331, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_n_s_BUFFER_ALLOC_WHEN, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 415, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":332
+  /* "adios.pyx":416
  * 
  * class BUFFER_ALLOC_WHEN:
  *     UNKNOWN = 0             # <<<<<<<<<<<<<<
  *     NOW = 1
  *     LATER = 2
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 416, __pyx_L1_error)
 
-  /* "adios.pyx":333
+  /* "adios.pyx":417
  * class BUFFER_ALLOC_WHEN:
  *     UNKNOWN = 0
  *     NOW = 1             # <<<<<<<<<<<<<<
  *     LATER = 2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NOW, __pyx_int_1) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NOW, __pyx_int_1) < 0) __PYX_ERR(0, 417, __pyx_L1_error)
 
-  /* "adios.pyx":334
+  /* "adios.pyx":418
  *     UNKNOWN = 0
  *     NOW = 1
  *     LATER = 2             # <<<<<<<<<<<<<<
  * 
  * class READ_METHOD:
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_LATER, __pyx_int_2) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_LATER, __pyx_int_2) < 0) __PYX_ERR(0, 418, __pyx_L1_error)
 
-  /* "adios.pyx":331
+  /* "adios.pyx":415
  *     NO = 2
  * 
  * class BUFFER_ALLOC_WHEN:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     NOW = 1
  */
-  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 415, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_1) < 0) __PYX_ERR(0, 331, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_1) < 0) __PYX_ERR(0, 415, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":336
+  /* "adios.pyx":420
  *     LATER = 2
  * 
  * class READ_METHOD:             # <<<<<<<<<<<<<<
  *     BP            = 0
  *     BP_AGGREGATE  = 1
  */
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_READ_METHOD, __pyx_n_s_READ_METHOD, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_READ_METHOD, __pyx_n_s_READ_METHOD, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 420, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":337
+  /* "adios.pyx":421
  * 
  * class READ_METHOD:
  *     BP            = 0             # <<<<<<<<<<<<<<
  *     BP_AGGREGATE  = 1
  *     DATASPACES    = 3
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_BP, __pyx_int_0) < 0) __PYX_ERR(0, 337, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_BP, __pyx_int_0) < 0) __PYX_ERR(0, 421, __pyx_L1_error)
 
-  /* "adios.pyx":338
+  /* "adios.pyx":422
  * class READ_METHOD:
  *     BP            = 0
  *     BP_AGGREGATE  = 1             # <<<<<<<<<<<<<<
  *     DATASPACES    = 3
  *     DIMES         = 4
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_BP_AGGREGATE, __pyx_int_1) < 0) __PYX_ERR(0, 338, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_BP_AGGREGATE, __pyx_int_1) < 0) __PYX_ERR(0, 422, __pyx_L1_error)
 
-  /* "adios.pyx":339
+  /* "adios.pyx":423
  *     BP            = 0
  *     BP_AGGREGATE  = 1
  *     DATASPACES    = 3             # <<<<<<<<<<<<<<
  *     DIMES         = 4
  *     FLEXPATH      = 5
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_DATASPACES, __pyx_int_3) < 0) __PYX_ERR(0, 339, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_DATASPACES, __pyx_int_3) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
 
-  /* "adios.pyx":340
+  /* "adios.pyx":424
  *     BP_AGGREGATE  = 1
  *     DATASPACES    = 3
  *     DIMES         = 4             # <<<<<<<<<<<<<<
  *     FLEXPATH      = 5
  *     ICEE          = 6
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_DIMES, __pyx_int_4) < 0) __PYX_ERR(0, 340, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_DIMES, __pyx_int_4) < 0) __PYX_ERR(0, 424, __pyx_L1_error)
 
-  /* "adios.pyx":341
+  /* "adios.pyx":425
  *     DATASPACES    = 3
  *     DIMES         = 4
  *     FLEXPATH      = 5             # <<<<<<<<<<<<<<
  *     ICEE          = 6
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) __PYX_ERR(0, 341, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) __PYX_ERR(0, 425, __pyx_L1_error)
 
-  /* "adios.pyx":342
+  /* "adios.pyx":426
  *     DIMES         = 4
  *     FLEXPATH      = 5
  *     ICEE          = 6             # <<<<<<<<<<<<<<
  * 
  * class LOCKMODE:
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_ICEE, __pyx_int_6) < 0) __PYX_ERR(0, 342, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_ICEE, __pyx_int_6) < 0) __PYX_ERR(0, 426, __pyx_L1_error)
 
-  /* "adios.pyx":336
+  /* "adios.pyx":420
  *     LATER = 2
  * 
  * class READ_METHOD:             # <<<<<<<<<<<<<<
  *     BP            = 0
  *     BP_AGGREGATE  = 1
  */
-  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_READ_METHOD, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_READ_METHOD, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ_METHOD, __pyx_t_1) < 0) __PYX_ERR(0, 336, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ_METHOD, __pyx_t_1) < 0) __PYX_ERR(0, 420, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":344
+  /* "adios.pyx":428
  *     ICEE          = 6
  * 
  * class LOCKMODE:             # <<<<<<<<<<<<<<
  *     NONE = 0
  *     CURRENT = 1
  */
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LOCKMODE, __pyx_n_s_LOCKMODE, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LOCKMODE, __pyx_n_s_LOCKMODE, (PyObject *) NULL, __pyx_n_s_adios, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios.pyx":345
+  /* "adios.pyx":429
  * 
  * class LOCKMODE:
  *     NONE = 0             # <<<<<<<<<<<<<<
  *     CURRENT = 1
  *     ALL =2
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NONE, __pyx_int_0) < 0) __PYX_ERR(0, 345, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_NONE, __pyx_int_0) < 0) __PYX_ERR(0, 429, __pyx_L1_error)
 
-  /* "adios.pyx":346
+  /* "adios.pyx":430
  * class LOCKMODE:
  *     NONE = 0
  *     CURRENT = 1             # <<<<<<<<<<<<<<
  *     ALL =2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_CURRENT, __pyx_int_1) < 0) __PYX_ERR(0, 346, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_CURRENT, __pyx_int_1) < 0) __PYX_ERR(0, 430, __pyx_L1_error)
 
-  /* "adios.pyx":347
+  /* "adios.pyx":431
  *     NONE = 0
  *     CURRENT = 1
  *     ALL =2             # <<<<<<<<<<<<<<
  * 
  * cpdef __parse_index(index, ndim):
  */
-  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_ALL, __pyx_int_2) < 0) __PYX_ERR(0, 347, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s_ALL, __pyx_int_2) < 0) __PYX_ERR(0, 431, __pyx_L1_error)
 
-  /* "adios.pyx":344
+  /* "adios.pyx":428
  *     ICEE          = 6
  * 
  * class LOCKMODE:             # <<<<<<<<<<<<<<
  *     NONE = 0
  *     CURRENT = 1
  */
-  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LOCKMODE, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LOCKMODE, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCKMODE, __pyx_t_1) < 0) __PYX_ERR(0, 344, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCKMODE, __pyx_t_1) < 0) __PYX_ERR(0, 428, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":381
+  /* "adios.pyx":465
  * cdef MPI_Comm read_init_comm
  * 
  * cpdef init(str config, MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -38092,7 +42037,7 @@ PyMODINIT_FUNC PyInit_adios(void)
   __pyx_k__7 = MPI_COMM_WORLD;
   __pyx_k__7 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":389
+  /* "adios.pyx":473
  *                    str name,
  *                    str mode,
  *                    MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -38101,7 +42046,7 @@ PyMODINIT_FUNC PyInit_adios(void)
  */
   __pyx_k__8 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":386
+  /* "adios.pyx":470
  *     return adios_init(s2b(config), init_comm)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -38110,7 +42055,7 @@ PyMODINIT_FUNC PyInit_adios(void)
  */
   __pyx_k__8 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":448
+  /* "adios.pyx":532
  * ## ====================
  * 
  * cpdef int init_noxml(MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -38120,205 +42065,223 @@ PyMODINIT_FUNC PyInit_adios(void)
   __pyx_k__9 = MPI_COMM_WORLD;
   __pyx_k__9 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":684
+  /* "adios.pyx":544
+ * cpdef int64_t declare_group(str name,
+ *                             str time_index = "",
+ *                             int stats = adios_stat_default):             # <<<<<<<<<<<<<<
+ *     cdef int64_t id = 0
+ *     adios_declare_group (&id,
+ */
+  __pyx_k__11 = adios_stat_default;
+
+  /* "adios.pyx":542
+ *                                  buffer_size)
+ * 
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
+ *                             int stats = adios_stat_default):
+ */
+  __pyx_k__11 = adios_stat_default;
+
+  /* "adios.pyx":876
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",
  *                     MPI_Comm comm = MPI_COMM_WORLD,             # <<<<<<<<<<<<<<
  *                     str parameters = ""):
  *     global read_init_comm
  */
-  __pyx_k__11 = MPI_COMM_WORLD;
+  __pyx_k__12 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":683
+  /* "adios.pyx":875
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
  *                     MPI_Comm comm = MPI_COMM_WORLD,
  *                     str parameters = ""):
  */
-  __pyx_k__11 = MPI_COMM_WORLD;
+  __pyx_k__12 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":805
+  /* "adios.pyx":997
  *     def __init__(self, str fname,
  *                  str method_name = "BP",
  *                  MPI_Comm comm = MPI_COMM_WORLD,             # <<<<<<<<<<<<<<
  *                  is_stream = False,
  *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
  */
-  __pyx_k__15 = MPI_COMM_WORLD;
+  __pyx_k__16 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":807
+  /* "adios.pyx":999
  *                  MPI_Comm comm = MPI_COMM_WORLD,
  *                  is_stream = False,
  *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,             # <<<<<<<<<<<<<<
  *                  float timeout_sec = 0.0):
  *         self.fp = NULL
  */
-  __pyx_k__16 = ADIOS_LOCKMODE_ALL;
+  __pyx_k__17 = ADIOS_LOCKMODE_ALL;
 
-  /* "adios.pyx":1765
+  /* "adios.pyx":1964
  *                  bint is_noxml = True,
  *                  str mode = "w",
  *                  MPI_Comm comm = MPI_COMM_WORLD):             # <<<<<<<<<<<<<<
+ *         self.gid = 0
  *         self.fname = fname
- *         self.method = ""
  */
-  __pyx_k__53 = MPI_COMM_WORLD;
+  __pyx_k__54 = MPI_COMM_WORLD;
 
-  /* "adios.pyx":1805
+  /* "adios.pyx":2021
  * 
  *     def define_var(self, str varname,
  *                    ldim = tuple(),             # <<<<<<<<<<<<<<
  *                    gdim = tuple(),
- *                    offset = tuple()):
+ *                    offset = tuple(),
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1805, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2021, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__54 = __pyx_t_2;
+  __pyx_k__55 = __pyx_t_2;
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1806
+  /* "adios.pyx":2022
  *     def define_var(self, str varname,
  *                    ldim = tuple(),
  *                    gdim = tuple(),             # <<<<<<<<<<<<<<
- *                    offset = tuple()):
- *         """
+ *                    offset = tuple(),
+ *                    transform = None):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1806, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2022, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__55 = __pyx_t_2;
+  __pyx_k__56 = __pyx_t_2;
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1807
+  /* "adios.pyx":2023
  *                    ldim = tuple(),
  *                    gdim = tuple(),
- *                    offset = tuple()):             # <<<<<<<<<<<<<<
+ *                    offset = tuple(),             # <<<<<<<<<<<<<<
+ *                    transform = None):
  *         """
- *         Define a variable associated with the file.
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1807, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2023, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_k__56 = __pyx_t_2;
+  __pyx_k__57 = __pyx_t_2;
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1983
+  /* "adios.pyx":2219
  * 
  *     def __init__(self, str name,
  *                  ldim = tuple(),             # <<<<<<<<<<<<<<
  *                  gdim = tuple(),
  *                  offset = tuple(),
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1983, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_k__59 = __pyx_t_2;
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1984
+  /* "adios.pyx":2220
  *     def __init__(self, str name,
  *                  ldim = tuple(),
  *                  gdim = tuple(),             # <<<<<<<<<<<<<<
  *                  offset = tuple(),
- *                  value = None):
+ *                  value = None,
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1984, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2220, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_k__60 = __pyx_t_2;
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":1985
+  /* "adios.pyx":2221
  *                  ldim = tuple(),
  *                  gdim = tuple(),
  *                  offset = tuple(),             # <<<<<<<<<<<<<<
- *                  value = None):
- *         self.name = name
+ *                  value = None,
+ *                  transform = None):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1985, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2221, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_k__61 = __pyx_t_2;
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios.pyx":2039
+  /* "adios.pyx":2281
  * 
  * ## Aliases
  * File = file             # <<<<<<<<<<<<<<
  * Var = var
  * Attr = attr
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_File, ((PyObject *)__pyx_ptype_5adios_file)) < 0) __PYX_ERR(0, 2039, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_File, ((PyObject *)__pyx_ptype_5adios_file)) < 0) __PYX_ERR(0, 2281, __pyx_L1_error)
 
-  /* "adios.pyx":2040
+  /* "adios.pyx":2282
  * ## Aliases
  * File = file
  * Var = var             # <<<<<<<<<<<<<<
  * Attr = attr
  * Writer = writer
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Var, ((PyObject *)__pyx_ptype_5adios_var)) < 0) __PYX_ERR(0, 2040, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Var, ((PyObject *)__pyx_ptype_5adios_var)) < 0) __PYX_ERR(0, 2282, __pyx_L1_error)
 
-  /* "adios.pyx":2041
+  /* "adios.pyx":2283
  * File = file
  * Var = var
  * Attr = attr             # <<<<<<<<<<<<<<
  * Writer = writer
  * Attrinfo = attrinfo
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attr, ((PyObject *)__pyx_ptype_5adios_attr)) < 0) __PYX_ERR(0, 2041, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attr, ((PyObject *)__pyx_ptype_5adios_attr)) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
 
-  /* "adios.pyx":2042
+  /* "adios.pyx":2284
  * Var = var
  * Attr = attr
  * Writer = writer             # <<<<<<<<<<<<<<
  * Attrinfo = attrinfo
  * Varinfo = varinfo
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Writer, ((PyObject *)__pyx_ptype_5adios_writer)) < 0) __PYX_ERR(0, 2042, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Writer, ((PyObject *)__pyx_ptype_5adios_writer)) < 0) __PYX_ERR(0, 2284, __pyx_L1_error)
 
-  /* "adios.pyx":2043
+  /* "adios.pyx":2285
  * Attr = attr
  * Writer = writer
  * Attrinfo = attrinfo             # <<<<<<<<<<<<<<
  * Varinfo = varinfo
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attrinfo, ((PyObject *)__pyx_ptype_5adios_attrinfo)) < 0) __PYX_ERR(0, 2043, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attrinfo, ((PyObject *)__pyx_ptype_5adios_attrinfo)) < 0) __PYX_ERR(0, 2285, __pyx_L1_error)
 
-  /* "adios.pyx":2044
+  /* "adios.pyx":2286
  * Writer = writer
  * Attrinfo = attrinfo
  * Varinfo = varinfo             # <<<<<<<<<<<<<<
  * 
  * ## ====================
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Varinfo, ((PyObject *)__pyx_ptype_5adios_varinfo)) < 0) __PYX_ERR(0, 2044, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Varinfo, ((PyObject *)__pyx_ptype_5adios_varinfo)) < 0) __PYX_ERR(0, 2286, __pyx_L1_error)
 
-  /* "adios.pyx":2050
+  /* "adios.pyx":2292
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_5adios_57readvar, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2050, __pyx_L1_error)
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_5adios_93readvar, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2292, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readvar_2, __pyx_t_2) < 0) __PYX_ERR(0, 2050, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readvar_2, __pyx_t_2) < 0) __PYX_ERR(0, 2292, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios.pyx":2064
+  /* "adios.pyx":2306
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
  *     """ Return meta data of an Adios file as a Python dictionary object.
  * 
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_5adios_59bpls, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2064, __pyx_L1_error)
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_5adios_95bpls, NULL, __pyx_n_s_adios); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_2) < 0) __PYX_ERR(0, 2064, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_2) < 0) __PYX_ERR(0, 2306, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "adios.pyx":1
@@ -38328,9 +42291,9 @@ PyMODINIT_FUNC PyInit_adios(void)
  */
   __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_var_read_line_1265, __pyx_kp_u_Perform_read_Read_data_from_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_writer_declare_group_line_1782, __pyx_kp_u_Define_a_group_associated_with) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_writer_define_var_line_1804, __pyx_kp_u_Define_a_variable_associated_wi) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_var_read_line_1457, __pyx_kp_u_Perform_read_Read_data_from_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_writer_declare_group_line_1983, __pyx_kp_u_Define_a_group_associated_with) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u_writer_define_var_line_2020, __pyx_kp_u_Define_a_variable_associated_wi) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
diff --git a/wrappers/numpy/adios.pyx b/wrappers/numpy/adios.pyx
index 7bde3cf..fe7226d 100644
--- a/wrappers/numpy/adios.pyx
+++ b/wrappers/numpy/adios.pyx
@@ -107,6 +107,13 @@ cdef extern from "adios_types.h":
     ctypedef enum ADIOS_FLAG:
         pass
 
+    ctypedef enum ADIOS_STATISTICS_FLAG:
+        adios_stat_no
+        adios_stat_minmax
+        adios_stat_full
+        adios_stat_default
+        adios_stat_no_do_not_use_this
+
 cdef extern from "adios.h":
     ctypedef int MPI_Comm
     int MPI_COMM_WORLD
@@ -147,9 +154,9 @@ cdef extern from "adios.h":
     cdef int adios_declare_group (int64_t * id,
                                   char * name,
                                   char * time_index,
-                                  ADIOS_FLAG stats)
+                                  ADIOS_STATISTICS_FLAG stats)
 
-    cdef int adios_define_var (int64_t group_id,
+    cdef int64_t adios_define_var (int64_t group_id,
                                char * name,
                                char * path,
                                ADIOS_DATATYPES type,
@@ -157,6 +164,74 @@ cdef extern from "adios.h":
                                char * global_dimensions,
                                char * local_offsets)
 
+    ### Ab hier:
+    cdef int adios_define_schema_version (int64_t group_id, char * schema_version)
+
+    cdef int adios_define_var_mesh (int64_t group_id , const char * varname ,
+                                    const char * meshname)
+
+    cdef int adios_define_var_centering (int64_t group_id , const char * varname ,
+                                         const char * centering)
+
+    cdef int adios_define_var_timesteps (const char * timesteps , int64_t group_id ,
+                                         const char * name)
+
+    cdef int adios_define_var_timescale (const char * timescale , int64_t group_id ,
+                                         const char * name)
+    
+    cdef int adios_define_var_timeseriesformat (const char * timeseries , int64_t group_id ,
+                                                const char * name)
+    
+    cdef int adios_define_var_hyperslab (const char * hyperslab , int64_t group_id ,
+                                         const char * name)
+    
+    cdef int adios_define_mesh_timevarying (const char * timevarying , int64_t group_id ,
+                                            const char * name)
+    
+    cdef int adios_define_mesh_timesteps (const char * timesteps , int64_t group_id ,
+                                          const char * name)
+    
+    cdef int adios_define_mesh_timescale (const char * timescale , int64_t group_id ,
+                                         const char * name)
+    
+    cdef int adios_define_mesh_timeseriesformat (const char * timeseries , int64_t group_id ,
+                                                 const char * name)
+
+    cdef int adios_define_mesh_uniform (char * dimensions,
+                                   char * origin,
+                                   char * spacing,
+                                   char * maximum,
+                                   char * nspace,
+                                   int64_t group_id,
+                                   const char * name
+                                  )
+    
+    cdef int adios_define_mesh_rectilinear (char * dimensions,
+                                       char * coordinates,
+                                       char * nspace,
+                                       int64_t group_id,
+                                       const char * name
+                                      ) 
+    
+    cdef int adios_define_mesh_structured (char * dimensions,
+                                      char * points,
+                                      char * nspace,
+                                      int64_t group_id,
+                                      const char * name
+                                     )
+    
+    cdef int adios_define_mesh_unstructured (char * points,
+                                        char * data,
+                                        char * count,
+                                        char * cell_type,
+                                        char * npoints,
+                                        char * nspace,
+                                        int64_t group_id,
+                                        const char * name
+                                       )
+
+    ### Bis hier 
+
     cdef int adios_define_attribute (int64_t group,
                                      char * name,
                                      char * path,
@@ -176,6 +251,15 @@ cdef extern from "adios.h":
                                   char * parameters,
                                   char * base_path)
 
+    cdef int adios_set_transform (int64_t var_id, const char *transform_type_str)
+
+    cdef void adios_set_max_buffer_size (uint64_t max_buffer_size_MB)
+
+    cdef int adios_set_time_aggregation(int64_t groupid,
+                                        uint64_t buffersize,
+                                        int64_t syncgroupid)
+
+
 cdef extern from "adios_selection.h":
     ctypedef enum ADIOS_SELECTION_TYPE:
         ADIOS_SELECTION_BOUNDINGBOX
@@ -457,15 +541,15 @@ cpdef int allocate_buffer(int when,
 
 cpdef int64_t declare_group(str name,
                             str time_index = "",
-                            int stats = 1):
+                            int stats = adios_stat_default):
     cdef int64_t id = 0
     adios_declare_group (&id,
                          s2b(name),
                          s2b(time_index),
-                         <ADIOS_FLAG> stats)
+                         <ADIOS_STATISTICS_FLAG> stats)
     return id
 
-cpdef int define_var(int64_t group_id,
+cpdef int64_t define_var(int64_t group_id,
                      str name,
                      str path,
                      int atype,
@@ -480,6 +564,101 @@ cpdef int define_var(int64_t group_id,
                             s2b(global_dimensions),
                             s2b(local_offsets))
 
+cpdef int define_schema_version (int64_t group_id, str schema_version):
+    return adios_define_schema_version (group_id, s2b(schema_version))
+
+cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):
+    return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
+
+cpdef int define_var_centering (int64_t group_id, str varname, str centering):
+    return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+
+cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):
+    return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+
+cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):
+    return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+                                         
+cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):
+    return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+                                                
+cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):
+    return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+                                         
+cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):
+    return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+                                            
+cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):
+    return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+                                          
+cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):
+    return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+                                         
+cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):
+    return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+                                                 
+cpdef int define_mesh_uniform (str dimensions,
+                                   str origin,
+                                   str spacing,
+                                   str maximum,
+                                   str nspace,
+                                   int64_t group_id,
+                                   str name
+                                  ):
+    return adios_define_mesh_uniform (s2b(dimensions),
+                                   s2b(origin),
+                                   s2b(spacing),
+                                   s2b(maximum),
+                                   s2b(nspace),
+                                   group_id,
+                                   s2b(name)
+                                  )
+    
+cpdef int define_mesh_rectilinear (str dimensions,
+                                       str coordinates,
+                                       str nspace,
+                                       int64_t group_id,
+                                       str name
+                                      ): 
+    return adios_define_mesh_rectilinear (s2b(dimensions),
+                                       s2b(coordinates),
+                                       s2b(nspace),
+                                       group_id,
+                                       s2b(name)
+                                      ) 
+    
+cpdef int define_mesh_structured (str dimensions,
+                                      str points,
+                                      str nspace,
+                                      int64_t group_id,
+                                      str name
+                                     ):
+    return adios_define_mesh_structured (s2b(dimensions),
+                                      s2b(points),
+                                      s2b(nspace),
+                                      group_id,
+                                      s2b(name)
+                                     )
+    
+cpdef int define_mesh_unstructured (str points,
+                                        str data,
+                                        str count,
+                                        str cell_type,
+                                        str npoints,
+                                        str nspace,
+                                        int64_t group_id,
+                                        str name
+                                       ):
+    return adios_define_mesh_unstructured (s2b(points),
+                                        s2b(data),
+                                        s2b(count),
+                                        s2b(cell_type),
+                                        s2b(npoints),
+                                        s2b(nspace),
+                                        group_id,
+                                        s2b(name)
+                                       )
+
 cpdef int define_attribute (int64_t group,
                             str name,
                             str path,
@@ -546,6 +725,19 @@ cpdef int select_method (int64_t group,
                                 s2b(parameters),
                                 s2b(base_path))
 
+cpdef int set_transform (int64_t var_id, str transform_type_str):
+    return adios_set_transform (var_id, s2b(transform_type_str))
+
+cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):
+    adios_set_max_buffer_size (max_buffer_size_MB)
+
+cpdef int set_time_aggregation (int64_t groupid,
+                                      uint64_t buffersize,
+                                      int64_t syncgroupid):
+    return adios_set_time_aggregation (groupid,
+                                       buffersize,
+                                       syncgroupid)
+
 
 ## ====================
 ## ADIOS Read API (V2)
@@ -843,7 +1035,7 @@ cdef class file(dict):
         self.close()
 
     def __enter__(self):
-        """ Enter for with statemetn """
+        """ Enter for with statement """
         return self
 
     def __exit__(self, exception_type, exception_value, traceback):
@@ -1729,6 +1921,8 @@ cdef class writer(object):
     cpdef dict vars
     cpdef dict attrs
 
+    cpdef uint64_t timeaggregation_buffersize
+
     property fname:
         """ The filename to write. """
         def __get__(self):
@@ -1759,10 +1953,16 @@ cdef class writer(object):
         def __get__(self):
             return self.attrs
 
+    property timeaggregation_buffersize:
+        """ Get time-aggregation buffersize. """
+        def __get__(self):
+            return self.timeaggregation_buffersize
+
     def __init__(self, str fname,
                  bint is_noxml = True,
                  str mode = "w",
                  MPI_Comm comm = MPI_COMM_WORLD):
+        self.gid = 0
         self.fname = fname
         self.method = ""
         self.method_params = ""
@@ -1771,6 +1971,7 @@ cdef class writer(object):
         self.comm = comm
         self.vars = dict()
         self.attrs = dict()
+        self.timeaggregation_buffersize = 0
 
         init_noxml(comm)
     ##def __var_factory__(self, name, value):
@@ -1779,7 +1980,7 @@ cdef class writer(object):
     ##def __attr_factory__(self, name, value):
     ##    print "attr_factory:", name, value
 
-    def declare_group(self, str gname,
+    def declare_group(self, str gname = None,
                       str method = "POSIX1",
                       str method_params = ""):
         """
@@ -1795,24 +1996,41 @@ cdef class writer(object):
         >>>  fw.declare_group('group', method='MPI_, method_params='verbose=3')
 
         """
-        self.gid = declare_group(gname, "", 1)
-        self.gname = gname
+        if gname is not None:
+            self.gname = gname
+
+        if self.gname is None:
+            self.gname = "group"
+
+        self.gid = declare_group(self.gname, "", adios_stat_default)
         self.method = method
         self.method_params = method_params
         select_method(self.gid, self.method, self.method_params, "")
+        self.set_time_aggregation()
+
+    def set_time_aggregation(self, buffer_size = None):
+        """
+        Set time-aggregation buffersize.
+        """
+        if buffer_size is not None:
+            self.timeaggregation_buffersize = buffer_size
+        if self.gid > 0:
+            set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
 
     def define_var(self, str varname,
                    ldim = tuple(),
                    gdim = tuple(),
-                   offset = tuple()):
+                   offset = tuple(),
+                   transform = None):
         """
         Define a variable associated with the file.
 
         Args:
-            varname (str): variable name.
+            varname (str): variable name
             ldim (tuple, optional): local dimension (default: tuple())
             gdim (tuple, optional): global dimension (default: tuple())
             offset (tuple, optional): offset (default: tuple())
+            transform (str): transform name
 
         Example:
 
@@ -1821,7 +2039,7 @@ cdef class writer(object):
         >>>  fw.define_var ('temperature', (2,3))
 
         """
-        self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+        self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)
 
     def define_attr(self, str attrname):
         """
@@ -1837,13 +2055,22 @@ cdef class writer(object):
                             str varname,
                             dtype):
         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+
     def __setitem__(self, name, val):
         if self.vars.has_key(name):
-            self.vars[name] = val
+            if not isinstance(val, varinfo):
+                self.vars[name].value = val
+            else:
+                self.vars[name] = val
         elif self.attrs.has_key(name):
-            self.attrs[name] = val
+            if not isinstance(val, attrinfo):
+                self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+            else:
+                self.attrs[name].value = val
         else:
-            self.vars[name] = val
+            n = np.array(val)
+            self.vars[name] = varinfo(name, n.shape)
+            self.vars[name].value = val
 
     def __getitem__(self, name):
         if self.vars.has_key(name):
@@ -1857,8 +2084,8 @@ cdef class writer(object):
         """
         Write variables and attributes to a file and close the writer.
         """
-        if self.gname is None:
-            self.declare_group("group")
+        if self.gid == 0:
+            self.declare_group()
 
         fd = open(self.gname, self.fname, self.mode)
 
@@ -1871,7 +2098,8 @@ cdef class writer(object):
                 extra_vars[key] = varinfo(key, n.shape)
                 extra_vars[key].value = val
             else:
-                if self.is_noxml: val.define(self.gid)
+                if self.is_noxml:
+                    val.define(self.gid)
 
         for key, val in extra_vars.iteritems():
             if self.is_noxml: val.define(self.gid)
@@ -1912,7 +2140,7 @@ cdef class writer(object):
                  self.mode)
 
     def __enter__(self):
-        """ Enter for with statemetn """
+        """ Enter for with statement """
         return self
 
     def __exit__(self, exception_type, exception_value, traceback):
@@ -1978,17 +2206,27 @@ cdef class varinfo(object):
     cdef public gdim
     cdef public offset
     cdef public value
+    cdef str transform
+
+    property transform:
+        """ Transform method """
+        def __get__(self):
+            return self.fname
+        def __set__(self, value):
+            self.transform = value
 
     def __init__(self, str name,
                  ldim = tuple(),
                  gdim = tuple(),
                  offset = tuple(),
-                 value = None):
+                 value = None,
+                 transform = None):
         self.name = name
         self.ldim = ldim
         self.gdim = gdim
         self.offset = offset
         self.value = value
+        self.transform = transform
 
     def define(self, int64_t gid):
         if self.value is None:
@@ -2012,11 +2250,15 @@ cdef class varinfo(object):
 
         atype = np2adiostype(val_.dtype)
         ## No space allowed
-        define_var(gid, self.name, "", atype,
+        cdef int64_t varid = 0;
+        varid = define_var(gid, self.name, "", atype,
                    str(ldim_).replace(' ', '').strip('(,)'),
                    str(gdim_).replace(' ', '').strip('(,)'),
                    str(offset_).replace(' ', '').strip('(,)'))
 
+        if (self.transform is not None):
+            set_transform(varid, self.transform)
+
     def bytes(self):
         val_ = self.value
         if not isinstance(self.value, (np.ndarray)):
@@ -2032,8 +2274,8 @@ cdef class varinfo(object):
         write(fd, self.name, val_)
 
     def __repr__(self):
-        return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
-                (self.name, self.ldim, self.gdim, self.offset, self.value)
+        return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+                (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
 
 ## Aliases
 File = file
diff --git a/wrappers/numpy/adios_mpi.cpp b/wrappers/numpy/adios_mpi.cpp
index e03d7b6..ca2bd99 100644
--- a/wrappers/numpy/adios_mpi.cpp
+++ b/wrappers/numpy/adios_mpi.cpp
@@ -817,7 +817,7 @@ struct __pyx_opt_args_9adios_mpi_3var_read_points;
 struct __pyx_opt_args_9adios_mpi_3var_read_writeblock;
 struct __pyx_opt_args_9adios_mpi_3var_read;
 
-/* "adios_mpi.pyx":380
+/* "adios_mpi.pyx":464
  * cdef MPI.Comm read_init_comm
  * 
  * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -829,7 +829,7 @@ struct __pyx_opt_args_9adios_mpi_init {
   struct PyMPICommObject *comm;
 };
 
-/* "adios_mpi.pyx":385
+/* "adios_mpi.pyx":469
  *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -841,7 +841,7 @@ struct __pyx_opt_args_9adios_mpi_open {
   struct PyMPICommObject *comm;
 };
 
-/* "adios_mpi.pyx":400
+/* "adios_mpi.pyx":484
  *     return total_size
  * 
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
@@ -853,7 +853,7 @@ struct __pyx_opt_args_9adios_mpi_write {
   PyObject *dtype;
 };
 
-/* "adios_mpi.pyx":440
+/* "adios_mpi.pyx":524
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -865,7 +865,7 @@ struct __pyx_opt_args_9adios_mpi_finalize {
   int mype;
 };
 
-/* "adios_mpi.pyx":447
+/* "adios_mpi.pyx":531
  * ## ====================
  * 
  * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -877,12 +877,12 @@ struct __pyx_opt_args_9adios_mpi_init_noxml {
   struct PyMPICommObject *comm;
 };
 
-/* "adios_mpi.pyx":457
+/* "adios_mpi.pyx":541
  *                                  buffer_size)
  * 
  * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  */
 struct __pyx_opt_args_9adios_mpi_declare_group {
   int __pyx_n;
@@ -890,10 +890,10 @@ struct __pyx_opt_args_9adios_mpi_declare_group {
   int stats;
 };
 
-/* "adios_mpi.pyx":467
+/* "adios_mpi.pyx":551
  *     return id
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ * cpdef int64_t define_var(int64_t group_id,             # <<<<<<<<<<<<<<
  *                      str name,
  *                      str path,
  */
@@ -904,7 +904,7 @@ struct __pyx_opt_args_9adios_mpi_define_var {
   PyObject *local_offsets;
 };
 
-/* "adios_mpi.pyx":539
+/* "adios_mpi.pyx":718
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
@@ -917,7 +917,7 @@ struct __pyx_opt_args_9adios_mpi_select_method {
   PyObject *base_path;
 };
 
-/* "adios_mpi.pyx":553
+/* "adios_mpi.pyx":745
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -929,7 +929,7 @@ struct __pyx_opt_args_9adios_mpi_adios2npdtype {
   int strlen;
 };
 
-/* "adios_mpi.pyx":682
+/* "adios_mpi.pyx":874
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
@@ -943,7 +943,7 @@ struct __pyx_opt_args_9adios_mpi_read_init {
   PyObject *parameters;
 };
 
-/* "adios_mpi.pyx":692
+/* "adios_mpi.pyx":884
  * 
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
@@ -955,7 +955,7 @@ struct __pyx_opt_args_9adios_mpi_read_finalize {
   PyObject *method_name;
 };
 
-/* "adios_mpi.pyx":869
+/* "adios_mpi.pyx":1061
  *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
@@ -968,7 +968,7 @@ struct __pyx_opt_args_9adios_mpi_4file_advance {
   float timeout_sec;
 };
 
-/* "adios_mpi.pyx":1167
+/* "adios_mpi.pyx":1359
  *         self.nsteps = self.vp.nsteps
  * 
  *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -982,7 +982,7 @@ struct __pyx_opt_args_9adios_mpi_3var_read_points {
   PyObject *nsteps;
 };
 
-/* "adios_mpi.pyx":1223
+/* "adios_mpi.pyx":1415
  *         return var
  * 
  *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -995,7 +995,7 @@ struct __pyx_opt_args_9adios_mpi_3var_read_writeblock {
   PyObject *nsteps;
 };
 
-/* "adios_mpi.pyx":1264
+/* "adios_mpi.pyx":1456
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -1307,7 +1307,7 @@ typedef struct PyMPIFileObject PyMPIFileObject;
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) PyMPIFile_Type;
 
-/* "adios_mpi.pyx":697
+/* "adios_mpi.pyx":889
  * 
  * ## dict for handling '/' prefix
  * cdef class softdict(dict):             # <<<<<<<<<<<<<<
@@ -1319,7 +1319,7 @@ struct __pyx_obj_9adios_mpi_softdict {
 };
 
 
-/* "adios_mpi.pyx":721
+/* "adios_mpi.pyx":913
  * 
  * ## Python class for ADIOS_FILE structure
  * cdef class file(dict):             # <<<<<<<<<<<<<<
@@ -1346,7 +1346,7 @@ struct __pyx_obj_9adios_mpi_file {
 };
 
 
-/* "adios_mpi.pyx":993
+/* "adios_mpi.pyx":1185
  *         return list(s-set(['']))
  * 
  * cdef class blockinfo(object):             # <<<<<<<<<<<<<<
@@ -1362,7 +1362,7 @@ struct __pyx_obj_9adios_mpi_blockinfo {
 };
 
 
-/* "adios_mpi.pyx":1028
+/* "adios_mpi.pyx":1220
  *                 self.count)
  * 
  * cdef class var(dict):             # <<<<<<<<<<<<<<
@@ -1385,7 +1385,7 @@ struct __pyx_obj_9adios_mpi_var {
 };
 
 
-/* "adios_mpi.pyx":1493
+/* "adios_mpi.pyx":1685
  *         return self.attrs.keys()
  * 
  * cdef class attr(object):             # <<<<<<<<<<<<<<
@@ -1401,7 +1401,7 @@ struct __pyx_obj_9adios_mpi_attr {
 };
 
 
-/* "adios_mpi.pyx":1579
+/* "adios_mpi.pyx":1771
  *                (self.name, self.dtype, self.value)
  * 
  * cdef class group(dict):             # <<<<<<<<<<<<<<
@@ -1417,7 +1417,7 @@ struct __pyx_obj_9adios_mpi_group {
 };
 
 
-/* "adios_mpi.pyx":1691
+/* "adios_mpi.pyx":1883
  * 
  * ## Helper dict
  * cdef class smartdict(dict):             # <<<<<<<<<<<<<<
@@ -1430,7 +1430,7 @@ struct __pyx_obj_9adios_mpi_smartdict {
 };
 
 
-/* "adios_mpi.pyx":1703
+/* "adios_mpi.pyx":1895
  *             self.factory(key, value)
  * 
  * cdef class writer(object):             # <<<<<<<<<<<<<<
@@ -1449,10 +1449,11 @@ struct __pyx_obj_9adios_mpi_writer {
   struct PyMPICommObject *comm;
   PyObject *vars;
   PyObject *attrs;
+  uint64_t timeaggregation_buffersize;
 };
 
 
-/* "adios_mpi.pyx":1921
+/* "adios_mpi.pyx":2149
  *         self.close()
  * 
  * cdef class attrinfo(object):             # <<<<<<<<<<<<<<
@@ -1468,7 +1469,7 @@ struct __pyx_obj_9adios_mpi_attrinfo {
 };
 
 
-/* "adios_mpi.pyx":1974
+/* "adios_mpi.pyx":2202
  *                  self.dtype)
  * 
  * cdef class varinfo(object):             # <<<<<<<<<<<<<<
@@ -1482,11 +1483,12 @@ struct __pyx_obj_9adios_mpi_varinfo {
   PyObject *gdim;
   PyObject *offset;
   PyObject *value;
+  PyObject *transform;
 };
 
 
 
-/* "adios_mpi.pyx":721
+/* "adios_mpi.pyx":913
  * 
  * ## Python class for ADIOS_FILE structure
  * cdef class file(dict):             # <<<<<<<<<<<<<<
@@ -1503,7 +1505,7 @@ struct __pyx_vtabstruct_9adios_mpi_file {
 static struct __pyx_vtabstruct_9adios_mpi_file *__pyx_vtabptr_9adios_mpi_file;
 
 
-/* "adios_mpi.pyx":1028
+/* "adios_mpi.pyx":1220
  *                 self.count)
  * 
  * cdef class var(dict):             # <<<<<<<<<<<<<<
@@ -1910,6 +1912,24 @@ static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
     #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
 #endif
 
+/* PyObjectSetAttrStr.proto */
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
+    PyTypeObject* tp = Py_TYPE(obj);
+    if (likely(tp->tp_setattro))
+        return tp->tp_setattro(obj, attr_name, value);
+#if PY_MAJOR_VERSION < 3
+    if (likely(tp->tp_setattr))
+        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
+#endif
+    return PyObject_SetAttr(obj, attr_name, value);
+}
+#else
+#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
+#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
+#endif
+
 /* PyObjectCallMethod0.proto */
 static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
 
@@ -1929,24 +1949,6 @@ static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict,
 static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                               PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
 
-/* PyObjectSetAttrStr.proto */
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
-static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
-    PyTypeObject* tp = Py_TYPE(obj);
-    if (likely(tp->tp_setattro))
-        return tp->tp_setattro(obj, attr_name, value);
-#if PY_MAJOR_VERSION < 3
-    if (likely(tp->tp_setattr))
-        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
-#endif
-    return PyObject_SetAttr(obj, attr_name, value);
-}
-#else
-#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
-#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
-#endif
-
 /* py_dict_values.proto */
 static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
 
@@ -2266,10 +2268,28 @@ static int __pyx_f_9adios_mpi_finalize(int __pyx_skip_dispatch, struct __pyx_opt
 static int __pyx_f_9adios_mpi_init_noxml(int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_init_noxml *__pyx_optional_args); /*proto*/
 static int __pyx_f_9adios_mpi_allocate_buffer(int, uint64_t, int __pyx_skip_dispatch); /*proto*/
 static int64_t __pyx_f_9adios_mpi_declare_group(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_declare_group *__pyx_optional_args); /*proto*/
-static int __pyx_f_9adios_mpi_define_var(int64_t, PyObject *, PyObject *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_define_var *__pyx_optional_args); /*proto*/
+static int64_t __pyx_f_9adios_mpi_define_var(int64_t, PyObject *, PyObject *, int, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_define_var *__pyx_optional_args); /*proto*/
+static int __pyx_f_9adios_mpi_define_schema_version(int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_mesh(int64_t, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_centering(int64_t, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_timesteps(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_timescale(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_timeseriesformat(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_hyperslab(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timevarying(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timesteps(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timescale(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timeseriesformat(PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_uniform(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_rectilinear(PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_structured(PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_unstructured(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_9adios_mpi_define_attribute(int64_t, PyObject *, PyObject *, int, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t, PyObject *, PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
 static int __pyx_f_9adios_mpi_select_method(int64_t, PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_select_method *__pyx_optional_args); /*proto*/
+static int __pyx_f_9adios_mpi_set_transform(int64_t, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static void __pyx_f_9adios_mpi_set_max_buffer_size(int64_t, int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_9adios_mpi_set_time_aggregation(int64_t, uint64_t, int64_t, int __pyx_skip_dispatch); /*proto*/
 static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_adios2npdtype *__pyx_optional_args); /*proto*/
 static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *); /*proto*/
 static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *); /*proto*/
@@ -2343,6 +2363,7 @@ static const char __pyx_k_byte[] = "byte";
 static const char __pyx_k_char[] = "char";
 static const char __pyx_k_comm[] = "comm";
 static const char __pyx_k_copy[] = "copy";
+static const char __pyx_k_data[] = "data";
 static const char __pyx_k_dims[] = "dims";
 static const char __pyx_k_fd_p[] = "fd_p";
 static const char __pyx_k_file[] = "file";
@@ -2419,8 +2440,10 @@ static const char __pyx_k_module[] = "__module__";
 static const char __pyx_k_morder[] = "morder";
 static const char __pyx_k_mshape[] = "mshape";
 static const char __pyx_k_nattrs[] = "nattrs";
+static const char __pyx_k_nspace[] = "nspace";
 static const char __pyx_k_nsteps[] = "nsteps";
 static const char __pyx_k_offset[] = "offset";
+static const char __pyx_k_origin[] = "origin";
 static const char __pyx_k_points[] = "points";
 static const char __pyx_k_rstrip[] = "rstrip";
 static const char __pyx_k_scalar[] = "scalar";
@@ -2431,6 +2454,7 @@ static const char __pyx_k_uint16[] = "uint16";
 static const char __pyx_k_uint32[] = "uint32";
 static const char __pyx_k_uint64[] = "uint64";
 static const char __pyx_k_values[] = "values";
+static const char __pyx_k_var_id[] = "var_id";
 static const char __pyx_k_xrange[] = "xrange";
 static const char __pyx_k_CURRENT[] = "CURRENT";
 static const char __pyx_k_Reading[] = "Reading ... ";
@@ -2444,13 +2468,17 @@ static const char __pyx_k_float16[] = "float16";
 static const char __pyx_k_float32[] = "float32";
 static const char __pyx_k_float64[] = "float64";
 static const char __pyx_k_getitem[] = "__getitem__";
+static const char __pyx_k_groupid[] = "groupid";
 static const char __pyx_k_integer[] = "integer";
 static const char __pyx_k_is_open[] = "is_open";
+static const char __pyx_k_maximum[] = "maximum";
+static const char __pyx_k_npoints[] = "npoints";
 static const char __pyx_k_prepare[] = "__prepare__";
 static const char __pyx_k_readvar[] = "_readvar";
 static const char __pyx_k_replace[] = "replace";
 static const char __pyx_k_reshape[] = "reshape";
 static const char __pyx_k_setitem[] = "__setitem__";
+static const char __pyx_k_spacing[] = "spacing";
 static const char __pyx_k_unknown[] = "unknown";
 static const char __pyx_k_varname[] = "varname";
 static const char __pyx_k_version[] = "version";
@@ -2467,6 +2495,7 @@ static const char __pyx_k_group_id[] = "group_id";
 static const char __pyx_k_is_noxml[] = "is_noxml";
 static const char __pyx_k_itemsize[] = "itemsize";
 static const char __pyx_k_iterkeys[] = "iterkeys";
+static const char __pyx_k_meshname[] = "meshname";
 static const char __pyx_k_qualname[] = "__qualname__";
 static const char __pyx_k_readattr[] = "_readattr";
 static const char __pyx_k_string_2[] = "string_";
@@ -2476,11 +2505,14 @@ static const char __pyx_k_COMM_SELF[] = "COMM_SELF";
 static const char __pyx_k_TypeError[] = "TypeError";
 static const char __pyx_k_adios_mpi[] = "adios_mpi";
 static const char __pyx_k_base_path[] = "base_path";
+static const char __pyx_k_cell_type[] = "cell_type";
+static const char __pyx_k_centering[] = "centering";
 static const char __pyx_k_complex64[] = "complex64";
 static const char __pyx_k_complex_2[] = "complex";
 static const char __pyx_k_data_size[] = "data_size";
 static const char __pyx_k_enumerate[] = "enumerate";
 static const char __pyx_k_file_size[] = "file_size";
+static const char __pyx_k_hyperslab[] = "hyperslab";
 static const char __pyx_k_is_static[] = "is_static";
 static const char __pyx_k_is_stream[] = "is_stream";
 static const char __pyx_k_iteritems[] = "iteritems";
@@ -2489,11 +2521,15 @@ static const char __pyx_k_lock_mode[] = "lock_mode";
 static const char __pyx_k_metaclass[] = "__metaclass__";
 static const char __pyx_k_printself[] = "printself";
 static const char __pyx_k_readvar_2[] = "readvar";
+static const char __pyx_k_timescale[] = "timescale";
+static const char __pyx_k_timesteps[] = "timesteps";
 static const char __pyx_k_traceback[] = "traceback";
+static const char __pyx_k_transform[] = "transform";
 static const char __pyx_k_COMM_WORLD[] = "COMM_WORLD";
 static const char __pyx_k_DATASPACES[] = "DATASPACES";
 static const char __pyx_k_IndexError[] = "IndexError";
 static const char __pyx_k_ValueError[] = "ValueError";
+static const char __pyx_k_buffersize[] = "buffersize";
 static const char __pyx_k_complex128[] = "complex128";
 static const char __pyx_k_contiguous[] = "contiguous";
 static const char __pyx_k_dimensions[] = "dimensions";
@@ -2508,14 +2544,18 @@ static const char __pyx_k_selections[] = "selections";
 static const char __pyx_k_startswith[] = "startswith";
 static const char __pyx_k_time_index[] = "time_index";
 static const char __pyx_k_time_steps[] = "time_steps";
+static const char __pyx_k_timeseries[] = "timeseries";
 static const char __pyx_k_READ_METHOD[] = "READ_METHOD";
 static const char __pyx_k_buffer_size[] = "buffer_size";
 static const char __pyx_k_concatenate[] = "concatenate";
+static const char __pyx_k_coordinates[] = "coordinates";
 static const char __pyx_k_long_double[] = "long_double";
 static const char __pyx_k_method_name[] = "method_name";
 static const char __pyx_k_read_points[] = "read_points";
 static const char __pyx_k_step_scalar[] = "step_scalar";
+static const char __pyx_k_syncgroupid[] = "syncgroupid";
 static const char __pyx_k_timeout_sec[] = "timeout_sec";
+static const char __pyx_k_timevarying[] = "timevarying";
 static const char __pyx_k_BP_AGGREGATE[] = "BP_AGGREGATE";
 static const char __pyx_k_RuntimeError[] = "RuntimeError";
 static const char __pyx_k_current_step[] = "current_step";
@@ -2534,6 +2574,7 @@ static const char __pyx_k_unsigned_long[] = "unsigned_long";
 static const char __pyx_k_FancySelection[] = "FancySelection";
 static const char __pyx_k_double_complex[] = "double_complex";
 static const char __pyx_k_exception_type[] = "exception_type";
+static const char __pyx_k_schema_version[] = "schema_version";
 static const char __pyx_k_unsigned_short[] = "unsigned_short";
 static const char __pyx_k_Not_a_valid_var[] = "Not a valid var";
 static const char __pyx_k_Not_an_open_var[] = "Not an open var";
@@ -2545,24 +2586,26 @@ static const char __pyx_k_Not_an_open_file[] = "Not an open file";
 static const char __pyx_k_unsigned_integer[] = "unsigned_integer";
 static const char __pyx_k_BUFFER_ALLOC_WHEN[] = "BUFFER_ALLOC_WHEN";
 static const char __pyx_k_global_dimensions[] = "global_dimensions";
-static const char __pyx_k_var_read_line_1264[] = "var.read (line 1264)";
+static const char __pyx_k_transform_type_str[] = "transform_type_str";
+static const char __pyx_k_var_read_line_1456[] = "var.read (line 1456)";
 static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
 static const char __pyx_k_Not_implemented_yet[] = "Not implemented yet";
 static const char __pyx_k_Not_an_open_variable[] = "Not an open variable";
+static const char __pyx_k_set_time_aggregation[] = "set_time_aggregation";
 static const char __pyx_k_Use_default_BP_method[] = ". Use default BP method";
 static const char __pyx_k_AdiosGroup_vars_r_attrs_r[] = "AdiosGroup (vars=%r, attrs=%r)";
 static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
-static const char __pyx_k_writer_define_var_line_1803[] = "writer.define_var (line 1803)";
+static const char __pyx_k_writer_define_var_line_2019[] = "writer.define_var (line 2019)";
 static const char __pyx_k_Rank_is_out_of_range_nblock_r[] = "Rank is out of range (nblock=%r)";
 static const char __pyx_k_WARN_Invalid_read_method_name[] = "[WARN] Invalid read method name:";
 static const char __pyx_k_Data_type_is_not_supported_yet[] = "Data type is not supported yet";
 static const char __pyx_k_Define_a_group_associated_with[] = "\n        Define a group associated with the file.\n\n        Args:\n            gname (str): group name.\n            method (str, optional): Adios write method (default: 'POSIX1')\n            method_params (str, optional): parameters for the write method (default: '')\n\n        Example:\n\n        >>>  fw.declare_group('group', method='MPI', method_params='verbose=3')\n\n        ";
 static const char __pyx_k_Perform_read_Read_data_from_an[] = " Perform read.\n\n        Read data from an ADIOS BP file. Subset reading is\n        supported. Without any options, this will read out a whole\n        data.\n\n        Args:\n            offset (tuple of int, optional): offset (default: ())\n            count (tuple of int, optional): count (default: ())\n            scalar (tuple of bool, optional): scalar (default: ())\n            from_steps (int, optional): starting ste [...]
-static const char __pyx_k_writer_declare_group_line_1781[] = "writer.declare_group (line 1781)";
+static const char __pyx_k_writer_declare_group_line_1982[] = "writer.declare_group (line 1982)";
 static const char __pyx_k_AdiosFile_path_r_nvars_r_vars_r[] = "AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, current_step=%r, last_step=%r, file_size=%r)";
 static const char __pyx_k_AdiosVar_varid_r_name_r_dtype_r[] = "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)";
-static const char __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim[] = "AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)";
-static const char __pyx_k_Define_a_variable_associated_wi[] = "\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name.\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n\n        Example:\n\n        Write 'temperature' variable of size of 2x3 array.\n\n        >>>  fw.defi [...]
+static const char __pyx_k_AdiosVarinfo_name_r_ldim_r_gdim[] = "AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)";
+static const char __pyx_k_Define_a_variable_associated_wi[] = "\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n            transform (str): transform name\n\n        Example:\n\n        Write 'temperature' variable o [...]
 static const char __pyx_k_Step_index_is_out_of_range_from[] = "Step index is out of range: from_steps=%r, nsteps=%r";
 static const char __pyx_k_Users_jyc_project_adios_devel_w[] = "/Users/jyc/project/adios-devel/wrappers/numpy/adios_mpi.pyx";
 static const char __pyx_k_Warning_No_support_yet_s_type_d[] = "Warning: No support yet: %s (type=%d, bytes=%d)";
@@ -2684,8 +2727,11 @@ static PyObject *__pyx_n_s_base_path;
 static PyObject *__pyx_n_s_bool;
 static PyObject *__pyx_n_s_bpls;
 static PyObject *__pyx_n_s_buffer_size;
+static PyObject *__pyx_n_s_buffersize;
 static PyObject *__pyx_n_s_byte;
 static PyObject *__pyx_kp_s_bytes;
+static PyObject *__pyx_n_s_cell_type;
+static PyObject *__pyx_n_s_centering;
 static PyObject *__pyx_n_s_char;
 static PyObject *__pyx_n_s_close;
 static PyObject *__pyx_n_s_comm;
@@ -2696,9 +2742,11 @@ static PyObject *__pyx_n_s_complex_2;
 static PyObject *__pyx_n_s_concatenate;
 static PyObject *__pyx_n_s_config;
 static PyObject *__pyx_n_s_contiguous;
+static PyObject *__pyx_n_s_coordinates;
 static PyObject *__pyx_n_s_copy;
 static PyObject *__pyx_n_s_count;
 static PyObject *__pyx_n_s_current_step;
+static PyObject *__pyx_n_s_data;
 static PyObject *__pyx_n_s_data_size;
 static PyObject *__pyx_n_s_declare_group;
 static PyObject *__pyx_n_s_define;
@@ -2738,7 +2786,9 @@ static PyObject *__pyx_n_s_gname;
 static PyObject *__pyx_n_s_group;
 static PyObject *__pyx_n_s_group_id;
 static PyObject *__pyx_n_s_group_name;
+static PyObject *__pyx_n_s_groupid;
 static PyObject *__pyx_n_s_hl;
+static PyObject *__pyx_n_s_hyperslab;
 static PyObject *__pyx_n_s_import;
 static PyObject *__pyx_n_s_index;
 static PyObject *__pyx_n_s_init;
@@ -2766,6 +2816,8 @@ static PyObject *__pyx_n_s_lock_mode;
 static PyObject *__pyx_n_s_long;
 static PyObject *__pyx_n_s_long_double;
 static PyObject *__pyx_n_s_main;
+static PyObject *__pyx_n_s_maximum;
+static PyObject *__pyx_n_s_meshname;
 static PyObject *__pyx_n_s_metaclass;
 static PyObject *__pyx_n_s_method;
 static PyObject *__pyx_n_s_method_name;
@@ -2783,11 +2835,14 @@ static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou;
 static PyObject *__pyx_n_s_ndim;
 static PyObject *__pyx_n_s_normalize_key;
 static PyObject *__pyx_n_s_np;
+static PyObject *__pyx_n_s_npoints;
+static PyObject *__pyx_n_s_nspace;
 static PyObject *__pyx_n_s_nsteps;
 static PyObject *__pyx_n_s_numpy;
 static PyObject *__pyx_n_s_nvars;
 static PyObject *__pyx_n_s_offset;
 static PyObject *__pyx_n_s_order;
+static PyObject *__pyx_n_s_origin;
 static PyObject *__pyx_n_s_os;
 static PyObject *__pyx_n_s_parameters;
 static PyObject *__pyx_n_s_path;
@@ -2813,13 +2868,16 @@ static PyObject *__pyx_n_s_replace;
 static PyObject *__pyx_n_s_reshape;
 static PyObject *__pyx_n_s_rstrip;
 static PyObject *__pyx_n_s_scalar;
+static PyObject *__pyx_n_s_schema_version;
 static PyObject *__pyx_n_s_sel;
 static PyObject *__pyx_n_s_select;
 static PyObject *__pyx_n_s_selections;
+static PyObject *__pyx_n_s_set_time_aggregation;
 static PyObject *__pyx_n_s_setitem;
 static PyObject *__pyx_n_s_shape;
 static PyObject *__pyx_n_s_short;
 static PyObject *__pyx_n_s_size;
+static PyObject *__pyx_n_s_spacing;
 static PyObject *__pyx_n_s_split;
 static PyObject *__pyx_n_s_start;
 static PyObject *__pyx_n_s_startswith;
@@ -2830,13 +2888,20 @@ static PyObject *__pyx_n_s_string_2;
 static PyObject *__pyx_n_s_string_array;
 static PyObject *__pyx_n_s_strip;
 static PyObject *__pyx_n_s_strlen;
+static PyObject *__pyx_n_s_syncgroupid;
 static PyObject *__pyx_n_s_t;
 static PyObject *__pyx_n_s_test;
 static PyObject *__pyx_n_s_time_index;
 static PyObject *__pyx_n_s_time_steps;
 static PyObject *__pyx_n_s_timeout_sec;
+static PyObject *__pyx_n_s_timescale;
+static PyObject *__pyx_n_s_timeseries;
+static PyObject *__pyx_n_s_timesteps;
+static PyObject *__pyx_n_s_timevarying;
 static PyObject *__pyx_n_s_tostring;
 static PyObject *__pyx_n_s_traceback;
+static PyObject *__pyx_n_s_transform;
+static PyObject *__pyx_n_s_transform_type_str;
 static PyObject *__pyx_n_s_type;
 static PyObject *__pyx_n_s_uint16;
 static PyObject *__pyx_n_s_uint32;
@@ -2853,8 +2918,9 @@ static PyObject *__pyx_n_s_val;
 static PyObject *__pyx_n_s_value;
 static PyObject *__pyx_n_s_values;
 static PyObject *__pyx_n_s_var;
+static PyObject *__pyx_n_s_var_id;
 static PyObject *__pyx_n_s_var_namelist;
-static PyObject *__pyx_kp_u_var_read_line_1264;
+static PyObject *__pyx_kp_u_var_read_line_1456;
 static PyObject *__pyx_n_s_varid;
 static PyObject *__pyx_n_s_varname;
 static PyObject *__pyx_n_s_vars;
@@ -2863,8 +2929,8 @@ static PyObject *__pyx_n_s_vp;
 static PyObject *__pyx_n_s_w;
 static PyObject *__pyx_n_s_when;
 static PyObject *__pyx_n_s_write;
-static PyObject *__pyx_kp_u_writer_declare_group_line_1781;
-static PyObject *__pyx_kp_u_writer_define_var_line_1803;
+static PyObject *__pyx_kp_u_writer_declare_group_line_1982;
+static PyObject *__pyx_kp_u_writer_define_var_line_2019;
 static PyObject *__pyx_n_s_xrange;
 static PyObject *__pyx_n_s_zeros;
 static PyObject *__pyx_n_s_zip;
@@ -2888,14 +2954,32 @@ static PyObject *__pyx_pf_9adios_mpi_32init_noxml(CYTHON_UNUSED PyObject *__pyx_
 static PyObject *__pyx_pf_9adios_mpi_34allocate_buffer(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_when, uint64_t __pyx_v_buffer_size); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_36declare_group(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_time_index, int __pyx_v_stats); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_38define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_global_dimensions, PyObject *__pyx_v_local_offsets); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_40define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_42define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_44select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_50adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_52read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_parameters); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_54read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_40define_schema_version(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_schema_version); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_42define_var_mesh(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_meshname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_44define_var_centering(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_centering); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_46define_var_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_48define_var_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_50define_var_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_52define_var_hyperslab(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hyperslab, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_54define_mesh_timevarying(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timevarying, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_56define_mesh_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_58define_mesh_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_60define_mesh_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_62define_mesh_uniform(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_origin, PyObject *__pyx_v_spacing, PyObject *__pyx_v_maximum, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_64define_mesh_rectilinear(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_coordinates, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_66define_mesh_structured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_points, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_68define_mesh_unstructured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_points, PyObject *__pyx_v_data, PyObject *__pyx_v_count, PyObject *__pyx_v_cell_type, PyObject *__pyx_v_npoints, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_70define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_72define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_74select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_76set_transform(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_var_id, PyObject *__pyx_v_transform_type_str); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_78set_max_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_max_buffer_size_MB); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_80set_time_aggregation(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_groupid, uint64_t __pyx_v_buffersize, int64_t __pyx_v_syncgroupid); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_82adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_84np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_86adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_88read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_parameters); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_90read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adios_mpi_softdict *__pyx_v_self, PyObject *__pyx_v_varname); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_4file_4name___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adios_mpi_file *__pyx_v_self); /* proto */
@@ -2993,17 +3077,19 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_
 static PyObject *__pyx_pf_9adios_mpi_6writer_4mode___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_6writer_4vars___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_6writer_5attrs___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_26timeaggregation_buffersize___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
 static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_fname, int __pyx_v_is_noxml, PyObject *__pyx_v_mode, struct PyMPICommObject *__pyx_v_comm); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_gname, PyObject *__pyx_v_method, PyObject *__pyx_v_method_params); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_6define_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype); /* proto */
-static int __pyx_pf_9adios_mpi_6writer_10__setitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_18__enter__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_6writer_20__exit__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_4set_time_aggregation(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_buffer_size); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_6define_var(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_transform); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_8define_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_10define_dynamic_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype); /* proto */
+static int __pyx_pf_9adios_mpi_6writer_12__setitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_14__getitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_16close(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_18__repr__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_20__enter__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_6writer_22__exit__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4name___get__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_8attrinfo_9is_static___get__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5dtype___get__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self); /* proto */
@@ -3012,7 +3098,9 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
 static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_dtype, int __pyx_v_is_static); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self, int64_t __pyx_v_gid); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios_mpi_attrinfo *__pyx_v_self); /* proto */
-static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_7varinfo_9transform___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo_9transform_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value, PyObject *__pyx_v_transform); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, int64_t __pyx_v_gid); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, int64_t __pyx_v_fd); /* proto */
@@ -3029,8 +3117,8 @@ static int __pyx_pf_9adios_mpi_7varinfo_6offset_4__del__(struct __pyx_obj_9adios
 static PyObject *__pyx_pf_9adios_mpi_7varinfo_5value___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
 static int __pyx_pf_9adios_mpi_7varinfo_5value_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
 static int __pyx_pf_9adios_mpi_7varinfo_5value_4__del__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname); /* proto */
-static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_92readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname); /* proto */
+static PyObject *__pyx_pf_9adios_mpi_94bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname); /* proto */
 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
 static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
 static PyObject *__pyx_tp_new_9adios_mpi_softdict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
@@ -3065,13 +3153,14 @@ static PyObject *__pyx_int_neg_1;
 static struct PyMPICommObject *__pyx_k__7;
 static struct PyMPICommObject *__pyx_k__8;
 static struct PyMPICommObject *__pyx_k__9;
-static struct PyMPICommObject *__pyx_k__11;
-static struct PyMPICommObject *__pyx_k__15;
-static ADIOS_LOCKMODE __pyx_k__16;
-static struct PyMPICommObject *__pyx_k__53;
-static PyObject *__pyx_k__54;
+static int __pyx_k__11;
+static struct PyMPICommObject *__pyx_k__12;
+static struct PyMPICommObject *__pyx_k__16;
+static ADIOS_LOCKMODE __pyx_k__17;
+static struct PyMPICommObject *__pyx_k__54;
 static PyObject *__pyx_k__55;
 static PyObject *__pyx_k__56;
+static PyObject *__pyx_k__57;
 static PyObject *__pyx_k__59;
 static PyObject *__pyx_k__60;
 static PyObject *__pyx_k__61;
@@ -3080,46 +3169,45 @@ static PyObject *__pyx_slice__4;
 static PyObject *__pyx_slice__5;
 static PyObject *__pyx_tuple__2;
 static PyObject *__pyx_tuple__6;
-static PyObject *__pyx_slice__14;
-static PyObject *__pyx_slice__21;
-static PyObject *__pyx_slice__23;
-static PyObject *__pyx_slice__26;
-static PyObject *__pyx_slice__31;
-static PyObject *__pyx_slice__35;
+static PyObject *__pyx_slice__15;
+static PyObject *__pyx_slice__22;
+static PyObject *__pyx_slice__24;
+static PyObject *__pyx_slice__27;
+static PyObject *__pyx_slice__32;
 static PyObject *__pyx_slice__36;
 static PyObject *__pyx_slice__37;
 static PyObject *__pyx_slice__38;
 static PyObject *__pyx_slice__39;
 static PyObject *__pyx_slice__40;
 static PyObject *__pyx_slice__41;
-static PyObject *__pyx_slice__46;
-static PyObject *__pyx_slice__48;
-static PyObject *__pyx_slice__51;
-static PyObject *__pyx_tuple__12;
+static PyObject *__pyx_slice__42;
+static PyObject *__pyx_slice__47;
+static PyObject *__pyx_slice__49;
+static PyObject *__pyx_slice__52;
 static PyObject *__pyx_tuple__13;
-static PyObject *__pyx_tuple__17;
+static PyObject *__pyx_tuple__14;
 static PyObject *__pyx_tuple__18;
 static PyObject *__pyx_tuple__19;
 static PyObject *__pyx_tuple__20;
-static PyObject *__pyx_tuple__22;
-static PyObject *__pyx_tuple__24;
+static PyObject *__pyx_tuple__21;
+static PyObject *__pyx_tuple__23;
 static PyObject *__pyx_tuple__25;
-static PyObject *__pyx_tuple__27;
+static PyObject *__pyx_tuple__26;
 static PyObject *__pyx_tuple__28;
 static PyObject *__pyx_tuple__29;
 static PyObject *__pyx_tuple__30;
-static PyObject *__pyx_tuple__32;
+static PyObject *__pyx_tuple__31;
 static PyObject *__pyx_tuple__33;
 static PyObject *__pyx_tuple__34;
-static PyObject *__pyx_tuple__42;
+static PyObject *__pyx_tuple__35;
 static PyObject *__pyx_tuple__43;
 static PyObject *__pyx_tuple__44;
 static PyObject *__pyx_tuple__45;
-static PyObject *__pyx_tuple__47;
-static PyObject *__pyx_tuple__49;
+static PyObject *__pyx_tuple__46;
+static PyObject *__pyx_tuple__48;
 static PyObject *__pyx_tuple__50;
-static PyObject *__pyx_tuple__52;
-static PyObject *__pyx_tuple__57;
+static PyObject *__pyx_tuple__51;
+static PyObject *__pyx_tuple__53;
 static PyObject *__pyx_tuple__58;
 static PyObject *__pyx_tuple__62;
 static PyObject *__pyx_tuple__64;
@@ -3914,7 +4002,7 @@ static char **__pyx_f_9adios_mpi_to_cstring_array(PyObject *__pyx_v_list_str) {
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":348
+/* "adios_mpi.pyx":432
  *     ALL =2
  * 
  * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
@@ -3943,7 +4031,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
   __Pyx_RefNannySetupContext("__parse_index", 0);
   __Pyx_INCREF(__pyx_v_index);
 
-  /* "adios_mpi.pyx":350
+  /* "adios_mpi.pyx":434
  * cpdef __parse_index(index, ndim):
  *     # Fix index, handling ellipsis and incomplete slices.
  *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
@@ -3954,14 +4042,14 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":351
+    /* "adios_mpi.pyx":435
  *     # Fix index, handling ellipsis and incomplete slices.
  *     if not isinstance(index, tuple):
  *         index = (index,)             # <<<<<<<<<<<<<<
  * 
  *     fixed = []
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 435, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_index);
     __Pyx_GIVEREF(__pyx_v_index);
@@ -3969,7 +4057,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
     __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":350
+    /* "adios_mpi.pyx":434
  * cpdef __parse_index(index, ndim):
  *     # Fix index, handling ellipsis and incomplete slices.
  *     if not isinstance(index, tuple):             # <<<<<<<<<<<<<<
@@ -3978,32 +4066,32 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
  */
   }
 
-  /* "adios_mpi.pyx":353
+  /* "adios_mpi.pyx":437
  *         index = (index,)
  * 
  *     fixed = []             # <<<<<<<<<<<<<<
  *     length = len(index)
  * 
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 353, __pyx_L1_error)
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 437, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_fixed = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":354
+  /* "adios_mpi.pyx":438
  * 
  *     fixed = []
  *     length = len(index)             # <<<<<<<<<<<<<<
  * 
  *     for slice_ in index:
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 354, __pyx_L1_error)
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 438, __pyx_L1_error)
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 438, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_length = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":356
+  /* "adios_mpi.pyx":440
  *     length = len(index)
  * 
  *     for slice_ in index:             # <<<<<<<<<<<<<<
@@ -4014,26 +4102,26 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
     __pyx_t_3 = __pyx_v_index; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 440, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_5)) {
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 356, __pyx_L1_error)
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 440, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 356, __pyx_L1_error)
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 440, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 440, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       }
@@ -4043,7 +4131,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 356, __pyx_L1_error)
+          else __PYX_ERR(0, 440, __pyx_L1_error)
         }
         break;
       }
@@ -4052,7 +4140,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
     __Pyx_XDECREF_SET(__pyx_v_slice_, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "adios_mpi.pyx":357
+    /* "adios_mpi.pyx":441
  * 
  *     for slice_ in index:
  *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
@@ -4063,40 +4151,40 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":358
+      /* "adios_mpi.pyx":442
  *     for slice_ in index:
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))             # <<<<<<<<<<<<<<
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  */
-      __pyx_t_6 = PyNumber_Subtract(__pyx_v_ndim, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 358, __pyx_L1_error)
+      __pyx_t_6 = PyNumber_Subtract(__pyx_v_ndim, __pyx_v_length); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PyList_GET_SIZE(__pyx_v_fixed); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 358, __pyx_L1_error)
-      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 358, __pyx_L1_error)
+      __pyx_t_7 = PyList_GET_SIZE(__pyx_v_fixed); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 442, __pyx_L1_error)
+      __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 442, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 358, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 442, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 358, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 442, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 358, __pyx_L1_error)
+      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 442, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_slice__4);
       __Pyx_GIVEREF(__pyx_slice__4);
       PyList_SET_ITEM(__pyx_t_9, 0, __pyx_slice__4);
-      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 358, __pyx_L1_error)
+      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 442, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_temp);
         __Pyx_DECREF(__pyx_t_9);
         __pyx_t_9 = __pyx_temp;
       }
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_10 = __Pyx_PyList_Extend(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 358, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Extend(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 442, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "adios_mpi.pyx":357
+      /* "adios_mpi.pyx":441
  * 
  *     for slice_ in index:
  *         if slice_ is Ellipsis:             # <<<<<<<<<<<<<<
@@ -4106,7 +4194,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
       goto __pyx_L6;
     }
 
-    /* "adios_mpi.pyx":359
+    /* "adios_mpi.pyx":443
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  *         elif isinstance(slice_, (int, long)):             # <<<<<<<<<<<<<<
@@ -4127,22 +4215,22 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":360
+      /* "adios_mpi.pyx":444
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))             # <<<<<<<<<<<<<<
  *         elif isinstance(slice_, (float)):
  *             fixed.append(slice(int(slice_), int(slice_)+1, None))
  */
-      __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_slice_, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 360, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_slice_, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 444, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_8 = PySlice_New(__pyx_v_slice_, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 360, __pyx_L1_error)
+      __pyx_t_8 = PySlice_New(__pyx_v_slice_, __pyx_t_9, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 444, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_8); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 360, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_8); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 444, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "adios_mpi.pyx":359
+      /* "adios_mpi.pyx":443
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))
  *         elif isinstance(slice_, (int, long)):             # <<<<<<<<<<<<<<
@@ -4152,7 +4240,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
       goto __pyx_L6;
     }
 
-    /* "adios_mpi.pyx":361
+    /* "adios_mpi.pyx":445
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  *         elif isinstance(slice_, (float)):             # <<<<<<<<<<<<<<
@@ -4163,28 +4251,28 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":362
+      /* "adios_mpi.pyx":446
  *             fixed.append(slice(slice_, slice_+1, None))
  *         elif isinstance(slice_, (float)):
  *             fixed.append(slice(int(slice_), int(slice_)+1, None))             # <<<<<<<<<<<<<<
  *         else:
  *             fixed.append(slice_)
  */
-      __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 362, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 446, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 362, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_v_slice_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 446, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 362, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_9, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 446, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = PySlice_New(__pyx_t_8, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 362, __pyx_L1_error)
+      __pyx_t_9 = PySlice_New(__pyx_t_8, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 446, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 362, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_t_9); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 446, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "adios_mpi.pyx":361
+      /* "adios_mpi.pyx":445
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  *         elif isinstance(slice_, (float)):             # <<<<<<<<<<<<<<
@@ -4194,7 +4282,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
       goto __pyx_L6;
     }
 
-    /* "adios_mpi.pyx":364
+    /* "adios_mpi.pyx":448
  *             fixed.append(slice(int(slice_), int(slice_)+1, None))
  *         else:
  *             fixed.append(slice_)             # <<<<<<<<<<<<<<
@@ -4202,23 +4290,23 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
  * 
  */
     /*else*/ {
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_v_slice_); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 364, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_fixed, __pyx_v_slice_); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 448, __pyx_L1_error)
     }
     __pyx_L6:;
 
-    /* "adios_mpi.pyx":365
+    /* "adios_mpi.pyx":449
  *         else:
  *             fixed.append(slice_)
  *         length -= 1             # <<<<<<<<<<<<<<
  * 
  *     index = tuple(fixed)
  */
-    __pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_v_length, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 365, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_v_length, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 449, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF_SET(__pyx_v_length, __pyx_t_9);
     __pyx_t_9 = 0;
 
-    /* "adios_mpi.pyx":356
+    /* "adios_mpi.pyx":440
  *     length = len(index)
  * 
  *     for slice_ in index:             # <<<<<<<<<<<<<<
@@ -4228,57 +4316,57 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":367
+  /* "adios_mpi.pyx":451
  *         length -= 1
  * 
  *     index = tuple(fixed)             # <<<<<<<<<<<<<<
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))
  */
-  __pyx_t_3 = PyList_AsTuple(__pyx_v_fixed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error)
+  __pyx_t_3 = PyList_AsTuple(__pyx_v_fixed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 451, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":368
+  /* "adios_mpi.pyx":452
  * 
  *     index = tuple(fixed)
  *     if len(index) < ndim:             # <<<<<<<<<<<<<<
  *         index += (slice(None),) * (ndim-len(index))
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 368, __pyx_L1_error)
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 452, __pyx_L1_error)
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_v_ndim, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 368, __pyx_L1_error)
+  __pyx_t_9 = PyObject_RichCompare(__pyx_t_3, __pyx_v_ndim, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 368, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 452, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":369
+    /* "adios_mpi.pyx":453
  *     index = tuple(fixed)
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))             # <<<<<<<<<<<<<<
  * 
  *     return index
  */
-    __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 369, __pyx_L1_error)
-    __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
+    __pyx_t_4 = PyObject_Length(__pyx_v_index); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 453, __pyx_L1_error)
+    __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 453, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_3 = PyNumber_Subtract(__pyx_v_ndim, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Subtract(__pyx_v_ndim, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = PyNumber_Multiply(__pyx_tuple__6, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 369, __pyx_L1_error)
+    __pyx_t_9 = PyNumber_Multiply(__pyx_tuple__6, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 453, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 453, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":368
+    /* "adios_mpi.pyx":452
  * 
  *     index = tuple(fixed)
  *     if len(index) < ndim:             # <<<<<<<<<<<<<<
@@ -4287,7 +4375,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
  */
   }
 
-  /* "adios_mpi.pyx":371
+  /* "adios_mpi.pyx":455
  *         index += (slice(None),) * (ndim-len(index))
  * 
  *     return index             # <<<<<<<<<<<<<<
@@ -4299,7 +4387,7 @@ static PyObject *__pyx_f_9adios_mpi___parse_index(PyObject *__pyx_v_index, PyObj
   __pyx_r = __pyx_v_index;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":348
+  /* "adios_mpi.pyx":432
  *     ALL =2
  * 
  * cpdef __parse_index(index, ndim):             # <<<<<<<<<<<<<<
@@ -4354,11 +4442,11 @@ static PyObject *__pyx_pw_9adios_mpi_9__parse_index(PyObject *__pyx_self, PyObje
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ndim)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, 1); __PYX_ERR(0, 348, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, 1); __PYX_ERR(0, 432, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) __PYX_ERR(0, 348, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__parse_index") < 0)) __PYX_ERR(0, 432, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -4371,7 +4459,7 @@ static PyObject *__pyx_pw_9adios_mpi_9__parse_index(PyObject *__pyx_self, PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 348, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__parse_index", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 432, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.__parse_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -4390,7 +4478,7 @@ static PyObject *__pyx_pf_9adios_mpi_8__parse_index(CYTHON_UNUSED PyObject *__py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__parse_index", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi___parse_index(__pyx_v_index, __pyx_v_ndim, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi___parse_index(__pyx_v_index, __pyx_v_ndim, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4407,7 +4495,7 @@ static PyObject *__pyx_pf_9adios_mpi_8__parse_index(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":380
+/* "adios_mpi.pyx":464
  * cdef MPI.Comm read_init_comm
  * 
  * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -4431,14 +4519,14 @@ static PyObject *__pyx_f_9adios_mpi_init(PyObject *__pyx_v_config, CYTHON_UNUSED
     }
   }
 
-  /* "adios_mpi.pyx":382
+  /* "adios_mpi.pyx":466
  * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):
  *     global init_comm
  *     init_comm = comm.Clone()             # <<<<<<<<<<<<<<
  *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_comm), __pyx_n_s_Clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_comm), __pyx_n_s_Clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -4451,20 +4539,20 @@ static PyObject *__pyx_f_9adios_mpi_init(PyObject *__pyx_v_config, CYTHON_UNUSED
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 382, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 466, __pyx_L1_error)
   __Pyx_XGOTREF(((PyObject *)__pyx_v_9adios_mpi_init_comm));
   __Pyx_DECREF_SET(__pyx_v_9adios_mpi_init_comm, ((struct PyMPICommObject *)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":383
+  /* "adios_mpi.pyx":467
  *     global init_comm
  *     init_comm = comm.Clone()
  *     return adios_init(s2b(config), init_comm.ob_mpi)             # <<<<<<<<<<<<<<
@@ -4472,17 +4560,17 @@ static PyObject *__pyx_f_9adios_mpi_init(PyObject *__pyx_v_config, CYTHON_UNUSED
  * cpdef int64_t open(str group_name,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_config, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 383, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_config, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 383, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_PyInt_From_int(adios_init(__pyx_t_4, __pyx_v_9adios_mpi_init_comm->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 383, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(adios_init(__pyx_t_4, __pyx_v_9adios_mpi_init_comm->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":380
+  /* "adios_mpi.pyx":464
  * cdef MPI.Comm read_init_comm
  * 
  * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -4537,7 +4625,7 @@ static PyObject *__pyx_pw_9adios_mpi_11init(PyObject *__pyx_self, PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 380, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init") < 0)) __PYX_ERR(0, 464, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -4552,14 +4640,14 @@ static PyObject *__pyx_pw_9adios_mpi_11init(PyObject *__pyx_self, PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 380, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("init", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 464, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), (&PyString_Type), 1, "config", 1))) __PYX_ERR(0, 380, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 380, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), (&PyString_Type), 1, "config", 1))) __PYX_ERR(0, 464, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 464, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_10init(__pyx_self, __pyx_v_config, __pyx_v_comm);
 
   /* function exit code */
@@ -4580,7 +4668,7 @@ static PyObject *__pyx_pf_9adios_mpi_10init(CYTHON_UNUSED PyObject *__pyx_self,
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.comm = __pyx_v_comm;
-  __pyx_t_1 = __pyx_f_9adios_mpi_init(__pyx_v_config, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_init(__pyx_v_config, 0, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4597,7 +4685,7 @@ static PyObject *__pyx_pf_9adios_mpi_10init(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":385
+/* "adios_mpi.pyx":469
  *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -4625,28 +4713,28 @@ static int64_t __pyx_f_9adios_mpi_open(PyObject *__pyx_v_group_name, PyObject *_
     }
   }
 
-  /* "adios_mpi.pyx":391
+  /* "adios_mpi.pyx":475
  *     cdef int64_t fd
  *     cdef int result
  *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm.ob_mpi)             # <<<<<<<<<<<<<<
  *     return fd
  * 
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_group_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_group_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 391, __pyx_L1_error)
-  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 391, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 391, __pyx_L1_error)
-  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_mode, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 391, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_mode, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 391, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L1_error)
   __pyx_v_result = adios_open((&__pyx_v_fd), __pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_v_comm->ob_mpi);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":392
+  /* "adios_mpi.pyx":476
  *     cdef int result
  *     result = adios_open(&fd, s2b(group_name), s2b(name), s2b(mode), comm.ob_mpi)
  *     return fd             # <<<<<<<<<<<<<<
@@ -4656,7 +4744,7 @@ static int64_t __pyx_f_9adios_mpi_open(PyObject *__pyx_v_group_name, PyObject *_
   __pyx_r = __pyx_v_fd;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":385
+  /* "adios_mpi.pyx":469
  *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
@@ -4710,12 +4798,12 @@ static PyObject *__pyx_pw_9adios_mpi_13open(PyObject *__pyx_self, PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 1); __PYX_ERR(0, 385, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 1); __PYX_ERR(0, 469, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 2); __PYX_ERR(0, 385, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, 2); __PYX_ERR(0, 469, __pyx_L3_error)
         }
         case  3:
         if (kw_args > 0) {
@@ -4724,7 +4812,7 @@ static PyObject *__pyx_pw_9adios_mpi_13open(PyObject *__pyx_self, PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) __PYX_ERR(0, 385, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) __PYX_ERR(0, 469, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -4743,16 +4831,16 @@ static PyObject *__pyx_pw_9adios_mpi_13open(PyObject *__pyx_self, PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 385, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("open", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 469, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group_name), (&PyString_Type), 1, "group_name", 1))) __PYX_ERR(0, 385, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 386, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 387, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 388, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group_name), (&PyString_Type), 1, "group_name", 1))) __PYX_ERR(0, 469, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 470, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 471, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 472, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_12open(__pyx_self, __pyx_v_group_name, __pyx_v_name, __pyx_v_mode, __pyx_v_comm);
 
   /* function exit code */
@@ -4775,7 +4863,7 @@ static PyObject *__pyx_pf_9adios_mpi_12open(CYTHON_UNUSED PyObject *__pyx_self,
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_t_1 = __pyx_f_9adios_mpi_open(__pyx_v_group_name, __pyx_v_name, __pyx_v_mode, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 385, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 469, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -4792,7 +4880,7 @@ static PyObject *__pyx_pf_9adios_mpi_12open(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":394
+/* "adios_mpi.pyx":478
  *     return fd
  * 
  * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
@@ -4808,7 +4896,7 @@ static int64_t __pyx_f_9adios_mpi_set_group_size(int64_t __pyx_v_fd_p, uint64_t
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("set_group_size", 0);
 
-  /* "adios_mpi.pyx":397
+  /* "adios_mpi.pyx":481
  *     cdef uint64_t total_size
  *     cdef int result
  *     result = adios_group_size(fd_p, data_size, &total_size)             # <<<<<<<<<<<<<<
@@ -4817,7 +4905,7 @@ static int64_t __pyx_f_9adios_mpi_set_group_size(int64_t __pyx_v_fd_p, uint64_t
  */
   __pyx_v_result = adios_group_size(__pyx_v_fd_p, __pyx_v_data_size, (&__pyx_v_total_size));
 
-  /* "adios_mpi.pyx":398
+  /* "adios_mpi.pyx":482
  *     cdef int result
  *     result = adios_group_size(fd_p, data_size, &total_size)
  *     return total_size             # <<<<<<<<<<<<<<
@@ -4827,7 +4915,7 @@ static int64_t __pyx_f_9adios_mpi_set_group_size(int64_t __pyx_v_fd_p, uint64_t
   __pyx_r = __pyx_v_total_size;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":394
+  /* "adios_mpi.pyx":478
  *     return fd
  * 
  * cpdef int64_t set_group_size(int64_t fd_p, uint64_t data_size):             # <<<<<<<<<<<<<<
@@ -4870,11 +4958,11 @@ static PyObject *__pyx_pw_9adios_mpi_15set_group_size(PyObject *__pyx_self, PyOb
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data_size)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, 1); __PYX_ERR(0, 394, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, 1); __PYX_ERR(0, 478, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) __PYX_ERR(0, 394, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_group_size") < 0)) __PYX_ERR(0, 478, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -4882,12 +4970,12 @@ static PyObject *__pyx_pw_9adios_mpi_15set_group_size(PyObject *__pyx_self, PyOb
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 394, __pyx_L3_error)
-    __pyx_v_data_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_data_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 394, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L3_error)
+    __pyx_v_data_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_data_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 394, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("set_group_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 478, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.set_group_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -4906,7 +4994,7 @@ static PyObject *__pyx_pf_9adios_mpi_14set_group_size(CYTHON_UNUSED PyObject *__
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("set_group_size", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_f_9adios_mpi_set_group_size(__pyx_v_fd_p, __pyx_v_data_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int64_t(__pyx_f_9adios_mpi_set_group_size(__pyx_v_fd_p, __pyx_v_data_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 478, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -4923,7 +5011,7 @@ static PyObject *__pyx_pf_9adios_mpi_14set_group_size(CYTHON_UNUSED PyObject *__
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":400
+/* "adios_mpi.pyx":484
  *     return total_size
  * 
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
@@ -4953,7 +5041,7 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
     }
   }
 
-  /* "adios_mpi.pyx":402
+  /* "adios_mpi.pyx":486
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -4964,36 +5052,36 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":403
+    /* "adios_mpi.pyx":487
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):
  *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
  *             val_ = val
  *         else:
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 403, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 487, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 403, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 403, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 487, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":404
+      /* "adios_mpi.pyx":488
  *     if isinstance(val, (np.ndarray)):
  *         if val.flags.contiguous:
  *             val_ = val             # <<<<<<<<<<<<<<
  *         else:
  *             val_ = np.array(val, copy=True)
  */
-      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 404, __pyx_L1_error)
+      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 488, __pyx_L1_error)
       __pyx_t_4 = __pyx_v_val;
       __Pyx_INCREF(__pyx_t_4);
       __pyx_v_val_ = ((PyArrayObject *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "adios_mpi.pyx":403
+      /* "adios_mpi.pyx":487
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):
  *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
@@ -5003,7 +5091,7 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
       goto __pyx_L4;
     }
 
-    /* "adios_mpi.pyx":406
+    /* "adios_mpi.pyx":490
  *             val_ = val
  *         else:
  *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
@@ -5011,31 +5099,31 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
  *         val_ = np.array(val, dtype=dtype)
  */
     /*else*/ {
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 406, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 406, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 490, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 406, __pyx_L1_error)
+      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 490, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 406, __pyx_L1_error)
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 406, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 490, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 490, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 406, __pyx_L1_error)
+      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 490, __pyx_L1_error)
       __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
       __pyx_t_6 = 0;
     }
     __pyx_L4:;
 
-    /* "adios_mpi.pyx":402
+    /* "adios_mpi.pyx":486
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):
  *     cdef np.ndarray val_
  *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -5045,7 +5133,7 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":408
+  /* "adios_mpi.pyx":492
  *             val_ = np.array(val, copy=True)
  *     else:
  *         val_ = np.array(val, dtype=dtype)             # <<<<<<<<<<<<<<
@@ -5053,63 +5141,63 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
  *     cdef void * ptr
  */
   /*else*/ {
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 408, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 492, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 408, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 492, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 408, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 492, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_v_val);
     __Pyx_GIVEREF(__pyx_v_val);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_val);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 408, __pyx_L1_error)
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 408, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 492, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 408, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 492, __pyx_L1_error)
     __pyx_v_val_ = ((PyArrayObject *)__pyx_t_3);
     __pyx_t_3 = 0;
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":411
+  /* "adios_mpi.pyx":495
  * 
  *     cdef void * ptr
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
  *         bstr = val_.tostring()
  *         ptr = <void *> PyBytes_AS_STRING(bstr)
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_char); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_char); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 495, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 495, __pyx_L1_error)
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 495, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_1;
   __pyx_L6_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":412
+    /* "adios_mpi.pyx":496
  *     cdef void * ptr
  *     if (val_.dtype.char in ('S', 'U')):
  *         bstr = val_.tostring()             # <<<<<<<<<<<<<<
  *         ptr = <void *> PyBytes_AS_STRING(bstr)
  *     else:
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 412, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 496, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -5122,17 +5210,17 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
       }
     }
     if (__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 412, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 496, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_bstr = __pyx_t_4;
     __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":413
+    /* "adios_mpi.pyx":497
  *     if (val_.dtype.char in ('S', 'U')):
  *         bstr = val_.tostring()
  *         ptr = <void *> PyBytes_AS_STRING(bstr)             # <<<<<<<<<<<<<<
@@ -5141,7 +5229,7 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
  */
     __pyx_v_ptr = ((void *)PyBytes_AS_STRING(__pyx_v_bstr));
 
-    /* "adios_mpi.pyx":411
+    /* "adios_mpi.pyx":495
  * 
  *     cdef void * ptr
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
@@ -5151,7 +5239,7 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
     goto __pyx_L5;
   }
 
-  /* "adios_mpi.pyx":415
+  /* "adios_mpi.pyx":499
  *         ptr = <void *> PyBytes_AS_STRING(bstr)
  *     else:
  *         ptr = <void *> val_.data             # <<<<<<<<<<<<<<
@@ -5163,21 +5251,21 @@ static int __pyx_f_9adios_mpi_write(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name
   }
   __pyx_L5:;
 
-  /* "adios_mpi.pyx":417
+  /* "adios_mpi.pyx":501
  *         ptr = <void *> val_.data
  * 
  *     return adios_write (fd_p, s2b(name), ptr)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):
  */
-  __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 417, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 417, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 501, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_7, __pyx_v_ptr);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":400
+  /* "adios_mpi.pyx":484
  *     return total_size
  * 
  * cpdef int write (int64_t fd_p, str name, val, dtype=None):             # <<<<<<<<<<<<<<
@@ -5234,12 +5322,12 @@ static PyObject *__pyx_pw_9adios_mpi_17write(PyObject *__pyx_self, PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 1); __PYX_ERR(0, 400, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 1); __PYX_ERR(0, 484, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 2); __PYX_ERR(0, 400, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, 2); __PYX_ERR(0, 484, __pyx_L3_error)
         }
         case  3:
         if (kw_args > 0) {
@@ -5248,7 +5336,7 @@ static PyObject *__pyx_pw_9adios_mpi_17write(PyObject *__pyx_self, PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 400, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 484, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -5260,20 +5348,20 @@ static PyObject *__pyx_pw_9adios_mpi_17write(PyObject *__pyx_self, PyObject *__p
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 400, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_val = values[2];
     __pyx_v_dtype = values[3];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 400, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 484, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 400, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 484, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_16write(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val, __pyx_v_dtype);
 
   /* function exit code */
@@ -5296,7 +5384,7 @@ static PyObject *__pyx_pf_9adios_mpi_16write(CYTHON_UNUSED PyObject *__pyx_self,
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.dtype = __pyx_v_dtype;
   __pyx_t_1 = __pyx_f_9adios_mpi_write(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 400, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 484, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -5313,7 +5401,7 @@ static PyObject *__pyx_pf_9adios_mpi_16write(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":419
+/* "adios_mpi.pyx":503
  *     return adios_write (fd_p, s2b(name), ptr)
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
@@ -5329,21 +5417,21 @@ static int __pyx_f_9adios_mpi_write_int(int64_t __pyx_v_fd_p, PyObject *__pyx_v_
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_int", 0);
 
-  /* "adios_mpi.pyx":420
+  /* "adios_mpi.pyx":504
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 420, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 504, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":419
+  /* "adios_mpi.pyx":503
  *     return adios_write (fd_p, s2b(name), ptr)
  * 
  * cpdef int write_int (int64_t fd_p, str name, int val):             # <<<<<<<<<<<<<<
@@ -5392,16 +5480,16 @@ static PyObject *__pyx_pw_9adios_mpi_19write_int(PyObject *__pyx_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 1); __PYX_ERR(0, 419, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 1); __PYX_ERR(0, 503, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 2); __PYX_ERR(0, 419, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, 2); __PYX_ERR(0, 503, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) __PYX_ERR(0, 419, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_int") < 0)) __PYX_ERR(0, 503, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5410,19 +5498,19 @@ static PyObject *__pyx_pw_9adios_mpi_19write_int(PyObject *__pyx_self, PyObject
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 419, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 419, __pyx_L3_error)
+    __pyx_v_val = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 419, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_int", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 503, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.write_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 419, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 503, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_18write_int(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5440,7 +5528,7 @@ static PyObject *__pyx_pf_9adios_mpi_18write_int(CYTHON_UNUSED PyObject *__pyx_s
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_int", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_int(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_int(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5457,7 +5545,7 @@ static PyObject *__pyx_pf_9adios_mpi_18write_int(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":422
+/* "adios_mpi.pyx":506
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
@@ -5473,21 +5561,21 @@ static int __pyx_f_9adios_mpi_write_long(int64_t __pyx_v_fd_p, PyObject *__pyx_v
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_long", 0);
 
-  /* "adios_mpi.pyx":423
+  /* "adios_mpi.pyx":507
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 507, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 423, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":422
+  /* "adios_mpi.pyx":506
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_long (int64_t fd_p, str name, long val):             # <<<<<<<<<<<<<<
@@ -5536,16 +5624,16 @@ static PyObject *__pyx_pw_9adios_mpi_21write_long(PyObject *__pyx_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 1); __PYX_ERR(0, 422, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 1); __PYX_ERR(0, 506, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 2); __PYX_ERR(0, 422, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, 2); __PYX_ERR(0, 506, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) __PYX_ERR(0, 422, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_long") < 0)) __PYX_ERR(0, 506, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5554,19 +5642,19 @@ static PyObject *__pyx_pw_9adios_mpi_21write_long(PyObject *__pyx_self, PyObject
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 422, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __Pyx_PyInt_As_long(values[2]); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 422, __pyx_L3_error)
+    __pyx_v_val = __Pyx_PyInt_As_long(values[2]); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 422, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_long", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 506, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.write_long", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 422, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 506, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_20write_long(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5584,7 +5672,7 @@ static PyObject *__pyx_pf_9adios_mpi_20write_long(CYTHON_UNUSED PyObject *__pyx_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_long", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_long(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 422, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_long(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5601,7 +5689,7 @@ static PyObject *__pyx_pf_9adios_mpi_20write_long(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":425
+/* "adios_mpi.pyx":509
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
@@ -5617,21 +5705,21 @@ static int __pyx_f_9adios_mpi_write_float(int64_t __pyx_v_fd_p, PyObject *__pyx_
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_float", 0);
 
-  /* "adios_mpi.pyx":426
+  /* "adios_mpi.pyx":510
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 426, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":425
+  /* "adios_mpi.pyx":509
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_float (int64_t fd_p, str name, float val):             # <<<<<<<<<<<<<<
@@ -5680,16 +5768,16 @@ static PyObject *__pyx_pw_9adios_mpi_23write_float(PyObject *__pyx_self, PyObjec
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 1); __PYX_ERR(0, 425, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 1); __PYX_ERR(0, 509, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); __PYX_ERR(0, 425, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, 2); __PYX_ERR(0, 509, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) __PYX_ERR(0, 425, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_float") < 0)) __PYX_ERR(0, 509, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5698,19 +5786,19 @@ static PyObject *__pyx_pw_9adios_mpi_23write_float(PyObject *__pyx_self, PyObjec
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 425, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 425, __pyx_L3_error)
+    __pyx_v_val = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_val == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 425, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_float", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 509, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 425, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 509, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_22write_float(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5728,7 +5816,7 @@ static PyObject *__pyx_pf_9adios_mpi_22write_float(CYTHON_UNUSED PyObject *__pyx
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_float", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_float(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_float(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 509, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5745,7 +5833,7 @@ static PyObject *__pyx_pf_9adios_mpi_22write_float(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":428
+/* "adios_mpi.pyx":512
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
@@ -5761,21 +5849,21 @@ static int __pyx_f_9adios_mpi_write_double(int64_t __pyx_v_fd_p, PyObject *__pyx
   char *__pyx_t_2;
   __Pyx_RefNannySetupContext("write_double", 0);
 
-  /* "adios_mpi.pyx":429
+  /* "adios_mpi.pyx":513
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):
  *     return adios_write (fd_p, s2b(name), &val)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 513, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 429, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 513, __pyx_L1_error)
   __pyx_r = adios_write(__pyx_v_fd_p, __pyx_t_2, (&__pyx_v_val));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":428
+  /* "adios_mpi.pyx":512
  *     return adios_write (fd_p, s2b(name), &val)
  * 
  * cpdef int write_double (int64_t fd_p, str name, double val):             # <<<<<<<<<<<<<<
@@ -5824,16 +5912,16 @@ static PyObject *__pyx_pw_9adios_mpi_25write_double(PyObject *__pyx_self, PyObje
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 1); __PYX_ERR(0, 428, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 1); __PYX_ERR(0, 512, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 2); __PYX_ERR(0, 428, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, 2); __PYX_ERR(0, 512, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) __PYX_ERR(0, 428, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_double") < 0)) __PYX_ERR(0, 512, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -5842,19 +5930,19 @@ static PyObject *__pyx_pw_9adios_mpi_25write_double(PyObject *__pyx_self, PyObje
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 428, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 512, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_val = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 428, __pyx_L3_error)
+    __pyx_v_val = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 512, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 428, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_double", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 512, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 428, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 512, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_24write_double(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -5872,7 +5960,7 @@ static PyObject *__pyx_pf_9adios_mpi_24write_double(CYTHON_UNUSED PyObject *__py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("write_double", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_double(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_write_double(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 512, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -5889,7 +5977,7 @@ static PyObject *__pyx_pf_9adios_mpi_24write_double(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":432
+/* "adios_mpi.pyx":516
  * 
  * 
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):             # <<<<<<<<<<<<<<
@@ -5910,7 +5998,7 @@ static int __pyx_f_9adios_mpi_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name,
   uint64_t __pyx_t_7;
   __Pyx_RefNannySetupContext("read", 0);
 
-  /* "adios_mpi.pyx":433
+  /* "adios_mpi.pyx":517
  * 
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):
  *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'             # <<<<<<<<<<<<<<
@@ -5919,36 +6007,36 @@ static int __pyx_f_9adios_mpi_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name,
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 433, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 433, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 517, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (unlikely(!__pyx_t_3)) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Only_contiguous_arrays_are_suppo);
-      __PYX_ERR(0, 433, __pyx_L1_error)
+      __PYX_ERR(0, 517, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":434
+  /* "adios_mpi.pyx":518
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):
  *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
  *     print ("Reading ... ", val.itemsize * val.size, "(bytes)")             # <<<<<<<<<<<<<<
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_kp_s_Reading);
   __Pyx_GIVEREF(__pyx_kp_s_Reading);
@@ -5959,36 +6047,36 @@ static int __pyx_f_9adios_mpi_read(int64_t __pyx_v_fd_p, PyObject *__pyx_v_name,
   __Pyx_GIVEREF(__pyx_kp_s_bytes);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_s_bytes);
   __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":435
+  /* "adios_mpi.pyx":519
  *     assert val.flags.contiguous, 'Only contiguous arrays are supported.'
  *     print ("Reading ... ", val.itemsize * val.size, "(bytes)")
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)             # <<<<<<<<<<<<<<
  * 
  * cpdef int close(int64_t fd_p):
  */
-  __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 519, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_7 = __Pyx_PyInt_As_uint64_t(__pyx_t_6); if (unlikely((__pyx_t_7 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 435, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyInt_As_uint64_t(__pyx_t_6); if (unlikely((__pyx_t_7 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 519, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_r = adios_read(__pyx_v_fd_p, __pyx_t_5, ((void *)__pyx_v_val->data), __pyx_t_7);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":432
+  /* "adios_mpi.pyx":516
  * 
  * 
  * cpdef int read(int64_t fd_p, str name, np.ndarray val):             # <<<<<<<<<<<<<<
@@ -6040,16 +6128,16 @@ static PyObject *__pyx_pw_9adios_mpi_27read(PyObject *__pyx_self, PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 1); __PYX_ERR(0, 432, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 1); __PYX_ERR(0, 516, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); __PYX_ERR(0, 432, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, 2); __PYX_ERR(0, 516, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 432, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 516, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -6058,20 +6146,20 @@ static PyObject *__pyx_pw_9adios_mpi_27read(PyObject *__pyx_self, PyObject *__py
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 432, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 516, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_val = ((PyArrayObject *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 432, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 516, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 432, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_val), __pyx_ptype_5numpy_ndarray, 1, "val", 0))) __PYX_ERR(0, 432, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 516, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_val), __pyx_ptype_5numpy_ndarray, 1, "val", 0))) __PYX_ERR(0, 516, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_26read(__pyx_self, __pyx_v_fd_p, __pyx_v_name, __pyx_v_val);
 
   /* function exit code */
@@ -6089,7 +6177,7 @@ static PyObject *__pyx_pf_9adios_mpi_26read(CYTHON_UNUSED PyObject *__pyx_self,
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("read", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_read(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_read(__pyx_v_fd_p, __pyx_v_name, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 516, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6106,7 +6194,7 @@ static PyObject *__pyx_pf_9adios_mpi_26read(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":437
+/* "adios_mpi.pyx":521
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
  * 
  * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
@@ -6120,7 +6208,7 @@ static int __pyx_f_9adios_mpi_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __py
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "adios_mpi.pyx":438
+  /* "adios_mpi.pyx":522
  * 
  * cpdef int close(int64_t fd_p):
  *     return adios_close(fd_p)             # <<<<<<<<<<<<<<
@@ -6130,7 +6218,7 @@ static int __pyx_f_9adios_mpi_close(int64_t __pyx_v_fd_p, CYTHON_UNUSED int __py
   __pyx_r = adios_close(__pyx_v_fd_p);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":437
+  /* "adios_mpi.pyx":521
  *     return adios_read(fd_p, s2b(name), <void *> val.data, val.itemsize * val.size)
  * 
  * cpdef int close(int64_t fd_p):             # <<<<<<<<<<<<<<
@@ -6153,7 +6241,7 @@ static PyObject *__pyx_pw_9adios_mpi_29close(PyObject *__pyx_self, PyObject *__p
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close (wrapper)", 0);
   assert(__pyx_arg_fd_p); {
-    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(__pyx_arg_fd_p); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 437, __pyx_L3_error)
+    __pyx_v_fd_p = __Pyx_PyInt_As_int64_t(__pyx_arg_fd_p); if (unlikely((__pyx_v_fd_p == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 521, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -6174,7 +6262,7 @@ static PyObject *__pyx_pf_9adios_mpi_28close(CYTHON_UNUSED PyObject *__pyx_self,
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_close(__pyx_v_fd_p, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_close(__pyx_v_fd_p, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6191,7 +6279,7 @@ static PyObject *__pyx_pf_9adios_mpi_28close(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":440
+/* "adios_mpi.pyx":524
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -6211,7 +6299,7 @@ static int __pyx_f_9adios_mpi_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, st
     }
   }
 
-  /* "adios_mpi.pyx":441
+  /* "adios_mpi.pyx":525
  * 
  * cpdef int finalize(int mype = 0):
  *     return adios_finalize(mype)             # <<<<<<<<<<<<<<
@@ -6221,7 +6309,7 @@ static int __pyx_f_9adios_mpi_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, st
   __pyx_r = adios_finalize(__pyx_v_mype);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":440
+  /* "adios_mpi.pyx":524
  *     return adios_close(fd_p)
  * 
  * cpdef int finalize(int mype = 0):             # <<<<<<<<<<<<<<
@@ -6263,7 +6351,7 @@ static PyObject *__pyx_pw_9adios_mpi_31finalize(PyObject *__pyx_self, PyObject *
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) __PYX_ERR(0, 440, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finalize") < 0)) __PYX_ERR(0, 524, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -6273,14 +6361,14 @@ static PyObject *__pyx_pw_9adios_mpi_31finalize(PyObject *__pyx_self, PyObject *
       }
     }
     if (values[0]) {
-      __pyx_v_mype = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_mype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 440, __pyx_L3_error)
+      __pyx_v_mype = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_mype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 524, __pyx_L3_error)
     } else {
       __pyx_v_mype = ((int)0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 440, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 524, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -6304,7 +6392,7 @@ static PyObject *__pyx_pf_9adios_mpi_30finalize(CYTHON_UNUSED PyObject *__pyx_se
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.mype = __pyx_v_mype;
   __pyx_t_1 = __pyx_f_9adios_mpi_finalize(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 440, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6321,7 +6409,7 @@ static PyObject *__pyx_pf_9adios_mpi_30finalize(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":447
+/* "adios_mpi.pyx":531
  * ## ====================
  * 
  * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -6344,14 +6432,14 @@ static int __pyx_f_9adios_mpi_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch,
     }
   }
 
-  /* "adios_mpi.pyx":449
+  /* "adios_mpi.pyx":533
  * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):
  *     global init_comm
  *     init_comm = comm.Clone()             # <<<<<<<<<<<<<<
  *     return adios_init_noxml(init_comm.ob_mpi)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_comm), __pyx_n_s_Clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_comm), __pyx_n_s_Clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -6364,20 +6452,20 @@ static int __pyx_f_9adios_mpi_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch,
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 449, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 533, __pyx_L1_error)
   __Pyx_XGOTREF(((PyObject *)__pyx_v_9adios_mpi_init_comm));
   __Pyx_DECREF_SET(__pyx_v_9adios_mpi_init_comm, ((struct PyMPICommObject *)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":450
+  /* "adios_mpi.pyx":534
  *     global init_comm
  *     init_comm = comm.Clone()
  *     return adios_init_noxml(init_comm.ob_mpi)             # <<<<<<<<<<<<<<
@@ -6387,7 +6475,7 @@ static int __pyx_f_9adios_mpi_init_noxml(CYTHON_UNUSED int __pyx_skip_dispatch,
   __pyx_r = adios_init_noxml(__pyx_v_9adios_mpi_init_comm->ob_mpi);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":447
+  /* "adios_mpi.pyx":531
  * ## ====================
  * 
  * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
@@ -6436,7 +6524,7 @@ static PyObject *__pyx_pw_9adios_mpi_33init_noxml(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) __PYX_ERR(0, 447, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "init_noxml") < 0)) __PYX_ERR(0, 531, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -6449,13 +6537,13 @@ static PyObject *__pyx_pw_9adios_mpi_33init_noxml(PyObject *__pyx_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 447, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("init_noxml", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 531, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.init_noxml", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 447, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 531, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_32init_noxml(__pyx_self, __pyx_v_comm);
 
   /* function exit code */
@@ -6478,7 +6566,7 @@ static PyObject *__pyx_pf_9adios_mpi_32init_noxml(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_t_1 = __pyx_f_9adios_mpi_init_noxml(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 447, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6495,7 +6583,7 @@ static PyObject *__pyx_pf_9adios_mpi_32init_noxml(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":452
+/* "adios_mpi.pyx":536
  *     return adios_init_noxml(init_comm.ob_mpi)
  * 
  * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
@@ -6509,7 +6597,7 @@ static int __pyx_f_9adios_mpi_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("allocate_buffer", 0);
 
-  /* "adios_mpi.pyx":454
+  /* "adios_mpi.pyx":538
  * cpdef int allocate_buffer(int when,
  *                           uint64_t buffer_size):
  *     return adios_allocate_buffer(<ADIOS_BUFFER_ALLOC_WHEN> when,             # <<<<<<<<<<<<<<
@@ -6519,7 +6607,7 @@ static int __pyx_f_9adios_mpi_allocate_buffer(int __pyx_v_when, uint64_t __pyx_v
   __pyx_r = adios_allocate_buffer(((ADIOS_BUFFER_ALLOC_WHEN)__pyx_v_when), __pyx_v_buffer_size);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":452
+  /* "adios_mpi.pyx":536
  *     return adios_init_noxml(init_comm.ob_mpi)
  * 
  * cpdef int allocate_buffer(int when,             # <<<<<<<<<<<<<<
@@ -6562,11 +6650,11 @@ static PyObject *__pyx_pw_9adios_mpi_35allocate_buffer(PyObject *__pyx_self, PyO
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); __PYX_ERR(0, 452, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, 1); __PYX_ERR(0, 536, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) __PYX_ERR(0, 452, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "allocate_buffer") < 0)) __PYX_ERR(0, 536, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -6574,12 +6662,12 @@ static PyObject *__pyx_pw_9adios_mpi_35allocate_buffer(PyObject *__pyx_self, PyO
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
     }
-    __pyx_v_when = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_when == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 452, __pyx_L3_error)
-    __pyx_v_buffer_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_buffer_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 453, __pyx_L3_error)
+    __pyx_v_when = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_when == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 536, __pyx_L3_error)
+    __pyx_v_buffer_size = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_buffer_size == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 452, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("allocate_buffer", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 536, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.allocate_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -6598,7 +6686,7 @@ static PyObject *__pyx_pf_9adios_mpi_34allocate_buffer(CYTHON_UNUSED PyObject *_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("allocate_buffer", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_allocate_buffer(__pyx_v_when, __pyx_v_buffer_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 452, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_allocate_buffer(__pyx_v_when, __pyx_v_buffer_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -6615,18 +6703,18 @@ static PyObject *__pyx_pf_9adios_mpi_34allocate_buffer(CYTHON_UNUSED PyObject *_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":457
+/* "adios_mpi.pyx":541
  *                                  buffer_size)
  * 
  * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  */
 
 static PyObject *__pyx_pw_9adios_mpi_37declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int64_t __pyx_f_9adios_mpi_declare_group(PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_declare_group *__pyx_optional_args) {
   PyObject *__pyx_v_time_index = ((PyObject*)__pyx_kp_s__10);
-  int __pyx_v_stats = ((int)1);
+  int __pyx_v_stats = __pyx_k__11;
   int64_t __pyx_v_id;
   int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
@@ -6644,64 +6732,64 @@ static int64_t __pyx_f_9adios_mpi_declare_group(PyObject *__pyx_v_name, CYTHON_U
     }
   }
 
-  /* "adios_mpi.pyx":460
+  /* "adios_mpi.pyx":544
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  *     cdef int64_t id = 0             # <<<<<<<<<<<<<<
  *     adios_declare_group (&id,
  *                          s2b(name),
  */
   __pyx_v_id = 0;
 
-  /* "adios_mpi.pyx":462
+  /* "adios_mpi.pyx":546
  *     cdef int64_t id = 0
  *     adios_declare_group (&id,
  *                          s2b(name),             # <<<<<<<<<<<<<<
  *                          s2b(time_index),
- *                          <ADIOS_FLAG> stats)
+ *                          <ADIOS_STATISTICS_FLAG> stats)
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 462, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 546, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":463
+  /* "adios_mpi.pyx":547
  *     adios_declare_group (&id,
  *                          s2b(name),
  *                          s2b(time_index),             # <<<<<<<<<<<<<<
- *                          <ADIOS_FLAG> stats)
+ *                          <ADIOS_STATISTICS_FLAG> stats)
  *     return id
  */
-  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_time_index, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_time_index, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 463, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":461
- *                             int stats = 1):
+  /* "adios_mpi.pyx":545
+ *                             int stats = adios_stat_default):
  *     cdef int64_t id = 0
  *     adios_declare_group (&id,             # <<<<<<<<<<<<<<
  *                          s2b(name),
  *                          s2b(time_index),
  */
-  adios_declare_group((&__pyx_v_id), __pyx_t_2, __pyx_t_4, ((ADIOS_FLAG)__pyx_v_stats));
+  adios_declare_group((&__pyx_v_id), __pyx_t_2, __pyx_t_4, ((ADIOS_STATISTICS_FLAG)__pyx_v_stats));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":465
+  /* "adios_mpi.pyx":549
  *                          s2b(time_index),
- *                          <ADIOS_FLAG> stats)
+ *                          <ADIOS_STATISTICS_FLAG> stats)
  *     return id             # <<<<<<<<<<<<<<
  * 
- * cpdef int define_var(int64_t group_id,
+ * cpdef int64_t define_var(int64_t group_id,
  */
   __pyx_r = __pyx_v_id;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":457
+  /* "adios_mpi.pyx":541
  *                                  buffer_size)
  * 
  * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
  *                             str time_index = "",
- *                             int stats = 1):
+ *                             int stats = adios_stat_default):
  */
 
   /* function exit code */
@@ -6717,7 +6805,7 @@ static int64_t __pyx_f_9adios_mpi_declare_group(PyObject *__pyx_v_name, CYTHON_U
 
 /* Python wrapper */
 static PyObject *__pyx_pw_9adios_mpi_37declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_36declare_group[] = "declare_group(str name, str time_index='', int stats=1) -> int64_t";
+static char __pyx_doc_9adios_mpi_36declare_group[] = "declare_group(str name, str time_index='', int stats=adios_stat_default) -> int64_t";
 static PyObject *__pyx_pw_9adios_mpi_37declare_group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_time_index = 0;
@@ -6756,7 +6844,7 @@ static PyObject *__pyx_pw_9adios_mpi_37declare_group(PyObject *__pyx_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 457, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 541, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -6770,21 +6858,21 @@ static PyObject *__pyx_pw_9adios_mpi_37declare_group(PyObject *__pyx_self, PyObj
     __pyx_v_name = ((PyObject*)values[0]);
     __pyx_v_time_index = ((PyObject*)values[1]);
     if (values[2]) {
-      __pyx_v_stats = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_stats == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 459, __pyx_L3_error)
+      __pyx_v_stats = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_stats == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 543, __pyx_L3_error)
     } else {
-      __pyx_v_stats = ((int)1);
+      __pyx_v_stats = __pyx_k__11;
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 457, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 541, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 457, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_time_index), (&PyString_Type), 1, "time_index", 1))) __PYX_ERR(0, 458, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 541, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_time_index), (&PyString_Type), 1, "time_index", 1))) __PYX_ERR(0, 542, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_36declare_group(__pyx_self, __pyx_v_name, __pyx_v_time_index, __pyx_v_stats);
 
   /* function exit code */
@@ -6808,7 +6896,7 @@ static PyObject *__pyx_pf_9adios_mpi_36declare_group(CYTHON_UNUSED PyObject *__p
   __pyx_t_2.time_index = __pyx_v_time_index;
   __pyx_t_2.stats = __pyx_v_stats;
   __pyx_t_1 = __pyx_f_9adios_mpi_declare_group(__pyx_v_name, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -6825,20 +6913,20 @@ static PyObject *__pyx_pf_9adios_mpi_36declare_group(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":467
+/* "adios_mpi.pyx":551
  *     return id
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ * cpdef int64_t define_var(int64_t group_id,             # <<<<<<<<<<<<<<
  *                      str name,
  *                      str path,
  */
 
 static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_define_var *__pyx_optional_args) {
+static int64_t __pyx_f_9adios_mpi_define_var(int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_define_var *__pyx_optional_args) {
   PyObject *__pyx_v_dimensions = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_global_dimensions = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_local_offsets = ((PyObject*)__pyx_kp_s__10);
-  int __pyx_r;
+  int64_t __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   char *__pyx_t_2;
@@ -6863,62 +6951,62 @@ static int __pyx_f_9adios_mpi_define_var(int64_t __pyx_v_group_id, PyObject *__p
     }
   }
 
-  /* "adios_mpi.pyx":475
+  /* "adios_mpi.pyx":559
  *                      str local_offsets = ""):
  *     return adios_define_var(group_id,
  *                             s2b(name),             # <<<<<<<<<<<<<<
  *                             s2b(path),
  *                             <ADIOS_DATATYPES> atype,
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 475, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 559, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":476
+  /* "adios_mpi.pyx":560
  *     return adios_define_var(group_id,
  *                             s2b(name),
  *                             s2b(path),             # <<<<<<<<<<<<<<
  *                             <ADIOS_DATATYPES> atype,
  *                             s2b(dimensions),
  */
-  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 560, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 560, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":478
+  /* "adios_mpi.pyx":562
  *                             s2b(path),
  *                             <ADIOS_DATATYPES> atype,
  *                             s2b(dimensions),             # <<<<<<<<<<<<<<
  *                             s2b(global_dimensions),
  *                             s2b(local_offsets))
  */
-  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 478, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 562, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 562, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":479
+  /* "adios_mpi.pyx":563
  *                             <ADIOS_DATATYPES> atype,
  *                             s2b(dimensions),
  *                             s2b(global_dimensions),             # <<<<<<<<<<<<<<
  *                             s2b(local_offsets))
  * 
  */
-  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_global_dimensions, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 479, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_global_dimensions, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 563, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 479, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 563, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":480
+  /* "adios_mpi.pyx":564
  *                             s2b(dimensions),
  *                             s2b(global_dimensions),
  *                             s2b(local_offsets))             # <<<<<<<<<<<<<<
  * 
- * cpdef int define_attribute (int64_t group,
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):
  */
-  __pyx_t_9 = __pyx_f_9adios_mpi_s2b(__pyx_v_local_offsets, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 480, __pyx_L1_error)
+  __pyx_t_9 = __pyx_f_9adios_mpi_s2b(__pyx_v_local_offsets, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 564, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 564, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":474
+  /* "adios_mpi.pyx":558
  *                      str global_dimensions = "",
  *                      str local_offsets = ""):
  *     return adios_define_var(group_id,             # <<<<<<<<<<<<<<
@@ -6933,10 +7021,10 @@ static int __pyx_f_9adios_mpi_define_var(int64_t __pyx_v_group_id, PyObject *__p
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":467
+  /* "adios_mpi.pyx":551
  *     return id
  * 
- * cpdef int define_var(int64_t group_id,             # <<<<<<<<<<<<<<
+ * cpdef int64_t define_var(int64_t group_id,             # <<<<<<<<<<<<<<
  *                      str name,
  *                      str path,
  */
@@ -6957,7 +7045,7 @@ static int __pyx_f_9adios_mpi_define_var(int64_t __pyx_v_group_id, PyObject *__p
 
 /* Python wrapper */
 static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_38define_var[] = "define_var(int64_t group_id, str name, str path, int atype, str dimensions='', str global_dimensions='', str local_offsets='') -> int";
+static char __pyx_doc_9adios_mpi_38define_var[] = "define_var(int64_t group_id, str name, str path, int atype, str dimensions='', str global_dimensions='', str local_offsets='') -> int64_t";
 static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_group_id;
   PyObject *__pyx_v_name = 0;
@@ -6997,17 +7085,17 @@ static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); __PYX_ERR(0, 467, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 1); __PYX_ERR(0, 551, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 2); __PYX_ERR(0, 467, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 2); __PYX_ERR(0, 551, __pyx_L3_error)
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 3); __PYX_ERR(0, 467, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, 3); __PYX_ERR(0, 551, __pyx_L3_error)
         }
         case  4:
         if (kw_args > 0) {
@@ -7026,7 +7114,7 @@ static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 467, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 551, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -7041,27 +7129,27 @@ static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 467, __pyx_L3_error)
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_path = ((PyObject*)values[2]);
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 470, __pyx_L3_error)
+    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 554, __pyx_L3_error)
     __pyx_v_dimensions = ((PyObject*)values[4]);
     __pyx_v_global_dimensions = ((PyObject*)values[5]);
     __pyx_v_local_offsets = ((PyObject*)values[6]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 467, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_var", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 551, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 468, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 469, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 471, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_global_dimensions), (&PyString_Type), 1, "global_dimensions", 1))) __PYX_ERR(0, 472, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_local_offsets), (&PyString_Type), 1, "local_offsets", 1))) __PYX_ERR(0, 473, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 552, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 553, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 555, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_global_dimensions), (&PyString_Type), 1, "global_dimensions", 1))) __PYX_ERR(0, 556, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_local_offsets), (&PyString_Type), 1, "local_offsets", 1))) __PYX_ERR(0, 557, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_38define_var(__pyx_self, __pyx_v_group_id, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_dimensions, __pyx_v_global_dimensions, __pyx_v_local_offsets);
 
   /* function exit code */
@@ -7076,7 +7164,7 @@ static PyObject *__pyx_pw_9adios_mpi_39define_var(PyObject *__pyx_self, PyObject
 static PyObject *__pyx_pf_9adios_mpi_38define_var(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_global_dimensions, PyObject *__pyx_v_local_offsets) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
+  int64_t __pyx_t_1;
   struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_var", 0);
@@ -7086,7 +7174,7 @@ static PyObject *__pyx_pf_9adios_mpi_38define_var(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_2.global_dimensions = __pyx_v_global_dimensions;
   __pyx_t_2.local_offsets = __pyx_v_local_offsets;
   __pyx_t_1 = __pyx_f_9adios_mpi_define_var(__pyx_v_group_id, __pyx_v_name, __pyx_v_path, __pyx_v_atype, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 467, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -7103,101 +7191,190 @@ static PyObject *__pyx_pf_9adios_mpi_38define_var(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":482
+/* "adios_mpi.pyx":566
  *                             s2b(local_offsets))
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             str name,
- *                             str path,
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):             # <<<<<<<<<<<<<<
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
+ * 
  */
 
-static PyObject *__pyx_pw_9adios_mpi_41define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_define_attribute(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var, CYTHON_UNUSED int __pyx_skip_dispatch) {
+static PyObject *__pyx_pw_9adios_mpi_41define_schema_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_schema_version(int64_t __pyx_v_group_id, PyObject *__pyx_v_schema_version, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   char *__pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  char *__pyx_t_4;
-  PyObject *__pyx_t_5 = NULL;
-  char *__pyx_t_6;
-  PyObject *__pyx_t_7 = NULL;
-  char *__pyx_t_8;
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_RefNannySetupContext("define_schema_version", 0);
 
-  /* "adios_mpi.pyx":489
- *                             str var):
- *     return adios_define_attribute (group,
- *                                    s2b(name),             # <<<<<<<<<<<<<<
- *                                    s2b(path),
- *                                    <ADIOS_DATATYPES> atype,
+  /* "adios_mpi.pyx":567
+ * 
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):
+ *     return adios_define_schema_version (group_id, s2b(schema_version))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_schema_version, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 489, __pyx_L1_error)
-
-  /* "adios_mpi.pyx":490
- *     return adios_define_attribute (group,
- *                                    s2b(name),
- *                                    s2b(path),             # <<<<<<<<<<<<<<
- *                                    <ADIOS_DATATYPES> atype,
- *                                    s2b(value),
- */
-  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 490, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 567, __pyx_L1_error)
+  __pyx_r = adios_define_schema_version(__pyx_v_group_id, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":492
- *                                    s2b(path),
- *                                    <ADIOS_DATATYPES> atype,
- *                                    s2b(value),             # <<<<<<<<<<<<<<
- *                                    s2b(var))
+  /* "adios_mpi.pyx":566
+ *                             s2b(local_offsets))
+ * 
+ * cpdef int define_schema_version (int64_t group_id, str schema_version):             # <<<<<<<<<<<<<<
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
  * 
  */
-  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_value, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 492, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 492, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":493
- *                                    <ADIOS_DATATYPES> atype,
- *                                    s2b(value),
- *                                    s2b(var))             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.define_schema_version", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_41define_schema_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_40define_schema_version[] = "define_schema_version(int64_t group_id, str schema_version) -> int";
+static PyObject *__pyx_pw_9adios_mpi_41define_schema_version(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_schema_version = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_schema_version (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_schema_version,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_schema_version)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_schema_version", 1, 2, 2, 1); __PYX_ERR(0, 566, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_schema_version") < 0)) __PYX_ERR(0, 566, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 566, __pyx_L3_error)
+    __pyx_v_schema_version = ((PyObject*)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_schema_version", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 566, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_schema_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema_version), (&PyString_Type), 1, "schema_version", 1))) __PYX_ERR(0, 566, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_40define_schema_version(__pyx_self, __pyx_v_group_id, __pyx_v_schema_version);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_40define_schema_version(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_schema_version) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_schema_version", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_schema_version(__pyx_v_group_id, __pyx_v_schema_version, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_schema_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":569
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
  * 
- * cpdef int define_attribute_byvalue (int64_t group,
  */
-  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_var, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 493, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 493, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":488
- *                             str value,
- *                             str var):
- *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
- *                                    s2b(name),
- *                                    s2b(path),
+static PyObject *__pyx_pw_9adios_mpi_43define_var_mesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_mesh(int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_meshname, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_mesh", 0);
+
+  /* "adios_mpi.pyx":570
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):
  */
-  __pyx_r = adios_define_attribute(__pyx_v_group, __pyx_t_2, __pyx_t_4, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_t_6, __pyx_t_8);
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_varname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_meshname, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 570, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L1_error)
+  __pyx_r = adios_define_var_mesh(__pyx_v_group_id, __pyx_t_2, __pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":482
- *                             s2b(local_offsets))
+  /* "adios_mpi.pyx":569
+ *     return adios_define_schema_version (group_id, s2b(schema_version))
+ * 
+ * cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
  * 
- * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
- *                             str name,
- *                             str path,
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_WriteUnraisable("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __Pyx_WriteUnraisable("adios_mpi.define_var_mesh", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
   __pyx_r = 0;
   __pyx_L0:;
   __Pyx_RefNannyFinishContext();
@@ -7205,28 +7382,22 @@ static int __pyx_f_9adios_mpi_define_attribute(int64_t __pyx_v_group, PyObject *
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_41define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_40define_attribute[] = "define_attribute(int64_t group, str name, str path, int atype, str value, str var) -> int";
-static PyObject *__pyx_pw_9adios_mpi_41define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int64_t __pyx_v_group;
-  PyObject *__pyx_v_name = 0;
-  PyObject *__pyx_v_path = 0;
-  int __pyx_v_atype;
-  PyObject *__pyx_v_value = 0;
-  PyObject *__pyx_v_var = 0;
+static PyObject *__pyx_pw_9adios_mpi_43define_var_mesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_42define_var_mesh[] = "define_var_mesh(int64_t group_id, str varname, str meshname) -> int";
+static PyObject *__pyx_pw_9adios_mpi_43define_var_mesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_v_meshname = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
+  __Pyx_RefNannySetupContext("define_var_mesh (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_value,&__pyx_n_s_var,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_varname,&__pyx_n_s_meshname,0};
+    PyObject* values[3] = {0,0,0};
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
@@ -7236,67 +7407,44 @@ static PyObject *__pyx_pw_9adios_mpi_41define_attribute(PyObject *__pyx_self, Py
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group)) != 0)) kw_args--;
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
         else goto __pyx_L5_argtuple_error;
         case  1:
-        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 1); __PYX_ERR(0, 482, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var_mesh", 1, 3, 3, 1); __PYX_ERR(0, 569, __pyx_L3_error)
         }
         case  2:
-        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 2); __PYX_ERR(0, 482, __pyx_L3_error)
-        }
-        case  3:
-        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 3); __PYX_ERR(0, 482, __pyx_L3_error)
-        }
-        case  4:
-        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 4); __PYX_ERR(0, 482, __pyx_L3_error)
-        }
-        case  5:
-        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_meshname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); __PYX_ERR(0, 482, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_var_mesh", 1, 3, 3, 2); __PYX_ERR(0, 569, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute") < 0)) __PYX_ERR(0, 482, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_mesh") < 0)) __PYX_ERR(0, 569, __pyx_L3_error)
       }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
     } else {
       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 482, __pyx_L3_error)
-    __pyx_v_name = ((PyObject*)values[1]);
-    __pyx_v_path = ((PyObject*)values[2]);
-    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 485, __pyx_L3_error)
-    __pyx_v_value = ((PyObject*)values[4]);
-    __pyx_v_var = ((PyObject*)values[5]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 569, __pyx_L3_error)
+    __pyx_v_varname = ((PyObject*)values[1]);
+    __pyx_v_meshname = ((PyObject*)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 482, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_var_mesh", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 569, __pyx_L3_error)
   __pyx_L3_error:;
-  __Pyx_AddTraceback("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.define_var_mesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 483, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 484, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyString_Type), 1, "value", 1))) __PYX_ERR(0, 486, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), (&PyString_Type), 1, "var", 1))) __PYX_ERR(0, 487, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_40define_attribute(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 569, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_meshname), (&PyString_Type), 1, "meshname", 1))) __PYX_ERR(0, 569, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_42define_var_mesh(__pyx_self, __pyx_v_group_id, __pyx_v_varname, __pyx_v_meshname);
 
   /* function exit code */
   goto __pyx_L0;
@@ -7307,13 +7455,13 @@ static PyObject *__pyx_pw_9adios_mpi_41define_attribute(PyObject *__pyx_self, Py
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_40define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var) {
+static PyObject *__pyx_pf_9adios_mpi_42define_var_mesh(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_meshname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_RefNannySetupContext("define_var_mesh", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_attribute(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 482, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_var_mesh(__pyx_v_group_id, __pyx_v_varname, __pyx_v_meshname, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -7322,7 +7470,7 @@ static PyObject *__pyx_pf_9adios_mpi_40define_attribute(CYTHON_UNUSED PyObject *
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_AddTraceback("adios_mpi.define_var_mesh", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
@@ -7330,299 +7478,2891 @@ static PyObject *__pyx_pf_9adios_mpi_40define_attribute(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":495
- *                                    s2b(var))
+/* "adios_mpi.pyx":572
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
  * 
- * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
- *                                     str name,
- *                                     str path,
  */
 
-static PyObject *__pyx_pw_9adios_mpi_43define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyArrayObject *__pyx_v_val_ = 0;
-  PyObject *__pyx_v_atype = NULL;
-  char *__pyx_v_pt1;
-  char **__pyx_v_pt2;
-  PyObject *__pyx_v_bstr = NULL;
+static PyObject *__pyx_pw_9adios_mpi_45define_var_centering(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_centering(int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_centering, CYTHON_UNUSED int __pyx_skip_dispatch) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  PyObject *__pyx_t_6 = NULL;
-  char *__pyx_t_7;
-  char *__pyx_t_8;
-  ADIOS_DATATYPES __pyx_t_9;
-  Py_ssize_t __pyx_t_10;
-  int __pyx_t_11;
-  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_centering", 0);
 
-  /* "adios_mpi.pyx":500
- *                                     val):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
+  /* "adios_mpi.pyx":573
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):
  */
-  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5numpy_ndarray); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_varname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 573, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_centering, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 573, __pyx_L1_error)
+  __pyx_r = adios_define_var_centering(__pyx_v_group_id, __pyx_t_2, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
 
-    /* "adios_mpi.pyx":501
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
- *             val_ = val
- *         else:
+  /* "adios_mpi.pyx":572
+ *     return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
+ * 
+ * cpdef int define_var_centering (int64_t group_id, str varname, str centering):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+ * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 501, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 501, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":502
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:
- *             val_ = val             # <<<<<<<<<<<<<<
- *         else:
- *             val_ = np.array(val, copy=True)
- */
-      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 502, __pyx_L1_error)
-      __pyx_t_4 = __pyx_v_val;
-      __Pyx_INCREF(__pyx_t_4);
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_4);
-      __pyx_t_4 = 0;
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_var_centering", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-      /* "adios_mpi.pyx":501
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):
- *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
- *             val_ = val
- *         else:
- */
-      goto __pyx_L4;
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_45define_var_centering(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_44define_var_centering[] = "define_var_centering(int64_t group_id, str varname, str centering) -> int";
+static PyObject *__pyx_pw_9adios_mpi_45define_var_centering(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_varname = 0;
+  PyObject *__pyx_v_centering = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_centering (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_id,&__pyx_n_s_varname,&__pyx_n_s_centering,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_centering", 1, 3, 3, 1); __PYX_ERR(0, 572, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_centering)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_centering", 1, 3, 3, 2); __PYX_ERR(0, 572, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_centering") < 0)) __PYX_ERR(0, 572, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 572, __pyx_L3_error)
+    __pyx_v_varname = ((PyObject*)values[1]);
+    __pyx_v_centering = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_centering", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 572, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_var_centering", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 572, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_centering), (&PyString_Type), 1, "centering", 1))) __PYX_ERR(0, 572, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_44define_var_centering(__pyx_self, __pyx_v_group_id, __pyx_v_varname, __pyx_v_centering);
 
-    /* "adios_mpi.pyx":504
- *             val_ = val
- *         else:
- *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
- *     else:
- *         val_ = np.array(val)
- */
-    /*else*/ {
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __Pyx_INCREF(__pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
-      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 504, __pyx_L1_error)
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 504, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 504, __pyx_L1_error)
-      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-      __pyx_t_6 = 0;
-    }
-    __pyx_L4:;
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
 
-    /* "adios_mpi.pyx":500
- *                                     val):
- *     cdef np.ndarray val_
- *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
- *         if val.flags.contiguous:
- *             val_ = val
- */
-    goto __pyx_L3;
-  }
+static PyObject *__pyx_pf_9adios_mpi_44define_var_centering(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group_id, PyObject *__pyx_v_varname, PyObject *__pyx_v_centering) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_centering", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_var_centering(__pyx_v_group_id, __pyx_v_varname, __pyx_v_centering, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
 
-  /* "adios_mpi.pyx":506
- *             val_ = np.array(val, copy=True)
- *     else:
- *         val_ = np.array(val)             # <<<<<<<<<<<<<<
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_var_centering", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":575
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+ * 
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
  * 
- *     atype = np2adiostype(val_.dtype)
  */
-  /*else*/ {
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = NULL;
-    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    if (!__pyx_t_5) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 506, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-    } else {
-      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
-      __Pyx_INCREF(__pyx_v_val);
-      __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_val);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 506, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_6);
-      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    }
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 506, __pyx_L1_error)
-    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
-    __pyx_t_6 = 0;
-  }
-  __pyx_L3:;
 
-  /* "adios_mpi.pyx":508
- *         val_ = np.array(val)
+static PyObject *__pyx_pw_9adios_mpi_47define_var_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_timesteps(PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_timesteps", 0);
+
+  /* "adios_mpi.pyx":576
  * 
- *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))             # <<<<<<<<<<<<<<
  * 
- *     cdef char * pt1
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 508, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 508, __pyx_L1_error)
-  __pyx_t_4 = __pyx_f_9adios_mpi_np2adiostype(((PyArray_Descr *)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 508, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timesteps, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 576, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 576, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 576, __pyx_L1_error)
+  __pyx_r = adios_define_var_timesteps(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":575
+ *     return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+ * 
+ * cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_var_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_47define_var_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_46define_var_timesteps[] = "define_var_timesteps(str timesteps, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_47define_var_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timesteps = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_timesteps (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timesteps,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timesteps)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timesteps", 1, 3, 3, 1); __PYX_ERR(0, 575, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timesteps", 1, 3, 3, 2); __PYX_ERR(0, 575, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_timesteps") < 0)) __PYX_ERR(0, 575, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timesteps = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 575, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_timesteps", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 575, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_var_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timesteps), (&PyString_Type), 1, "timesteps", 1))) __PYX_ERR(0, 575, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 575, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_46define_var_timesteps(__pyx_self, __pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_46define_var_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_timesteps", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_var_timesteps(__pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_var_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":578
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+ * 
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_49define_var_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_timescale(PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_timescale", 0);
+
+  /* "adios_mpi.pyx":579
+ * 
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timescale, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 579, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 579, __pyx_L1_error)
+  __pyx_r = adios_define_var_timescale(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":578
+ *     return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+ * 
+ * cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_var_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_49define_var_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_48define_var_timescale[] = "define_var_timescale(str timescale, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_49define_var_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timescale = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_timescale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timescale,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timescale)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timescale", 1, 3, 3, 1); __PYX_ERR(0, 578, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timescale", 1, 3, 3, 2); __PYX_ERR(0, 578, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_timescale") < 0)) __PYX_ERR(0, 578, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timescale = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 578, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_timescale", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 578, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_var_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timescale), (&PyString_Type), 1, "timescale", 1))) __PYX_ERR(0, 578, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 578, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_48define_var_timescale(__pyx_self, __pyx_v_timescale, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_48define_var_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_timescale", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_var_timescale(__pyx_v_timescale, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_var_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":581
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_51define_var_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_timeseriesformat(PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_timeseriesformat", 0);
+
+  /* "adios_mpi.pyx":582
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timeseries, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 582, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 582, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 582, __pyx_L1_error)
+  __pyx_r = adios_define_var_timeseriesformat(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":581
+ *     return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_var_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_51define_var_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_50define_var_timeseriesformat[] = "define_var_timeseriesformat(str timeseries, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_51define_var_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timeseries = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_timeseriesformat (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeseries,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeseries)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timeseriesformat", 1, 3, 3, 1); __PYX_ERR(0, 581, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_timeseriesformat", 1, 3, 3, 2); __PYX_ERR(0, 581, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_timeseriesformat") < 0)) __PYX_ERR(0, 581, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timeseries = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 581, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_timeseriesformat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 581, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_var_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timeseries), (&PyString_Type), 1, "timeseries", 1))) __PYX_ERR(0, 581, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 581, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_50define_var_timeseriesformat(__pyx_self, __pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_50define_var_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_timeseriesformat", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_var_timeseriesformat(__pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_var_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":584
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_53define_var_hyperslab(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_var_hyperslab(PyObject *__pyx_v_hyperslab, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_var_hyperslab", 0);
+
+  /* "adios_mpi.pyx":585
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_hyperslab, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 585, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 585, __pyx_L1_error)
+  __pyx_r = adios_define_var_hyperslab(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":584
+ *     return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_var_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_53define_var_hyperslab(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_52define_var_hyperslab[] = "define_var_hyperslab(str hyperslab, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_53define_var_hyperslab(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_hyperslab = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_var_hyperslab (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_hyperslab,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_hyperslab)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_hyperslab", 1, 3, 3, 1); __PYX_ERR(0, 584, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_var_hyperslab", 1, 3, 3, 2); __PYX_ERR(0, 584, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var_hyperslab") < 0)) __PYX_ERR(0, 584, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_hyperslab = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_var_hyperslab", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 584, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_var_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hyperslab), (&PyString_Type), 1, "hyperslab", 1))) __PYX_ERR(0, 584, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 584, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_52define_var_hyperslab(__pyx_self, __pyx_v_hyperslab, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_52define_var_hyperslab(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hyperslab, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_var_hyperslab", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_var_hyperslab(__pyx_v_hyperslab, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_var_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":587
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_55define_mesh_timevarying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timevarying(PyObject *__pyx_v_timevarying, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timevarying", 0);
+
+  /* "adios_mpi.pyx":588
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timevarying, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 588, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 588, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 588, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timevarying(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":587
+ *     return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_timevarying", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_55define_mesh_timevarying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_54define_mesh_timevarying[] = "define_mesh_timevarying(str timevarying, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_55define_mesh_timevarying(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timevarying = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timevarying (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timevarying,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timevarying)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timevarying", 1, 3, 3, 1); __PYX_ERR(0, 587, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timevarying", 1, 3, 3, 2); __PYX_ERR(0, 587, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timevarying") < 0)) __PYX_ERR(0, 587, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timevarying = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 587, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timevarying", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 587, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timevarying", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timevarying), (&PyString_Type), 1, "timevarying", 1))) __PYX_ERR(0, 587, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 587, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_54define_mesh_timevarying(__pyx_self, __pyx_v_timevarying, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_54define_mesh_timevarying(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timevarying, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timevarying", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_timevarying(__pyx_v_timevarying, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timevarying", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":590
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_57define_mesh_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timesteps(PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timesteps", 0);
+
+  /* "adios_mpi.pyx":591
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timesteps, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timesteps(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":590
+ *     return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_57define_mesh_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_56define_mesh_timesteps[] = "define_mesh_timesteps(str timesteps, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_57define_mesh_timesteps(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timesteps = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timesteps (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timesteps,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timesteps)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timesteps", 1, 3, 3, 1); __PYX_ERR(0, 590, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timesteps", 1, 3, 3, 2); __PYX_ERR(0, 590, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timesteps") < 0)) __PYX_ERR(0, 590, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timesteps = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 590, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timesteps", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 590, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timesteps), (&PyString_Type), 1, "timesteps", 1))) __PYX_ERR(0, 590, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 590, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_56define_mesh_timesteps(__pyx_self, __pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_56define_mesh_timesteps(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timesteps, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timesteps", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_timesteps(__pyx_v_timesteps, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timesteps", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":593
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_59define_mesh_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timescale(PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timescale", 0);
+
+  /* "adios_mpi.pyx":594
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timescale, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timescale(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":593
+ *     return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_59define_mesh_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_58define_mesh_timescale[] = "define_mesh_timescale(str timescale, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_59define_mesh_timescale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timescale = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timescale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timescale,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timescale)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timescale", 1, 3, 3, 1); __PYX_ERR(0, 593, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timescale", 1, 3, 3, 2); __PYX_ERR(0, 593, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timescale") < 0)) __PYX_ERR(0, 593, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timescale = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 593, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timescale", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 593, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timescale), (&PyString_Type), 1, "timescale", 1))) __PYX_ERR(0, 593, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_58define_mesh_timescale(__pyx_self, __pyx_v_timescale, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_58define_mesh_timescale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timescale, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timescale", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_timescale(__pyx_v_timescale, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timescale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":596
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_61define_mesh_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_timeseriesformat(PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  __Pyx_RefNannySetupContext("define_mesh_timeseriesformat", 0);
+
+  /* "adios_mpi.pyx":597
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_mesh_uniform (str dimensions,
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_timeseries, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_r = adios_define_mesh_timeseriesformat(__pyx_t_2, __pyx_v_group_id, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":596
+ *     return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):             # <<<<<<<<<<<<<<
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_61define_mesh_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_60define_mesh_timeseriesformat[] = "define_mesh_timeseriesformat(str timeseries, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_61define_mesh_timeseriesformat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_timeseries = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_timeseriesformat (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_timeseries,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeseries)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timeseriesformat", 1, 3, 3, 1); __PYX_ERR(0, 596, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_timeseriesformat", 1, 3, 3, 2); __PYX_ERR(0, 596, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_timeseriesformat") < 0)) __PYX_ERR(0, 596, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_timeseries = ((PyObject*)values[0]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[1]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 596, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_timeseriesformat", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 596, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_timeseries), (&PyString_Type), 1, "timeseries", 1))) __PYX_ERR(0, 596, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_60define_mesh_timeseriesformat(__pyx_self, __pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_60define_mesh_timeseriesformat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeseries, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_timeseriesformat", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_timeseriesformat(__pyx_v_timeseries, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_timeseriesformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":599
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_uniform (str dimensions,             # <<<<<<<<<<<<<<
+ *                                    str origin,
+ *                                    str spacing,
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_63define_mesh_uniform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_uniform(PyObject *__pyx_v_dimensions, PyObject *__pyx_v_origin, PyObject *__pyx_v_spacing, PyObject *__pyx_v_maximum, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  char *__pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  char const *__pyx_t_12;
+  __Pyx_RefNannySetupContext("define_mesh_uniform", 0);
+
+  /* "adios_mpi.pyx":607
+ *                                    str name
+ *                                   ):
+ *     return adios_define_mesh_uniform (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                    s2b(origin),
+ *                                    s2b(spacing),
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 607, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":608
+ *                                   ):
+ *     return adios_define_mesh_uniform (s2b(dimensions),
+ *                                    s2b(origin),             # <<<<<<<<<<<<<<
+ *                                    s2b(spacing),
+ *                                    s2b(maximum),
+ */
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_origin, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 608, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":609
+ *     return adios_define_mesh_uniform (s2b(dimensions),
+ *                                    s2b(origin),
+ *                                    s2b(spacing),             # <<<<<<<<<<<<<<
+ *                                    s2b(maximum),
+ *                                    s2b(nspace),
+ */
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_spacing, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 609, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 609, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":610
+ *                                    s2b(origin),
+ *                                    s2b(spacing),
+ *                                    s2b(maximum),             # <<<<<<<<<<<<<<
+ *                                    s2b(nspace),
+ *                                    group_id,
+ */
+  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_maximum, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 610, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 610, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":611
+ *                                    s2b(spacing),
+ *                                    s2b(maximum),
+ *                                    s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                    group_id,
+ *                                    s2b(name)
+ */
+  __pyx_t_9 = __pyx_f_9adios_mpi_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 611, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 611, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":613
+ *                                    s2b(nspace),
+ *                                    group_id,
+ *                                    s2b(name)             # <<<<<<<<<<<<<<
+ *                                   )
+ * 
+ */
+  __pyx_t_11 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 613, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_t_11); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 613, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":607
+ *                                    str name
+ *                                   ):
+ *     return adios_define_mesh_uniform (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                    s2b(origin),
+ *                                    s2b(spacing),
+ */
+  __pyx_r = adios_define_mesh_uniform(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_8, __pyx_t_10, __pyx_v_group_id, __pyx_t_12);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":599
+ *     return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+ * 
+ * cpdef int define_mesh_uniform (str dimensions,             # <<<<<<<<<<<<<<
+ *                                    str origin,
+ *                                    str spacing,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_uniform", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_63define_mesh_uniform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_62define_mesh_uniform[] = "define_mesh_uniform(str dimensions, str origin, str spacing, str maximum, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_63define_mesh_uniform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_origin = 0;
+  PyObject *__pyx_v_spacing = 0;
+  PyObject *__pyx_v_maximum = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_uniform (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dimensions,&__pyx_n_s_origin,&__pyx_n_s_spacing,&__pyx_n_s_maximum,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_origin)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 1); __PYX_ERR(0, 599, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spacing)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 2); __PYX_ERR(0, 599, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maximum)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 3); __PYX_ERR(0, 599, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 4); __PYX_ERR(0, 599, __pyx_L3_error)
+        }
+        case  5:
+        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 5); __PYX_ERR(0, 599, __pyx_L3_error)
+        }
+        case  6:
+        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, 6); __PYX_ERR(0, 599, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_uniform") < 0)) __PYX_ERR(0, 599, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+    }
+    __pyx_v_dimensions = ((PyObject*)values[0]);
+    __pyx_v_origin = ((PyObject*)values[1]);
+    __pyx_v_spacing = ((PyObject*)values[2]);
+    __pyx_v_maximum = ((PyObject*)values[3]);
+    __pyx_v_nspace = ((PyObject*)values[4]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[5]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 604, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[6]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_uniform", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 599, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_uniform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 599, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_origin), (&PyString_Type), 1, "origin", 1))) __PYX_ERR(0, 600, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_spacing), (&PyString_Type), 1, "spacing", 1))) __PYX_ERR(0, 601, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_maximum), (&PyString_Type), 1, "maximum", 1))) __PYX_ERR(0, 602, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 603, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_62define_mesh_uniform(__pyx_self, __pyx_v_dimensions, __pyx_v_origin, __pyx_v_spacing, __pyx_v_maximum, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_62define_mesh_uniform(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_origin, PyObject *__pyx_v_spacing, PyObject *__pyx_v_maximum, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_uniform", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_uniform(__pyx_v_dimensions, __pyx_v_origin, __pyx_v_spacing, __pyx_v_maximum, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_uniform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":616
+ *                                   )
+ * 
+ * cpdef int define_mesh_rectilinear (str dimensions,             # <<<<<<<<<<<<<<
+ *                                        str coordinates,
+ *                                        str nspace,
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_65define_mesh_rectilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_rectilinear(PyObject *__pyx_v_dimensions, PyObject *__pyx_v_coordinates, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char const *__pyx_t_8;
+  __Pyx_RefNannySetupContext("define_mesh_rectilinear", 0);
+
+  /* "adios_mpi.pyx":622
+ *                                        str name
+ *                                       ):
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                        s2b(coordinates),
+ *                                        s2b(nspace),
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 622, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 622, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":623
+ *                                       ):
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),
+ *                                        s2b(coordinates),             # <<<<<<<<<<<<<<
+ *                                        s2b(nspace),
+ *                                        group_id,
+ */
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_coordinates, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 623, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 623, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":624
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),
+ *                                        s2b(coordinates),
+ *                                        s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                        group_id,
+ *                                        s2b(name)
+ */
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 624, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":626
+ *                                        s2b(nspace),
+ *                                        group_id,
+ *                                        s2b(name)             # <<<<<<<<<<<<<<
+ *                                       )
+ * 
+ */
+  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 626, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 626, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":622
+ *                                        str name
+ *                                       ):
+ *     return adios_define_mesh_rectilinear (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                        s2b(coordinates),
+ *                                        s2b(nspace),
+ */
+  __pyx_r = adios_define_mesh_rectilinear(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_v_group_id, __pyx_t_8);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":616
+ *                                   )
+ * 
+ * cpdef int define_mesh_rectilinear (str dimensions,             # <<<<<<<<<<<<<<
+ *                                        str coordinates,
+ *                                        str nspace,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_rectilinear", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_65define_mesh_rectilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_64define_mesh_rectilinear[] = "define_mesh_rectilinear(str dimensions, str coordinates, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_65define_mesh_rectilinear(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_coordinates = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_rectilinear (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dimensions,&__pyx_n_s_coordinates,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coordinates)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 1); __PYX_ERR(0, 616, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 2); __PYX_ERR(0, 616, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 3); __PYX_ERR(0, 616, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, 4); __PYX_ERR(0, 616, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_rectilinear") < 0)) __PYX_ERR(0, 616, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+    }
+    __pyx_v_dimensions = ((PyObject*)values[0]);
+    __pyx_v_coordinates = ((PyObject*)values[1]);
+    __pyx_v_nspace = ((PyObject*)values[2]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[3]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 619, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_rectilinear", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 616, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_rectilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 616, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_coordinates), (&PyString_Type), 1, "coordinates", 1))) __PYX_ERR(0, 617, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 618, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 620, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_64define_mesh_rectilinear(__pyx_self, __pyx_v_dimensions, __pyx_v_coordinates, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_64define_mesh_rectilinear(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_coordinates, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_rectilinear", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_rectilinear(__pyx_v_dimensions, __pyx_v_coordinates, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_rectilinear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":629
+ *                                       )
+ * 
+ * cpdef int define_mesh_structured (str dimensions,             # <<<<<<<<<<<<<<
+ *                                       str points,
+ *                                       str nspace,
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_67define_mesh_structured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_structured(PyObject *__pyx_v_dimensions, PyObject *__pyx_v_points, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char const *__pyx_t_8;
+  __Pyx_RefNannySetupContext("define_mesh_structured", 0);
+
+  /* "adios_mpi.pyx":635
+ *                                       str name
+ *                                      ):
+ *     return adios_define_mesh_structured (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                       s2b(points),
+ *                                       s2b(nspace),
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_dimensions, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 635, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":636
+ *                                      ):
+ *     return adios_define_mesh_structured (s2b(dimensions),
+ *                                       s2b(points),             # <<<<<<<<<<<<<<
+ *                                       s2b(nspace),
+ *                                       group_id,
+ */
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_points, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 636, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":637
+ *     return adios_define_mesh_structured (s2b(dimensions),
+ *                                       s2b(points),
+ *                                       s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                       group_id,
+ *                                       s2b(name)
+ */
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 637, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":639
+ *                                       s2b(nspace),
+ *                                       group_id,
+ *                                       s2b(name)             # <<<<<<<<<<<<<<
+ *                                      )
+ * 
+ */
+  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 639, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 639, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":635
+ *                                       str name
+ *                                      ):
+ *     return adios_define_mesh_structured (s2b(dimensions),             # <<<<<<<<<<<<<<
+ *                                       s2b(points),
+ *                                       s2b(nspace),
+ */
+  __pyx_r = adios_define_mesh_structured(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_v_group_id, __pyx_t_8);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":629
+ *                                       )
+ * 
+ * cpdef int define_mesh_structured (str dimensions,             # <<<<<<<<<<<<<<
+ *                                       str points,
+ *                                       str nspace,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_structured", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_67define_mesh_structured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_66define_mesh_structured[] = "define_mesh_structured(str dimensions, str points, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_67define_mesh_structured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dimensions = 0;
+  PyObject *__pyx_v_points = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_structured (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dimensions,&__pyx_n_s_points,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimensions)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_points)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 1); __PYX_ERR(0, 629, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 2); __PYX_ERR(0, 629, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 3); __PYX_ERR(0, 629, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, 4); __PYX_ERR(0, 629, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_structured") < 0)) __PYX_ERR(0, 629, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+    }
+    __pyx_v_dimensions = ((PyObject*)values[0]);
+    __pyx_v_points = ((PyObject*)values[1]);
+    __pyx_v_nspace = ((PyObject*)values[2]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[3]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 632, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_structured", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 629, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_structured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dimensions), (&PyString_Type), 1, "dimensions", 1))) __PYX_ERR(0, 629, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyString_Type), 1, "points", 1))) __PYX_ERR(0, 630, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 631, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 633, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_66define_mesh_structured(__pyx_self, __pyx_v_dimensions, __pyx_v_points, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_66define_mesh_structured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_points, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_structured", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_structured(__pyx_v_dimensions, __pyx_v_points, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_structured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":642
+ *                                      )
+ * 
+ * cpdef int define_mesh_unstructured (str points,             # <<<<<<<<<<<<<<
+ *                                         str data,
+ *                                         str count,
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_69define_mesh_unstructured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_mesh_unstructured(PyObject *__pyx_v_points, PyObject *__pyx_v_data, PyObject *__pyx_v_count, PyObject *__pyx_v_cell_type, PyObject *__pyx_v_npoints, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  char *__pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  char *__pyx_t_12;
+  PyObject *__pyx_t_13 = NULL;
+  char const *__pyx_t_14;
+  __Pyx_RefNannySetupContext("define_mesh_unstructured", 0);
+
+  /* "adios_mpi.pyx":651
+ *                                         str name
+ *                                        ):
+ *     return adios_define_mesh_unstructured (s2b(points),             # <<<<<<<<<<<<<<
+ *                                         s2b(data),
+ *                                         s2b(count),
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_points, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 651, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":652
+ *                                        ):
+ *     return adios_define_mesh_unstructured (s2b(points),
+ *                                         s2b(data),             # <<<<<<<<<<<<<<
+ *                                         s2b(count),
+ *                                         s2b(cell_type),
+ */
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_data, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 652, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 652, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":653
+ *     return adios_define_mesh_unstructured (s2b(points),
+ *                                         s2b(data),
+ *                                         s2b(count),             # <<<<<<<<<<<<<<
+ *                                         s2b(cell_type),
+ *                                         s2b(npoints),
+ */
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_count, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 653, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 653, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":654
+ *                                         s2b(data),
+ *                                         s2b(count),
+ *                                         s2b(cell_type),             # <<<<<<<<<<<<<<
+ *                                         s2b(npoints),
+ *                                         s2b(nspace),
+ */
+  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_cell_type, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 654, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 654, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":655
+ *                                         s2b(count),
+ *                                         s2b(cell_type),
+ *                                         s2b(npoints),             # <<<<<<<<<<<<<<
+ *                                         s2b(nspace),
+ *                                         group_id,
+ */
+  __pyx_t_9 = __pyx_f_9adios_mpi_s2b(__pyx_v_npoints, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 655, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_9); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 655, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":656
+ *                                         s2b(cell_type),
+ *                                         s2b(npoints),
+ *                                         s2b(nspace),             # <<<<<<<<<<<<<<
+ *                                         group_id,
+ *                                         s2b(name)
+ */
+  __pyx_t_11 = __pyx_f_9adios_mpi_s2b(__pyx_v_nspace, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 656, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = __Pyx_PyObject_AsString(__pyx_t_11); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":658
+ *                                         s2b(nspace),
+ *                                         group_id,
+ *                                         s2b(name)             # <<<<<<<<<<<<<<
+ *                                        )
+ * 
+ */
+  __pyx_t_13 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 658, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_13); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 658, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":651
+ *                                         str name
+ *                                        ):
+ *     return adios_define_mesh_unstructured (s2b(points),             # <<<<<<<<<<<<<<
+ *                                         s2b(data),
+ *                                         s2b(count),
+ */
+  __pyx_r = adios_define_mesh_unstructured(__pyx_t_2, __pyx_t_4, __pyx_t_6, __pyx_t_8, __pyx_t_10, __pyx_t_12, __pyx_v_group_id, __pyx_t_14);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":642
+ *                                      )
+ * 
+ * cpdef int define_mesh_unstructured (str points,             # <<<<<<<<<<<<<<
+ *                                         str data,
+ *                                         str count,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_WriteUnraisable("adios_mpi.define_mesh_unstructured", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_69define_mesh_unstructured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_68define_mesh_unstructured[] = "define_mesh_unstructured(str points, str data, str count, str cell_type, str npoints, str nspace, int64_t group_id, str name) -> int";
+static PyObject *__pyx_pw_9adios_mpi_69define_mesh_unstructured(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_points = 0;
+  PyObject *__pyx_v_data = 0;
+  PyObject *__pyx_v_count = 0;
+  PyObject *__pyx_v_cell_type = 0;
+  PyObject *__pyx_v_npoints = 0;
+  PyObject *__pyx_v_nspace = 0;
+  int64_t __pyx_v_group_id;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_mesh_unstructured (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_data,&__pyx_n_s_count,&__pyx_n_s_cell_type,&__pyx_n_s_npoints,&__pyx_n_s_nspace,&__pyx_n_s_group_id,&__pyx_n_s_name,0};
+    PyObject* values[8] = {0,0,0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
+        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_points)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 1); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 2); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cell_type)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 3); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_npoints)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 4); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+        case  5:
+        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 5); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+        case  6:
+        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group_id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 6); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+        case  7:
+        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, 7); __PYX_ERR(0, 642, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_mesh_unstructured") < 0)) __PYX_ERR(0, 642, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
+    }
+    __pyx_v_points = ((PyObject*)values[0]);
+    __pyx_v_data = ((PyObject*)values[1]);
+    __pyx_v_count = ((PyObject*)values[2]);
+    __pyx_v_cell_type = ((PyObject*)values[3]);
+    __pyx_v_npoints = ((PyObject*)values[4]);
+    __pyx_v_nspace = ((PyObject*)values[5]);
+    __pyx_v_group_id = __Pyx_PyInt_As_int64_t(values[6]); if (unlikely((__pyx_v_group_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 648, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[7]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_mesh_unstructured", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 642, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_mesh_unstructured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyString_Type), 1, "points", 1))) __PYX_ERR(0, 642, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), (&PyString_Type), 1, "data", 1))) __PYX_ERR(0, 643, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyString_Type), 1, "count", 1))) __PYX_ERR(0, 644, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cell_type), (&PyString_Type), 1, "cell_type", 1))) __PYX_ERR(0, 645, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_npoints), (&PyString_Type), 1, "npoints", 1))) __PYX_ERR(0, 646, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nspace), (&PyString_Type), 1, "nspace", 1))) __PYX_ERR(0, 647, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 649, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_68define_mesh_unstructured(__pyx_self, __pyx_v_points, __pyx_v_data, __pyx_v_count, __pyx_v_cell_type, __pyx_v_npoints, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_68define_mesh_unstructured(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_points, PyObject *__pyx_v_data, PyObject *__pyx_v_count, PyObject *__pyx_v_cell_type, PyObject *__pyx_v_npoints, PyObject *__pyx_v_nspace, int64_t __pyx_v_group_id, PyObject *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_mesh_unstructured", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_mesh_unstructured(__pyx_v_points, __pyx_v_data, __pyx_v_count, __pyx_v_cell_type, __pyx_v_npoints, __pyx_v_nspace, __pyx_v_group_id, __pyx_v_name, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_mesh_unstructured", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":661
+ *                                        )
+ * 
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_71define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_attribute(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  __Pyx_RefNannySetupContext("define_attribute", 0);
+
+  /* "adios_mpi.pyx":668
+ *                             str var):
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),             # <<<<<<<<<<<<<<
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 668, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":669
+ *     return adios_define_attribute (group,
+ *                                    s2b(name),
+ *                                    s2b(path),             # <<<<<<<<<<<<<<
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
+ */
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 669, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 669, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":671
+ *                                    s2b(path),
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),             # <<<<<<<<<<<<<<
+ *                                    s2b(var))
+ * 
+ */
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_value, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 671, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 671, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":672
+ *                                    <ADIOS_DATATYPES> atype,
+ *                                    s2b(value),
+ *                                    s2b(var))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int define_attribute_byvalue (int64_t group,
+ */
+  __pyx_t_7 = __pyx_f_9adios_mpi_s2b(__pyx_v_var, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 672, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_7); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 672, __pyx_L1_error)
+
+  /* "adios_mpi.pyx":667
+ *                             str value,
+ *                             str var):
+ *     return adios_define_attribute (group,             # <<<<<<<<<<<<<<
+ *                                    s2b(name),
+ *                                    s2b(path),
+ */
+  __pyx_r = adios_define_attribute(__pyx_v_group, __pyx_t_2, __pyx_t_4, ((ADIOS_DATATYPES)__pyx_v_atype), __pyx_t_6, __pyx_t_8);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":661
+ *                                        )
+ * 
+ * cpdef int define_attribute (int64_t group,             # <<<<<<<<<<<<<<
+ *                             str name,
+ *                             str path,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_71define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_70define_attribute[] = "define_attribute(int64_t group, str name, str path, int atype, str value, str var) -> int";
+static PyObject *__pyx_pw_9adios_mpi_71define_attribute(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_group;
+  PyObject *__pyx_v_name = 0;
+  PyObject *__pyx_v_path = 0;
+  int __pyx_v_atype;
+  PyObject *__pyx_v_value = 0;
+  PyObject *__pyx_v_var = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("define_attribute (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_name,&__pyx_n_s_path,&__pyx_n_s_atype,&__pyx_n_s_value,&__pyx_n_s_var,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_group)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 1); __PYX_ERR(0, 661, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 2); __PYX_ERR(0, 661, __pyx_L3_error)
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_atype)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 3); __PYX_ERR(0, 661, __pyx_L3_error)
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 4); __PYX_ERR(0, 661, __pyx_L3_error)
+        }
+        case  5:
+        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, 5); __PYX_ERR(0, 661, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute") < 0)) __PYX_ERR(0, 661, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 661, __pyx_L3_error)
+    __pyx_v_name = ((PyObject*)values[1]);
+    __pyx_v_path = ((PyObject*)values[2]);
+    __pyx_v_atype = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_atype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 664, __pyx_L3_error)
+    __pyx_v_value = ((PyObject*)values[4]);
+    __pyx_v_var = ((PyObject*)values[5]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("define_attribute", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 661, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 662, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 663, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), (&PyString_Type), 1, "value", 1))) __PYX_ERR(0, 665, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_var), (&PyString_Type), 1, "var", 1))) __PYX_ERR(0, 666, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_70define_attribute(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_70define_attribute(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, int __pyx_v_atype, PyObject *__pyx_v_value, PyObject *__pyx_v_var) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("define_attribute", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_attribute(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_atype, __pyx_v_value, __pyx_v_var, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.define_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":674
+ *                                    s2b(var))
+ * 
+ * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
+ *                                     str name,
+ *                                     str path,
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_73define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyArrayObject *__pyx_v_val_ = 0;
+  PyObject *__pyx_v_atype = NULL;
+  char *__pyx_v_pt1;
+  char **__pyx_v_pt2;
+  PyObject *__pyx_v_bstr = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  char *__pyx_t_7;
+  char *__pyx_t_8;
+  ADIOS_DATATYPES __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  int __pyx_t_11;
+  __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
+
+  /* "adios_mpi.pyx":679
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
+ */
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_5numpy_ndarray); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":680
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 680, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_contiguous); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 680, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 680, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_2) {
+
+      /* "adios_mpi.pyx":681
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:
+ *             val_ = val             # <<<<<<<<<<<<<<
+ *         else:
+ *             val_ = np.array(val, copy=True)
+ */
+      if (!(likely(((__pyx_v_val) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 681, __pyx_L1_error)
+      __pyx_t_4 = __pyx_v_val;
+      __Pyx_INCREF(__pyx_t_4);
+      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_4);
+      __pyx_t_4 = 0;
+
+      /* "adios_mpi.pyx":680
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):
+ *         if val.flags.contiguous:             # <<<<<<<<<<<<<<
+ *             val_ = val
+ *         else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "adios_mpi.pyx":683
+ *             val_ = val
+ *         else:
+ *             val_ = np.array(val, copy=True)             # <<<<<<<<<<<<<<
+ *     else:
+ *         val_ = np.array(val)
+ */
+    /*else*/ {
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 683, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 683, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
+      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 683, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_copy, Py_True) < 0) __PYX_ERR(0, 683, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 683, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 683, __pyx_L1_error)
+      __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
+      __pyx_t_6 = 0;
+    }
+    __pyx_L4:;
+
+    /* "adios_mpi.pyx":679
+ *                                     val):
+ *     cdef np.ndarray val_
+ *     if isinstance(val, (np.ndarray)):             # <<<<<<<<<<<<<<
+ *         if val.flags.contiguous:
+ *             val_ = val
+ */
+    goto __pyx_L3;
+  }
+
+  /* "adios_mpi.pyx":685
+ *             val_ = np.array(val, copy=True)
+ *     else:
+ *         val_ = np.array(val)             # <<<<<<<<<<<<<<
+ * 
+ *     atype = np2adiostype(val_.dtype)
+ */
+  /*else*/ {
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    if (!__pyx_t_5) {
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 685, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+    } else {
+      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_val);
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 685, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 685, __pyx_L1_error)
+    __pyx_v_val_ = ((PyArrayObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
+  }
+  __pyx_L3:;
+
+  /* "adios_mpi.pyx":687
+ *         val_ = np.array(val)
+ * 
+ *     atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef char * pt1
+ */
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 687, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 687, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_9adios_mpi_np2adiostype(((PyArray_Descr *)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_atype = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":512
+  /* "adios_mpi.pyx":691
  *     cdef char * pt1
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
  *         if (val_.size == 1):
  *             bstr = s2b(str(val))
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 691, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_char); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_char); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 691, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 691, __pyx_L1_error)
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 691, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_1;
   __pyx_L6_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":513
+    /* "adios_mpi.pyx":692
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):
  *         if (val_.size == 1):             # <<<<<<<<<<<<<<
  *             bstr = s2b(str(val))
  *             pt1 = PyBytes_AsString(bstr)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 513, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 692, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 513, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 513, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 692, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":514
+      /* "adios_mpi.pyx":693
  *     if (val_.dtype.char in ('S', 'U')):
  *         if (val_.size == 1):
  *             bstr = s2b(str(val))             # <<<<<<<<<<<<<<
  *             pt1 = PyBytes_AsString(bstr)
  *             adios_define_attribute_byvalue (group,
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_val);
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 514, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 514, __pyx_L1_error)
-      __pyx_t_4 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 514, __pyx_L1_error)
+      if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 693, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_t_6), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_bstr = ((PyObject*)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "adios_mpi.pyx":515
+      /* "adios_mpi.pyx":694
  *         if (val_.size == 1):
  *             bstr = s2b(str(val))
  *             pt1 = PyBytes_AsString(bstr)             # <<<<<<<<<<<<<<
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),
  */
-      __pyx_t_7 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(0, 515, __pyx_L1_error)
+      __pyx_t_7 = PyBytes_AsString(__pyx_v_bstr); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(0, 694, __pyx_L1_error)
       __pyx_v_pt1 = __pyx_t_7;
 
-      /* "adios_mpi.pyx":517
+      /* "adios_mpi.pyx":696
  *             pt1 = PyBytes_AsString(bstr)
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),             # <<<<<<<<<<<<<<
  *                                             s2b(path),
  *                                             DATATYPE.string,
  */
-      __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 517, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 696, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 517, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 696, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":518
+      /* "adios_mpi.pyx":697
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),
  *                                             s2b(path),             # <<<<<<<<<<<<<<
  *                                             DATATYPE.string,
  *                                             1,
  */
-      __pyx_t_6 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 518, __pyx_L1_error)
+      __pyx_t_6 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 697, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 518, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 697, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":519
+      /* "adios_mpi.pyx":698
  *                                             s2b(name),
  *                                             s2b(path),
  *                                             DATATYPE.string,             # <<<<<<<<<<<<<<
  *                                             1,
  *                                             <void *> pt1)
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 519, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 519, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_5)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 519, __pyx_L1_error)
+      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_5)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "adios_mpi.pyx":516
+      /* "adios_mpi.pyx":695
  *             bstr = s2b(str(val))
  *             pt1 = PyBytes_AsString(bstr)
  *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7633,7 +10373,7 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "adios_mpi.pyx":513
+      /* "adios_mpi.pyx":692
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):
  *         if (val_.size == 1):             # <<<<<<<<<<<<<<
@@ -7643,7 +10383,7 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
       goto __pyx_L8;
     }
 
-    /* "adios_mpi.pyx":523
+    /* "adios_mpi.pyx":702
  *                                             <void *> pt1)
  *         else:
  *             pt2 = to_cstring_array(val)             # <<<<<<<<<<<<<<
@@ -7653,53 +10393,53 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
     /*else*/ {
       __pyx_v_pt2 = __pyx_f_9adios_mpi_to_cstring_array(__pyx_v_val);
 
-      /* "adios_mpi.pyx":525
+      /* "adios_mpi.pyx":704
  *             pt2 = to_cstring_array(val)
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),             # <<<<<<<<<<<<<<
  *                                             s2b(path),
  *                                             DATATYPE.string_array,
  */
-      __pyx_t_6 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 525, __pyx_L1_error)
+      __pyx_t_6 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 704, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 525, __pyx_L1_error)
+      __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 704, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":526
+      /* "adios_mpi.pyx":705
  *             adios_define_attribute_byvalue (group,
  *                                             s2b(name),
  *                                             s2b(path),             # <<<<<<<<<<<<<<
  *                                             DATATYPE.string_array,
  *                                             len(val),
  */
-      __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 526, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 705, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 526, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 705, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":527
+      /* "adios_mpi.pyx":706
  *                                             s2b(name),
  *                                             s2b(path),
  *                                             DATATYPE.string_array,             # <<<<<<<<<<<<<<
  *                                             len(val),
  *                                             <void *> pt2)
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 527, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 706, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 527, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 706, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L1_error)
+      __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 706, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":528
+      /* "adios_mpi.pyx":707
  *                                             s2b(path),
  *                                             DATATYPE.string_array,
  *                                             len(val),             # <<<<<<<<<<<<<<
  *                                             <void *> pt2)
  *             free(pt2)
  */
-      __pyx_t_10 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 528, __pyx_L1_error)
+      __pyx_t_10 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 707, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":524
+      /* "adios_mpi.pyx":703
  *         else:
  *             pt2 = to_cstring_array(val)
  *             adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7710,7 +10450,7 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "adios_mpi.pyx":530
+      /* "adios_mpi.pyx":709
  *                                             len(val),
  *                                             <void *> pt2)
  *             free(pt2)             # <<<<<<<<<<<<<<
@@ -7721,7 +10461,7 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
     }
     __pyx_L8:;
 
-    /* "adios_mpi.pyx":512
+    /* "adios_mpi.pyx":691
  *     cdef char * pt1
  *     cdef char ** pt2
  *     if (val_.dtype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
@@ -7731,7 +10471,7 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
     goto __pyx_L5;
   }
 
-  /* "adios_mpi.pyx":532
+  /* "adios_mpi.pyx":711
  *             free(pt2)
  *     else:
  *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7740,50 +10480,50 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
  */
   /*else*/ {
 
-    /* "adios_mpi.pyx":533
+    /* "adios_mpi.pyx":712
  *     else:
  *         adios_define_attribute_byvalue (group,
  *                                         s2b(name),             # <<<<<<<<<<<<<<
  *                                         s2b(path),
  *                                         <ADIOS_DATATYPES> atype,
  */
-    __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 533, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 712, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 533, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 712, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":534
+    /* "adios_mpi.pyx":713
  *         adios_define_attribute_byvalue (group,
  *                                         s2b(name),
  *                                         s2b(path),             # <<<<<<<<<<<<<<
  *                                         <ADIOS_DATATYPES> atype,
  *                                         val_.size,
  */
-    __pyx_t_6 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 534, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_9adios_mpi_s2b(__pyx_v_path, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 713, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 534, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 713, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":535
+    /* "adios_mpi.pyx":714
  *                                         s2b(name),
  *                                         s2b(path),
  *                                         <ADIOS_DATATYPES> atype,             # <<<<<<<<<<<<<<
  *                                         val_.size,
  *                                         <void *> val_.data)
  */
-    __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 535, __pyx_L1_error)
+    __pyx_t_9 = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_v_atype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 714, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":536
+    /* "adios_mpi.pyx":715
  *                                         s2b(path),
  *                                         <ADIOS_DATATYPES> atype,
  *                                         val_.size,             # <<<<<<<<<<<<<<
  *                                         <void *> val_.data)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 536, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_val_), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 715, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 536, __pyx_L1_error)
+    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 715, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":532
+    /* "adios_mpi.pyx":711
  *             free(pt2)
  *     else:
  *         adios_define_attribute_byvalue (group,             # <<<<<<<<<<<<<<
@@ -7796,7 +10536,7 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
   }
   __pyx_L5:;
 
-  /* "adios_mpi.pyx":495
+  /* "adios_mpi.pyx":674
  *                                    s2b(var))
  * 
  * cpdef int define_attribute_byvalue (int64_t group,             # <<<<<<<<<<<<<<
@@ -7823,9 +10563,9 @@ static int __pyx_f_9adios_mpi_define_attribute_byvalue(int64_t __pyx_v_group, Py
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_43define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_42define_attribute_byvalue[] = "define_attribute_byvalue(int64_t group, str name, str path, val) -> int";
-static PyObject *__pyx_pw_9adios_mpi_43define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_73define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_72define_attribute_byvalue[] = "define_attribute_byvalue(int64_t group, str name, str path, val) -> int";
+static PyObject *__pyx_pw_9adios_mpi_73define_attribute_byvalue(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_group;
   PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_path = 0;
@@ -7855,21 +10595,21 @@ static PyObject *__pyx_pw_9adios_mpi_43define_attribute_byvalue(PyObject *__pyx_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 1); __PYX_ERR(0, 495, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 1); __PYX_ERR(0, 674, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 2); __PYX_ERR(0, 495, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 2); __PYX_ERR(0, 674, __pyx_L3_error)
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 3); __PYX_ERR(0, 495, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, 3); __PYX_ERR(0, 674, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute_byvalue") < 0)) __PYX_ERR(0, 495, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_attribute_byvalue") < 0)) __PYX_ERR(0, 674, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -7879,22 +10619,22 @@ static PyObject *__pyx_pw_9adios_mpi_43define_attribute_byvalue(PyObject *__pyx_
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L3_error)
+    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 674, __pyx_L3_error)
     __pyx_v_name = ((PyObject*)values[1]);
     __pyx_v_path = ((PyObject*)values[2]);
     __pyx_v_val = values[3];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 495, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_attribute_byvalue", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 674, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.define_attribute_byvalue", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 496, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 497, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_42define_attribute_byvalue(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 675, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 676, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_72define_attribute_byvalue(__pyx_self, __pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val);
 
   /* function exit code */
   goto __pyx_L0;
@@ -7905,13 +10645,13 @@ static PyObject *__pyx_pw_9adios_mpi_43define_attribute_byvalue(PyObject *__pyx_
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_42define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val) {
+static PyObject *__pyx_pf_9adios_mpi_72define_attribute_byvalue(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_name, PyObject *__pyx_v_path, PyObject *__pyx_v_val) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("define_attribute_byvalue", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 495, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_define_attribute_byvalue(__pyx_v_group, __pyx_v_name, __pyx_v_path, __pyx_v_val, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 674, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -7928,7 +10668,7 @@ static PyObject *__pyx_pf_9adios_mpi_42define_attribute_byvalue(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":539
+/* "adios_mpi.pyx":718
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
@@ -7936,7 +10676,7 @@ static PyObject *__pyx_pf_9adios_mpi_42define_attribute_byvalue(CYTHON_UNUSED Py
  *                          str parameters = "",
  */
 
-static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_75select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_f_9adios_mpi_select_method(int64_t __pyx_v_group, PyObject *__pyx_v_method, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_select_method *__pyx_optional_args) {
   PyObject *__pyx_v_parameters = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_base_path = ((PyObject*)__pyx_kp_s__10);
@@ -7958,40 +10698,40 @@ static int __pyx_f_9adios_mpi_select_method(int64_t __pyx_v_group, PyObject *__p
     }
   }
 
-  /* "adios_mpi.pyx":544
+  /* "adios_mpi.pyx":723
  *                          str base_path = ""):
  *     return adios_select_method (group,
  *                                 s2b(method),             # <<<<<<<<<<<<<<
  *                                 s2b(parameters),
  *                                 s2b(base_path))
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_method, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_method, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 544, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 723, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":545
+  /* "adios_mpi.pyx":724
  *     return adios_select_method (group,
  *                                 s2b(method),
  *                                 s2b(parameters),             # <<<<<<<<<<<<<<
  *                                 s2b(base_path))
  * 
  */
-  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 545, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_9adios_mpi_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 724, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 545, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 724, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":546
+  /* "adios_mpi.pyx":725
  *                                 s2b(method),
  *                                 s2b(parameters),
  *                                 s2b(base_path))             # <<<<<<<<<<<<<<
  * 
- * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):
  */
-  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_base_path, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 546, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_9adios_mpi_s2b(__pyx_v_base_path, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 546, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 725, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":543
+  /* "adios_mpi.pyx":722
  *                          str parameters = "",
  *                          str base_path = ""):
  *     return adios_select_method (group,             # <<<<<<<<<<<<<<
@@ -8004,7 +10744,7 @@ static int __pyx_f_9adios_mpi_select_method(int64_t __pyx_v_group, PyObject *__p
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":539
+  /* "adios_mpi.pyx":718
  *                                         <void *> val_.data)
  * 
  * cpdef int select_method (int64_t group,             # <<<<<<<<<<<<<<
@@ -8025,9 +10765,9 @@ static int __pyx_f_9adios_mpi_select_method(int64_t __pyx_v_group, PyObject *__p
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_44select_method[] = "select_method(int64_t group, str method, str parameters='', str base_path='') -> int";
-static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_75select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_74select_method[] = "select_method(int64_t group, str method, str parameters='', str base_path='') -> int";
+static PyObject *__pyx_pw_9adios_mpi_75select_method(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   int64_t __pyx_v_group;
   PyObject *__pyx_v_method = 0;
   PyObject *__pyx_v_parameters = 0;
@@ -8059,7 +10799,7 @@ static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObj
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); __PYX_ERR(0, 539, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, 1); __PYX_ERR(0, 718, __pyx_L3_error)
         }
         case  2:
         if (kw_args > 0) {
@@ -8073,7 +10813,7 @@ static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_method") < 0)) __PYX_ERR(0, 539, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_method") < 0)) __PYX_ERR(0, 718, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -8085,23 +10825,23 @@ static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObj
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 539, __pyx_L3_error)
+    __pyx_v_group = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_group == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 718, __pyx_L3_error)
     __pyx_v_method = ((PyObject*)values[1]);
     __pyx_v_parameters = ((PyObject*)values[2]);
     __pyx_v_base_path = ((PyObject*)values[3]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 539, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("select_method", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 718, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.select_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 540, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 541, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base_path), (&PyString_Type), 1, "base_path", 1))) __PYX_ERR(0, 542, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_44select_method(__pyx_self, __pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 719, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 720, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base_path), (&PyString_Type), 1, "base_path", 1))) __PYX_ERR(0, 721, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_74select_method(__pyx_self, __pyx_v_group, __pyx_v_method, __pyx_v_parameters, __pyx_v_base_path);
 
   /* function exit code */
   goto __pyx_L0;
@@ -8112,7 +10852,7 @@ static PyObject *__pyx_pw_9adios_mpi_45select_method(PyObject *__pyx_self, PyObj
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_44select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path) {
+static PyObject *__pyx_pf_9adios_mpi_74select_method(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_group, PyObject *__pyx_v_method, PyObject *__pyx_v_parameters, PyObject *__pyx_v_base_path) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -8124,7 +10864,7 @@ static PyObject *__pyx_pf_9adios_mpi_44select_method(CYTHON_UNUSED PyObject *__p
   __pyx_t_2.parameters = __pyx_v_parameters;
   __pyx_t_2.base_path = __pyx_v_base_path;
   __pyx_t_1 = __pyx_f_9adios_mpi_select_method(__pyx_v_group, __pyx_v_method, 0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 539, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 718, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -8141,7 +10881,352 @@ static PyObject *__pyx_pf_9adios_mpi_44select_method(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":553
+/* "adios_mpi.pyx":727
+ *                                 s2b(base_path))
+ * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):             # <<<<<<<<<<<<<<
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_77set_transform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_set_transform(int64_t __pyx_v_var_id, PyObject *__pyx_v_transform_type_str, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char const *__pyx_t_2;
+  __Pyx_RefNannySetupContext("set_transform", 0);
+
+  /* "adios_mpi.pyx":728
+ * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):
+ *     return adios_set_transform (var_id, s2b(transform_type_str))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):
+ */
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_transform_type_str, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 728, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 728, __pyx_L1_error)
+  __pyx_r = adios_set_transform(__pyx_v_var_id, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":727
+ *                                 s2b(base_path))
+ * 
+ * cpdef int set_transform (int64_t var_id, str transform_type_str):             # <<<<<<<<<<<<<<
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("adios_mpi.set_transform", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_77set_transform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_76set_transform[] = "set_transform(int64_t var_id, str transform_type_str) -> int";
+static PyObject *__pyx_pw_9adios_mpi_77set_transform(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_var_id;
+  PyObject *__pyx_v_transform_type_str = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_transform (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_var_id,&__pyx_n_s_transform_type_str,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var_id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform_type_str)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_transform", 1, 2, 2, 1); __PYX_ERR(0, 727, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_transform") < 0)) __PYX_ERR(0, 727, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_var_id = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_var_id == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 727, __pyx_L3_error)
+    __pyx_v_transform_type_str = ((PyObject*)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_transform", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 727, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.set_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_transform_type_str), (&PyString_Type), 1, "transform_type_str", 1))) __PYX_ERR(0, 727, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_76set_transform(__pyx_self, __pyx_v_var_id, __pyx_v_transform_type_str);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_76set_transform(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_var_id, PyObject *__pyx_v_transform_type_str) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_transform", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_set_transform(__pyx_v_var_id, __pyx_v_transform_type_str, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.set_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":730
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):             # <<<<<<<<<<<<<<
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_79set_max_buffer_size(PyObject *__pyx_self, PyObject *__pyx_arg_max_buffer_size_MB); /*proto*/
+static void __pyx_f_9adios_mpi_set_max_buffer_size(int64_t __pyx_v_max_buffer_size_MB, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_max_buffer_size", 0);
+
+  /* "adios_mpi.pyx":731
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):
+ *     adios_set_max_buffer_size (max_buffer_size_MB)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int set_time_aggregation (int64_t groupid,
+ */
+  adios_set_max_buffer_size(__pyx_v_max_buffer_size_MB);
+
+  /* "adios_mpi.pyx":730
+ *     return adios_set_transform (var_id, s2b(transform_type_str))
+ * 
+ * cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):             # <<<<<<<<<<<<<<
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ */
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_79set_max_buffer_size(PyObject *__pyx_self, PyObject *__pyx_arg_max_buffer_size_MB); /*proto*/
+static char __pyx_doc_9adios_mpi_78set_max_buffer_size[] = "set_max_buffer_size(int64_t max_buffer_size_MB) -> void";
+static PyObject *__pyx_pw_9adios_mpi_79set_max_buffer_size(PyObject *__pyx_self, PyObject *__pyx_arg_max_buffer_size_MB) {
+  int64_t __pyx_v_max_buffer_size_MB;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_max_buffer_size (wrapper)", 0);
+  assert(__pyx_arg_max_buffer_size_MB); {
+    __pyx_v_max_buffer_size_MB = __Pyx_PyInt_As_int64_t(__pyx_arg_max_buffer_size_MB); if (unlikely((__pyx_v_max_buffer_size_MB == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 730, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.set_max_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_78set_max_buffer_size(__pyx_self, ((int64_t)__pyx_v_max_buffer_size_MB));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_78set_max_buffer_size(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_max_buffer_size_MB) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_max_buffer_size", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_void_to_None(__pyx_f_9adios_mpi_set_max_buffer_size(__pyx_v_max_buffer_size_MB, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.set_max_buffer_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":733
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ * cpdef int set_time_aggregation (int64_t groupid,             # <<<<<<<<<<<<<<
+ *                                       uint64_t buffersize,
+ *                                       int64_t syncgroupid):
+ */
+
+static PyObject *__pyx_pw_9adios_mpi_81set_time_aggregation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_9adios_mpi_set_time_aggregation(int64_t __pyx_v_groupid, uint64_t __pyx_v_buffersize, int64_t __pyx_v_syncgroupid, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_time_aggregation", 0);
+
+  /* "adios_mpi.pyx":736
+ *                                       uint64_t buffersize,
+ *                                       int64_t syncgroupid):
+ *     return adios_set_time_aggregation (groupid,             # <<<<<<<<<<<<<<
+ *                                        buffersize,
+ *                                        syncgroupid)
+ */
+  __pyx_r = adios_set_time_aggregation(__pyx_v_groupid, __pyx_v_buffersize, __pyx_v_syncgroupid);
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":733
+ *     adios_set_max_buffer_size (max_buffer_size_MB)
+ * 
+ * cpdef int set_time_aggregation (int64_t groupid,             # <<<<<<<<<<<<<<
+ *                                       uint64_t buffersize,
+ *                                       int64_t syncgroupid):
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_81set_time_aggregation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_80set_time_aggregation[] = "set_time_aggregation(int64_t groupid, uint64_t buffersize, int64_t syncgroupid) -> int";
+static PyObject *__pyx_pw_9adios_mpi_81set_time_aggregation(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int64_t __pyx_v_groupid;
+  uint64_t __pyx_v_buffersize;
+  int64_t __pyx_v_syncgroupid;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_time_aggregation (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_groupid,&__pyx_n_s_buffersize,&__pyx_n_s_syncgroupid,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_groupid)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffersize)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 1, 3, 3, 1); __PYX_ERR(0, 733, __pyx_L3_error)
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_syncgroupid)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 1, 3, 3, 2); __PYX_ERR(0, 733, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_time_aggregation") < 0)) __PYX_ERR(0, 733, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_groupid = __Pyx_PyInt_As_int64_t(values[0]); if (unlikely((__pyx_v_groupid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 733, __pyx_L3_error)
+    __pyx_v_buffersize = __Pyx_PyInt_As_uint64_t(values[1]); if (unlikely((__pyx_v_buffersize == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L3_error)
+    __pyx_v_syncgroupid = __Pyx_PyInt_As_int64_t(values[2]); if (unlikely((__pyx_v_syncgroupid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 735, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 733, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_80set_time_aggregation(__pyx_self, __pyx_v_groupid, __pyx_v_buffersize, __pyx_v_syncgroupid);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_80set_time_aggregation(CYTHON_UNUSED PyObject *__pyx_self, int64_t __pyx_v_groupid, uint64_t __pyx_v_buffersize, int64_t __pyx_v_syncgroupid) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("set_time_aggregation", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_9adios_mpi_set_time_aggregation(__pyx_v_groupid, __pyx_v_buffersize, __pyx_v_syncgroupid, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":745
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -8149,7 +11234,7 @@ static PyObject *__pyx_pf_9adios_mpi_44select_method(CYTHON_UNUSED PyObject *__p
  *     cdef np.dtype ntype = None
  */
 
-static PyObject *__pyx_pw_9adios_mpi_47adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_83adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_adios2npdtype *__pyx_optional_args) {
   int __pyx_v_strlen = ((int)1);
   PyArray_Descr *__pyx_v_ntype = 0;
@@ -8165,7 +11250,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
     }
   }
 
-  /* "adios_mpi.pyx":555
+  /* "adios_mpi.pyx":747
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):
  *     """ strlen apply only to string type """
  *     cdef np.dtype ntype = None             # <<<<<<<<<<<<<<
@@ -8175,7 +11260,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
   __Pyx_INCREF(Py_None);
   __pyx_v_ntype = ((PyArray_Descr *)Py_None);
 
-  /* "adios_mpi.pyx":556
+  /* "adios_mpi.pyx":748
  *     """ strlen apply only to string type """
  *     cdef np.dtype ntype = None
  *     if t == adios_byte:             # <<<<<<<<<<<<<<
@@ -8185,30 +11270,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
   switch (__pyx_v_t) {
     case adios_byte:
 
-    /* "adios_mpi.pyx":557
+    /* "adios_mpi.pyx":749
  *     cdef np.dtype ntype = None
  *     if t == adios_byte:
  *         ntype = np.dtype(np.int8)             # <<<<<<<<<<<<<<
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 749, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 749, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":556
+    /* "adios_mpi.pyx":748
  *     """ strlen apply only to string type """
  *     cdef np.dtype ntype = None
  *     if t == adios_byte:             # <<<<<<<<<<<<<<
@@ -8217,7 +11302,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":558
+    /* "adios_mpi.pyx":750
  *     if t == adios_byte:
  *         ntype = np.dtype(np.int8)
  *     elif t == adios_short:             # <<<<<<<<<<<<<<
@@ -8226,30 +11311,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_short:
 
-    /* "adios_mpi.pyx":559
+    /* "adios_mpi.pyx":751
  *         ntype = np.dtype(np.int8)
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)             # <<<<<<<<<<<<<<
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 751, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 751, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 751, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":558
+    /* "adios_mpi.pyx":750
  *     if t == adios_byte:
  *         ntype = np.dtype(np.int8)
  *     elif t == adios_short:             # <<<<<<<<<<<<<<
@@ -8258,7 +11343,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":560
+    /* "adios_mpi.pyx":752
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)
  *     elif t == adios_integer:             # <<<<<<<<<<<<<<
@@ -8267,30 +11352,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_integer:
 
-    /* "adios_mpi.pyx":561
+    /* "adios_mpi.pyx":753
  *         ntype = np.dtype(np.int16)
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)             # <<<<<<<<<<<<<<
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 753, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 753, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":560
+    /* "adios_mpi.pyx":752
  *     elif t == adios_short:
  *         ntype = np.dtype(np.int16)
  *     elif t == adios_integer:             # <<<<<<<<<<<<<<
@@ -8299,7 +11384,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":562
+    /* "adios_mpi.pyx":754
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)
  *     elif t == adios_long:             # <<<<<<<<<<<<<<
@@ -8308,30 +11393,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_long:
 
-    /* "adios_mpi.pyx":563
+    /* "adios_mpi.pyx":755
  *         ntype = np.dtype(np.int32)
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":562
+    /* "adios_mpi.pyx":754
  *     elif t == adios_integer:
  *         ntype = np.dtype(np.int32)
  *     elif t == adios_long:             # <<<<<<<<<<<<<<
@@ -8340,7 +11425,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":564
+    /* "adios_mpi.pyx":756
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)
  *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
@@ -8349,30 +11434,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_unsigned_byte:
 
-    /* "adios_mpi.pyx":565
+    /* "adios_mpi.pyx":757
  *         ntype = np.dtype(np.int64)
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 757, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 757, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":564
+    /* "adios_mpi.pyx":756
  *     elif t == adios_long:
  *         ntype = np.dtype(np.int64)
  *     elif t == adios_unsigned_byte:             # <<<<<<<<<<<<<<
@@ -8381,7 +11466,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":566
+    /* "adios_mpi.pyx":758
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)
  *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
@@ -8390,30 +11475,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_unsigned_short:
 
-    /* "adios_mpi.pyx":567
+    /* "adios_mpi.pyx":759
  *         ntype = np.dtype(np.uint8)
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":566
+    /* "adios_mpi.pyx":758
  *     elif t == adios_unsigned_byte:
  *         ntype = np.dtype(np.uint8)
  *     elif t == adios_unsigned_short:             # <<<<<<<<<<<<<<
@@ -8422,7 +11507,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":568
+    /* "adios_mpi.pyx":760
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)
  *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
@@ -8431,30 +11516,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_unsigned_integer:
 
-    /* "adios_mpi.pyx":569
+    /* "adios_mpi.pyx":761
  *         ntype = np.dtype(np.uint16)
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)             # <<<<<<<<<<<<<<
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 761, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 761, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 761, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 761, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":568
+    /* "adios_mpi.pyx":760
  *     elif t == adios_unsigned_short:
  *         ntype = np.dtype(np.uint16)
  *     elif t == adios_unsigned_integer:             # <<<<<<<<<<<<<<
@@ -8463,7 +11548,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":570
+    /* "adios_mpi.pyx":762
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)
  *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
@@ -8472,30 +11557,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_unsigned_long:
 
-    /* "adios_mpi.pyx":571
+    /* "adios_mpi.pyx":763
  *         ntype = np.dtype(np.uint32)
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)             # <<<<<<<<<<<<<<
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":570
+    /* "adios_mpi.pyx":762
  *     elif t == adios_unsigned_integer:
  *         ntype = np.dtype(np.uint32)
  *     elif t == adios_unsigned_long:             # <<<<<<<<<<<<<<
@@ -8504,7 +11589,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":572
+    /* "adios_mpi.pyx":764
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)
  *     elif t == adios_real:             # <<<<<<<<<<<<<<
@@ -8513,30 +11598,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_real:
 
-    /* "adios_mpi.pyx":573
+    /* "adios_mpi.pyx":765
  *         ntype = np.dtype(np.uint64)
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)             # <<<<<<<<<<<<<<
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 765, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 765, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 765, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 765, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":572
+    /* "adios_mpi.pyx":764
  *     elif t == adios_unsigned_long:
  *         ntype = np.dtype(np.uint64)
  *     elif t == adios_real:             # <<<<<<<<<<<<<<
@@ -8545,7 +11630,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":574
+    /* "adios_mpi.pyx":766
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)
  *     elif t == adios_double:             # <<<<<<<<<<<<<<
@@ -8554,30 +11639,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_double:
 
-    /* "adios_mpi.pyx":575
+    /* "adios_mpi.pyx":767
  *         ntype = np.dtype(np.float32)
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)             # <<<<<<<<<<<<<<
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":574
+    /* "adios_mpi.pyx":766
  *     elif t == adios_real:
  *         ntype = np.dtype(np.float32)
  *     elif t == adios_double:             # <<<<<<<<<<<<<<
@@ -8586,7 +11671,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":576
+    /* "adios_mpi.pyx":768
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)
  *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
@@ -8595,30 +11680,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_long_double:
 
-    /* "adios_mpi.pyx":577
+    /* "adios_mpi.pyx":769
  *         ntype = np.dtype(np.float64)
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)             # <<<<<<<<<<<<<<
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 577, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 577, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 769, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":576
+    /* "adios_mpi.pyx":768
  *     elif t == adios_double:
  *         ntype = np.dtype(np.float64)
  *     elif t == adios_long_double:             # <<<<<<<<<<<<<<
@@ -8627,7 +11712,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":578
+    /* "adios_mpi.pyx":770
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)
  *     elif t == adios_complex:             # <<<<<<<<<<<<<<
@@ -8636,30 +11721,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_complex:
 
-    /* "adios_mpi.pyx":579
+    /* "adios_mpi.pyx":771
  *         ntype = np.dtype(np.float128)
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)             # <<<<<<<<<<<<<<
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 771, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 579, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 771, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 771, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":578
+    /* "adios_mpi.pyx":770
  *     elif t == adios_long_double:
  *         ntype = np.dtype(np.float128)
  *     elif t == adios_complex:             # <<<<<<<<<<<<<<
@@ -8668,7 +11753,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":580
+    /* "adios_mpi.pyx":772
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)
  *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
@@ -8677,30 +11762,30 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_double_complex:
 
-    /* "adios_mpi.pyx":581
+    /* "adios_mpi.pyx":773
  *         ntype = np.dtype(np.complex64)
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)             # <<<<<<<<<<<<<<
  *     elif t == adios_string:
  *         ## Use string_ instead of str_ for py3
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 773, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 773, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":580
+    /* "adios_mpi.pyx":772
  *     elif t == adios_complex:
  *         ntype = np.dtype(np.complex64)
  *     elif t == adios_double_complex:             # <<<<<<<<<<<<<<
@@ -8709,7 +11794,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     break;
 
-    /* "adios_mpi.pyx":582
+    /* "adios_mpi.pyx":774
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)
  *     elif t == adios_string:             # <<<<<<<<<<<<<<
@@ -8718,21 +11803,21 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
  */
     case adios_string:
 
-    /* "adios_mpi.pyx":584
+    /* "adios_mpi.pyx":776
  *     elif t == adios_string:
  *         ## Use string_ instead of str_ for py3
  *         ntype = np.dtype((np.string_, strlen))             # <<<<<<<<<<<<<<
  *     else:
  *         ntype = None
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 776, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 776, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_strlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_strlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 776, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 776, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -8740,18 +11825,18 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
     __pyx_t_1 = 0;
     __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 776, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 776, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_ntype, ((PyArray_Descr *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":582
+    /* "adios_mpi.pyx":774
  *     elif t == adios_double_complex:
  *         ntype = np.dtype(np.complex128)
  *     elif t == adios_string:             # <<<<<<<<<<<<<<
@@ -8761,7 +11846,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
     break;
     default:
 
-    /* "adios_mpi.pyx":586
+    /* "adios_mpi.pyx":778
  *         ntype = np.dtype((np.string_, strlen))
  *     else:
  *         ntype = None             # <<<<<<<<<<<<<<
@@ -8773,7 +11858,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
     break;
   }
 
-  /* "adios_mpi.pyx":588
+  /* "adios_mpi.pyx":780
  *         ntype = None
  * 
  *     return ntype             # <<<<<<<<<<<<<<
@@ -8785,7 +11870,7 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
   __pyx_r = __pyx_v_ntype;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":553
+  /* "adios_mpi.pyx":745
  * ## ====================
  * 
  * cpdef np.dtype adios2npdtype(ADIOS_DATATYPES t, int strlen = 1):             # <<<<<<<<<<<<<<
@@ -8808,9 +11893,9 @@ static PyArray_Descr *__pyx_f_9adios_mpi_adios2npdtype(ADIOS_DATATYPES __pyx_v_t
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_47adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_46adios2npdtype[] = "adios2npdtype(ADIOS_DATATYPES t, int strlen=1) -> dtype\n strlen apply only to string type ";
-static PyObject *__pyx_pw_9adios_mpi_47adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_83adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_82adios2npdtype[] = "adios2npdtype(ADIOS_DATATYPES t, int strlen=1) -> dtype\n strlen apply only to string type ";
+static PyObject *__pyx_pw_9adios_mpi_83adios2npdtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   ADIOS_DATATYPES __pyx_v_t;
   int __pyx_v_strlen;
   PyObject *__pyx_r = 0;
@@ -8840,7 +11925,7 @@ static PyObject *__pyx_pw_9adios_mpi_47adios2npdtype(PyObject *__pyx_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) __PYX_ERR(0, 553, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adios2npdtype") < 0)) __PYX_ERR(0, 745, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -8850,29 +11935,29 @@ static PyObject *__pyx_pw_9adios_mpi_47adios2npdtype(PyObject *__pyx_self, PyObj
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_t = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L3_error)
+    __pyx_v_t = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 745, __pyx_L3_error)
     if (values[1]) {
-      __pyx_v_strlen = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_strlen == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L3_error)
+      __pyx_v_strlen = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_strlen == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 745, __pyx_L3_error)
     } else {
       __pyx_v_strlen = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 553, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("adios2npdtype", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 745, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.adios2npdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_46adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
+  __pyx_r = __pyx_pf_9adios_mpi_82adios2npdtype(__pyx_self, __pyx_v_t, __pyx_v_strlen);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_46adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
+static PyObject *__pyx_pf_9adios_mpi_82adios2npdtype(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_t, int __pyx_v_strlen) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -8881,7 +11966,7 @@ static PyObject *__pyx_pf_9adios_mpi_46adios2npdtype(CYTHON_UNUSED PyObject *__p
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.strlen = __pyx_v_strlen;
-  __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_t, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_t, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -8898,7 +11983,7 @@ static PyObject *__pyx_pf_9adios_mpi_46adios2npdtype(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":590
+/* "adios_mpi.pyx":782
  *     return ntype
  * 
  * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
@@ -8916,16 +12001,16 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("printfile", 0);
 
-  /* "adios_mpi.pyx":591
+  /* "adios_mpi.pyx":783
  * 
  * cdef printfile(ADIOS_FILE * f):
  *     print ('%15s : %lu' % ('fh', f.fh))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('nvars', f.nvars))
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->fh); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->fh); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fh);
   __Pyx_GIVEREF(__pyx_n_s_fh);
@@ -8933,29 +12018,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":592
+  /* "adios_mpi.pyx":784
  * cdef printfile(ADIOS_FILE * f):
  *     print ('%15s : %lu' % ('fh', f.fh))
  *     print ('%15s : %d' % ('nvars', f.nvars))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_nvars);
   __Pyx_GIVEREF(__pyx_n_s_nvars);
@@ -8963,37 +12048,37 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":593
+  /* "adios_mpi.pyx":785
  *     print ('%15s : %lu' % ('fh', f.fh))
  *     print ('%15s : %d' % ('nvars', f.nvars))
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_f->nvars;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 593, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 785, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_var_namelist);
   __Pyx_GIVEREF(__pyx_n_s_var_namelist);
@@ -9001,29 +12086,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":594
+  /* "adios_mpi.pyx":786
  *     print ('%15s : %d' % ('nvars', f.nvars))
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  *     print ('%15s : %d' % ('nattrs', f.nattrs))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  *     print ('%15s : %d' % ('current_step', f.current_step))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_nattrs);
   __Pyx_GIVEREF(__pyx_n_s_nattrs);
@@ -9031,37 +12116,37 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":595
+  /* "adios_mpi.pyx":787
  *     print ('%15s : %s' % ('var_namelist', [f.var_namelist[i] for i in range(f.nvars)]))
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('current_step', f.current_step))
  *     print ('%15s : %d' % ('last_step', f.last_step))
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_f->nattrs;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyBytes_FromString((__pyx_v_f->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 595, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 787, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_attr_namelist);
   __Pyx_GIVEREF(__pyx_n_s_attr_namelist);
@@ -9069,29 +12154,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":596
+  /* "adios_mpi.pyx":788
  *     print ('%15s : %d' % ('nattrs', f.nattrs))
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  *     print ('%15s : %d' % ('current_step', f.current_step))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('last_step', f.last_step))
  *     print ('%15s : %s' % ('path', f.path))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_current_step);
   __Pyx_GIVEREF(__pyx_n_s_current_step);
@@ -9099,29 +12184,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":597
+  /* "adios_mpi.pyx":789
  *     print ('%15s : %s' % ('attr_namelist', [f.attr_namelist[i] for i in range(f.nattrs)]))
  *     print ('%15s : %d' % ('current_step', f.current_step))
  *     print ('%15s : %d' % ('last_step', f.last_step))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('path', f.path))
  *     print ('%15s : %d' % ('endianness', f.endianness))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_last_step);
   __Pyx_GIVEREF(__pyx_n_s_last_step);
@@ -9129,29 +12214,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":598
+  /* "adios_mpi.pyx":790
  *     print ('%15s : %d' % ('current_step', f.current_step))
  *     print ('%15s : %d' % ('last_step', f.last_step))
  *     print ('%15s : %s' % ('path', f.path))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('endianness', f.endianness))
  *     print ('%15s : %d' % ('version', f.version))
  */
-  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_f->path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_f->path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_path);
   __Pyx_GIVEREF(__pyx_n_s_path);
@@ -9159,29 +12244,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":599
+  /* "adios_mpi.pyx":791
  *     print ('%15s : %d' % ('last_step', f.last_step))
  *     print ('%15s : %s' % ('path', f.path))
  *     print ('%15s : %d' % ('endianness', f.endianness))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('version', f.version))
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_endianness);
   __Pyx_GIVEREF(__pyx_n_s_endianness);
@@ -9189,29 +12274,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":600
+  /* "adios_mpi.pyx":792
  *     print ('%15s : %s' % ('path', f.path))
  *     print ('%15s : %d' % ('endianness', f.endianness))
  *     print ('%15s : %d' % ('version', f.version))             # <<<<<<<<<<<<<<
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_version);
   __Pyx_GIVEREF(__pyx_n_s_version);
@@ -9219,29 +12304,29 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":601
+  /* "adios_mpi.pyx":793
  *     print ('%15s : %d' % ('endianness', f.endianness))
  *     print ('%15s : %d' % ('version', f.version))
  *     print ('%15s : %lu' % ('file_size', f.file_size))             # <<<<<<<<<<<<<<
  * 
  * cdef printvar(ADIOS_VARINFO * v):
  */
-  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_f->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_file_size);
   __Pyx_GIVEREF(__pyx_n_s_file_size);
@@ -9249,20 +12334,20 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 793, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":590
+  /* "adios_mpi.pyx":782
  *     return ntype
  * 
  * cdef printfile(ADIOS_FILE * f):             # <<<<<<<<<<<<<<
@@ -9284,7 +12369,7 @@ static PyObject *__pyx_f_9adios_mpi_printfile(ADIOS_FILE *__pyx_v_f) {
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":603
+/* "adios_mpi.pyx":795
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
  * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
@@ -9302,16 +12387,16 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("printvar", 0);
 
-  /* "adios_mpi.pyx":604
+  /* "adios_mpi.pyx":796
  * 
  * cdef printvar(ADIOS_VARINFO * v):
  *     print ('%15s : %d' % ('varid', v.varid))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  *     print ('%15s : %d' % ('ndim', v.ndim))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_varid);
   __Pyx_GIVEREF(__pyx_n_s_varid);
@@ -9319,29 +12404,29 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":605
+  /* "adios_mpi.pyx":797
  * cdef printvar(ADIOS_VARINFO * v):
  *     print ('%15s : %d' % ('varid', v.varid))
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('ndim', v.ndim))
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_v->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_v->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_type);
   __Pyx_GIVEREF(__pyx_n_s_type);
@@ -9349,29 +12434,29 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":606
+  /* "adios_mpi.pyx":798
  *     print ('%15s : %d' % ('varid', v.varid))
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  *     print ('%15s : %d' % ('ndim', v.ndim))             # <<<<<<<<<<<<<<
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_ndim);
   __Pyx_GIVEREF(__pyx_n_s_ndim);
@@ -9379,37 +12464,37 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 798, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":607
+  /* "adios_mpi.pyx":799
  *     print ('%15s : %s' % ('type', adios2npdtype(v.type)))
  *     print ('%15s : %d' % ('ndim', v.ndim))
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))             # <<<<<<<<<<<<<<
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_v->ndim;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_2 = __Pyx_PyInt_From_uint64_t((__pyx_v_v->dims[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_uint64_t((__pyx_v_v->dims[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 799, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 607, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 799, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_dims);
   __Pyx_GIVEREF(__pyx_n_s_dims);
@@ -9417,29 +12502,29 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":608
+  /* "adios_mpi.pyx":800
  *     print ('%15s : %d' % ('ndim', v.ndim))
  *     print ('%15s : %s' % ('dims', [v.dims[i] for i in range(v.ndim)]))
  *     print ('%15s : %d' % ('nsteps', v.nsteps))             # <<<<<<<<<<<<<<
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_v->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_nsteps);
   __Pyx_GIVEREF(__pyx_n_s_nsteps);
@@ -9447,20 +12532,20 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_d, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":603
+  /* "adios_mpi.pyx":795
  *     print ('%15s : %lu' % ('file_size', f.file_size))
  * 
  * cdef printvar(ADIOS_VARINFO * v):             # <<<<<<<<<<<<<<
@@ -9482,7 +12567,7 @@ static PyObject *__pyx_f_9adios_mpi_printvar(ADIOS_VARINFO *__pyx_v_v) {
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":610
+/* "adios_mpi.pyx":802
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
@@ -9500,32 +12585,32 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
   ADIOS_READ_METHOD __pyx_t_4;
   __Pyx_RefNannySetupContext("str2adiosreadmethod", 0);
 
-  /* "adios_mpi.pyx":611
+  /* "adios_mpi.pyx":803
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  *     if (name == "BP"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 611, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 803, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":612
+    /* "adios_mpi.pyx":804
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  *     if (name == "BP"):
  *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_BP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 612, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_BP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 804, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_method = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":611
+    /* "adios_mpi.pyx":803
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):
  *     if (name == "BP"):             # <<<<<<<<<<<<<<
@@ -9535,32 +12620,32 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":613
+  /* "adios_mpi.pyx":805
  *     if (name == "BP"):
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP_AGGREGATE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 613, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_BP_AGGREGATE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 805, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":614
+    /* "adios_mpi.pyx":806
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE             # <<<<<<<<<<<<<<
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 614, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 806, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP_AGGREGATE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP_AGGREGATE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 806, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":613
+    /* "adios_mpi.pyx":805
  *     if (name == "BP"):
  *         method = READ_METHOD.BP
  *     elif (name == "BP_AGGREGATE"):             # <<<<<<<<<<<<<<
@@ -9570,32 +12655,32 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":615
+  /* "adios_mpi.pyx":807
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DATASPACES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 615, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DATASPACES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 807, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":616
+    /* "adios_mpi.pyx":808
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES             # <<<<<<<<<<<<<<
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 808, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DATASPACES); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_DATASPACES); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 808, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_method = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":615
+    /* "adios_mpi.pyx":807
  *     elif (name == "BP_AGGREGATE"):
  *         method = READ_METHOD.BP_AGGREGATE
  *     elif (name == "DATASPACES"):             # <<<<<<<<<<<<<<
@@ -9605,32 +12690,32 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":617
+  /* "adios_mpi.pyx":809
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DIMES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 617, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_DIMES, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 809, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":618
+    /* "adios_mpi.pyx":810
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES             # <<<<<<<<<<<<<<
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 618, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 810, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DIMES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 618, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DIMES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 810, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":617
+    /* "adios_mpi.pyx":809
  *     elif (name == "DATASPACES"):
  *         method = READ_METHOD.DATASPACES
  *     elif (name == "DIMES"):             # <<<<<<<<<<<<<<
@@ -9640,32 +12725,32 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":619
+  /* "adios_mpi.pyx":811
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FLEXPATH, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 619, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FLEXPATH, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 811, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":620
+    /* "adios_mpi.pyx":812
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH             # <<<<<<<<<<<<<<
  *     elif (name == "ICEE"):
  *         method = READ_METHOD.ICEE
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 812, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FLEXPATH); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FLEXPATH); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 812, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_method = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":619
+    /* "adios_mpi.pyx":811
  *     elif (name == "DIMES"):
  *         method = READ_METHOD.DIMES
  *     elif (name == "FLEXPATH"):             # <<<<<<<<<<<<<<
@@ -9675,32 +12760,32 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":621
+  /* "adios_mpi.pyx":813
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
  *         method = READ_METHOD.ICEE
  *     else:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ICEE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 621, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ICEE, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 813, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":622
+    /* "adios_mpi.pyx":814
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):
  *         method = READ_METHOD.ICEE             # <<<<<<<<<<<<<<
  *     else:
  *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 814, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ICEE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 622, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ICEE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 814, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":621
+    /* "adios_mpi.pyx":813
  *     elif (name == "FLEXPATH"):
  *         method = READ_METHOD.FLEXPATH
  *     elif (name == "ICEE"):             # <<<<<<<<<<<<<<
@@ -9710,7 +12795,7 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":624
+  /* "adios_mpi.pyx":816
  *         method = READ_METHOD.ICEE
  *     else:
  *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')             # <<<<<<<<<<<<<<
@@ -9718,7 +12803,7 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
  * 
  */
   /*else*/ {
-    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_kp_s_WARN_Invalid_read_method_name);
     __Pyx_GIVEREF(__pyx_kp_s_WARN_Invalid_read_method_name);
@@ -9729,21 +12814,21 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
     __Pyx_INCREF(__pyx_kp_s_Use_default_BP_method);
     __Pyx_GIVEREF(__pyx_kp_s_Use_default_BP_method);
     PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_s_Use_default_BP_method);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":625
+    /* "adios_mpi.pyx":817
  *     else:
  *         print ('[WARN] Invalid read method name:', name, '. Use default BP method')
  *         method = READ_METHOD.BP             # <<<<<<<<<<<<<<
  * 
  *     return method
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 625, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_READ_METHOD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 817, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 625, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_BP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 817, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_method = __pyx_t_2;
@@ -9751,18 +12836,18 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":627
+  /* "adios_mpi.pyx":819
  *         method = READ_METHOD.BP
  * 
  *     return method             # <<<<<<<<<<<<<<
  * 
  * cpdef np2adiostype(np.dtype nptype):
  */
-  __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 627, __pyx_L1_error)
+  __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 819, __pyx_L1_error)
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":610
+  /* "adios_mpi.pyx":802
  *     print ('%15s : %d' % ('nsteps', v.nsteps))
  * 
  * cdef ADIOS_READ_METHOD str2adiosreadmethod(name):             # <<<<<<<<<<<<<<
@@ -9782,7 +12867,7 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":629
+/* "adios_mpi.pyx":821
  *     return method
  * 
  * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
@@ -9790,7 +12875,7 @@ static ADIOS_READ_METHOD __pyx_f_9adios_mpi_str2adiosreadmethod(PyObject *__pyx_
  *     """
  */
 
-static PyObject *__pyx_pw_9adios_mpi_49np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_85np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
 static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_v_atype = 0;
   PyObject *__pyx_r = NULL;
@@ -9801,55 +12886,55 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("np2adiostype", 0);
 
-  /* "adios_mpi.pyx":633
+  /* "adios_mpi.pyx":825
  *     """
  * 
  *     cdef atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
  * 
  *     if (nptype == np.bool_):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 825, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 825, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_atype = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":635
+  /* "adios_mpi.pyx":827
  *     cdef atype = DATATYPE.unknown
  * 
  *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 827, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 827, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 827, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 635, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 827, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":636
+    /* "adios_mpi.pyx":828
  * 
  *     if (nptype == np.bool_):
  *         atype = DATATYPE.byte             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_byte); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_byte); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":635
+    /* "adios_mpi.pyx":827
  *     cdef atype = DATATYPE.unknown
  * 
  *     if (nptype == np.bool_):             # <<<<<<<<<<<<<<
@@ -9859,40 +12944,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":637
+  /* "adios_mpi.pyx":829
  *     if (nptype == np.bool_):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 637, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":638
+    /* "adios_mpi.pyx":830
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 638, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 830, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":637
+    /* "adios_mpi.pyx":829
  *     if (nptype == np.bool_):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int8):             # <<<<<<<<<<<<<<
@@ -9902,40 +12987,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":639
+  /* "adios_mpi.pyx":831
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 639, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 831, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":640
+    /* "adios_mpi.pyx":832
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 832, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":639
+    /* "adios_mpi.pyx":831
  *     elif (nptype == np.int8):
  *         atype = DATATYPE.byte
  *     elif (nptype == np.int16):             # <<<<<<<<<<<<<<
@@ -9945,40 +13030,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":641
+  /* "adios_mpi.pyx":833
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 833, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 641, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 833, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":642
+    /* "adios_mpi.pyx":834
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer             # <<<<<<<<<<<<<<
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 642, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":641
+    /* "adios_mpi.pyx":833
  *     elif (nptype == np.int16):
  *         atype = DATATYPE.short
  *     elif (nptype == np.int32):             # <<<<<<<<<<<<<<
@@ -9988,40 +13073,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":643
+  /* "adios_mpi.pyx":835
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 835, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 835, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":644
+    /* "adios_mpi.pyx":836
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 836, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 644, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":643
+    /* "adios_mpi.pyx":835
  *     elif (nptype == np.int32):
  *         atype = DATATYPE.integer
  *     elif (nptype == np.int64):             # <<<<<<<<<<<<<<
@@ -10031,40 +13116,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":645
+  /* "adios_mpi.pyx":837
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 645, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 645, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 837, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 645, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 645, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 837, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":646
+    /* "adios_mpi.pyx":838
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 646, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 646, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_byte); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 838, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":645
+    /* "adios_mpi.pyx":837
  *     elif (nptype == np.int64):
  *         atype = DATATYPE.long
  *     elif (nptype == np.uint8):             # <<<<<<<<<<<<<<
@@ -10074,40 +13159,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":647
+  /* "adios_mpi.pyx":839
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 839, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 839, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 647, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 839, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 647, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 839, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":648
+    /* "adios_mpi.pyx":840
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 648, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 840, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_short); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 840, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":647
+    /* "adios_mpi.pyx":839
  *     elif (nptype == np.uint8):
  *         atype = DATATYPE.unsigned_byte
  *     elif (nptype == np.uint16):             # <<<<<<<<<<<<<<
@@ -10117,40 +13202,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":649
+  /* "adios_mpi.pyx":841
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_uint32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 841, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 649, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 841, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":650
+    /* "adios_mpi.pyx":842
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer             # <<<<<<<<<<<<<<
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 650, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unsigned_integer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 842, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":649
+    /* "adios_mpi.pyx":841
  *     elif (nptype == np.uint16):
  *         atype = DATATYPE.unsigned_short
  *     elif (nptype == np.uint32):             # <<<<<<<<<<<<<<
@@ -10160,40 +13245,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":651
+  /* "adios_mpi.pyx":843
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 651, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 843, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":652
+    /* "adios_mpi.pyx":844
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 652, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unsigned_long); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":651
+    /* "adios_mpi.pyx":843
  *     elif (nptype == np.uint32):
  *         atype = DATATYPE.unsigned_integer
  *     elif (nptype == np.uint64):             # <<<<<<<<<<<<<<
@@ -10203,40 +13288,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":653
+  /* "adios_mpi.pyx":845
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 653, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 653, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":654
+    /* "adios_mpi.pyx":846
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 846, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 654, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 846, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":653
+    /* "adios_mpi.pyx":845
  *     elif (nptype == np.uint64):
  *         atype = DATATYPE.unsigned_long
  *     elif (nptype == np.float_):             # <<<<<<<<<<<<<<
@@ -10246,40 +13331,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":655
+  /* "adios_mpi.pyx":847
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 847, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 655, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 847, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":656
+    /* "adios_mpi.pyx":848
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 656, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 848, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_real); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_real); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 848, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":655
+    /* "adios_mpi.pyx":847
  *     elif (nptype == np.float_):
  *         atype = DATATYPE.double
  *     elif (nptype == np.float16):             # <<<<<<<<<<<<<<
@@ -10289,40 +13374,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":657
+  /* "adios_mpi.pyx":849
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 849, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 657, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_float32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 849, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 849, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 657, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 849, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":658
+    /* "adios_mpi.pyx":850
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real             # <<<<<<<<<<<<<<
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 658, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_real); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 658, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_real); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 850, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":657
+    /* "adios_mpi.pyx":849
  *     elif (nptype == np.float16):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float32):             # <<<<<<<<<<<<<<
@@ -10332,40 +13417,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":659
+  /* "adios_mpi.pyx":851
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 851, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 851, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 659, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 851, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 659, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 851, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":660
+    /* "adios_mpi.pyx":852
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double             # <<<<<<<<<<<<<<
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 660, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_double); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_double); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":659
+    /* "adios_mpi.pyx":851
  *     elif (nptype == np.float32):
  *         atype = DATATYPE.real
  *     elif (nptype == np.float64):             # <<<<<<<<<<<<<<
@@ -10375,40 +13460,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":661
+  /* "adios_mpi.pyx":853
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 853, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 853, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 853, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 661, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 853, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":662
+    /* "adios_mpi.pyx":854
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 854, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 662, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 854, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":661
+    /* "adios_mpi.pyx":853
  *     elif (nptype == np.float64):
  *         atype = DATATYPE.double
  *     elif (nptype == np.complex_):             # <<<<<<<<<<<<<<
@@ -10418,40 +13503,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":663
+  /* "adios_mpi.pyx":855
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 663, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 855, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 855, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 663, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 855, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 663, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 855, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":664
+    /* "adios_mpi.pyx":856
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex             # <<<<<<<<<<<<<<
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 664, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 856, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 664, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complex_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":663
+    /* "adios_mpi.pyx":855
  *     elif (nptype == np.complex_):
  *         atype = DATATYPE.double_complex
  *     elif (nptype == np.complex64):             # <<<<<<<<<<<<<<
@@ -10461,40 +13546,40 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":665
+  /* "adios_mpi.pyx":857
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 665, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complex128); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 857, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_nptype), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 665, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 857, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":666
+    /* "adios_mpi.pyx":858
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex             # <<<<<<<<<<<<<<
  *     elif (nptype.char in ('S', 'U')):
  *         atype = DATATYPE.string
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 666, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_double_complex); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":665
+    /* "adios_mpi.pyx":857
  *     elif (nptype == np.complex64):
  *         atype = DATATYPE.complex
  *     elif (nptype == np.complex128):             # <<<<<<<<<<<<<<
@@ -10504,44 +13589,44 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":667
+  /* "adios_mpi.pyx":859
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
  *         atype = DATATYPE.string
  *     else:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nptype), __pyx_n_s_char); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nptype), __pyx_n_s_char); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 859, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 859, __pyx_L1_error)
   if (!__pyx_t_4) {
   } else {
     __pyx_t_3 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 667, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 859, __pyx_L1_error)
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "adios_mpi.pyx":668
+    /* "adios_mpi.pyx":860
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):
  *         atype = DATATYPE.string             # <<<<<<<<<<<<<<
  *     else:
  *         atype = DATATYPE.unknown
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 860, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":667
+    /* "adios_mpi.pyx":859
  *     elif (nptype == np.complex128):
  *         atype = DATATYPE.double_complex
  *     elif (nptype.char in ('S', 'U')):             # <<<<<<<<<<<<<<
@@ -10551,7 +13636,7 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":670
+  /* "adios_mpi.pyx":862
  *         atype = DATATYPE.string
  *     else:
  *         atype = DATATYPE.unknown             # <<<<<<<<<<<<<<
@@ -10559,9 +13644,9 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
  *     return atype
  */
   /*else*/ {
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 670, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_unknown); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_atype, __pyx_t_2);
@@ -10569,7 +13654,7 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":672
+  /* "adios_mpi.pyx":864
  *         atype = DATATYPE.unknown
  * 
  *     return atype             # <<<<<<<<<<<<<<
@@ -10581,7 +13666,7 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
   __pyx_r = __pyx_v_atype;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":629
+  /* "adios_mpi.pyx":821
  *     return method
  * 
  * cpdef np2adiostype(np.dtype nptype):             # <<<<<<<<<<<<<<
@@ -10603,14 +13688,14 @@ static PyObject *__pyx_f_9adios_mpi_np2adiostype(PyArray_Descr *__pyx_v_nptype,
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_49np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
-static char __pyx_doc_9adios_mpi_48np2adiostype[] = "np2adiostype(dtype nptype)\n Convert Numpy.dtype to Adios Datatype\n    ";
-static PyObject *__pyx_pw_9adios_mpi_49np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype) {
+static PyObject *__pyx_pw_9adios_mpi_85np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype); /*proto*/
+static char __pyx_doc_9adios_mpi_84np2adiostype[] = "np2adiostype(dtype nptype)\n Convert Numpy.dtype to Adios Datatype\n    ";
+static PyObject *__pyx_pw_9adios_mpi_85np2adiostype(PyObject *__pyx_self, PyObject *__pyx_v_nptype) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("np2adiostype (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nptype), __pyx_ptype_5numpy_dtype, 1, "nptype", 0))) __PYX_ERR(0, 629, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_48np2adiostype(__pyx_self, ((PyArray_Descr *)__pyx_v_nptype));
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nptype), __pyx_ptype_5numpy_dtype, 1, "nptype", 0))) __PYX_ERR(0, 821, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_84np2adiostype(__pyx_self, ((PyArray_Descr *)__pyx_v_nptype));
 
   /* function exit code */
   goto __pyx_L0;
@@ -10621,13 +13706,13 @@ static PyObject *__pyx_pw_9adios_mpi_49np2adiostype(PyObject *__pyx_self, PyObje
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_48np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
+static PyObject *__pyx_pf_9adios_mpi_84np2adiostype(CYTHON_UNUSED PyObject *__pyx_self, PyArray_Descr *__pyx_v_nptype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("np2adiostype", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_np2adiostype(__pyx_v_nptype, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_np2adiostype(__pyx_v_nptype, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 821, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -10644,7 +13729,7 @@ static PyObject *__pyx_pf_9adios_mpi_48np2adiostype(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":674
+/* "adios_mpi.pyx":866
  *     return atype
  * 
  * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
@@ -10652,7 +13737,7 @@ static PyObject *__pyx_pf_9adios_mpi_48np2adiostype(CYTHON_UNUSED PyObject *__py
  * 
  */
 
-static PyObject *__pyx_pw_9adios_mpi_51adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_87adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
 static PyObject *__pyx_f_9adios_mpi_adiostype2string(ADIOS_DATATYPES __pyx_v_type, CYTHON_UNUSED int __pyx_skip_dispatch) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
@@ -10660,7 +13745,7 @@ static PyObject *__pyx_f_9adios_mpi_adiostype2string(ADIOS_DATATYPES __pyx_v_typ
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("adiostype2string", 0);
 
-  /* "adios_mpi.pyx":675
+  /* "adios_mpi.pyx":867
  * 
  * cpdef str adiostype2string (ADIOS_DATATYPES type):
  *     return str(adios_type_to_string(<ADIOS_DATATYPES> type))             # <<<<<<<<<<<<<<
@@ -10668,22 +13753,22 @@ static PyObject *__pyx_f_9adios_mpi_adiostype2string(ADIOS_DATATYPES __pyx_v_typ
  * ## ====================
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBytes_FromString(adios_type_to_string(((ADIOS_DATATYPES)__pyx_v_type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBytes_FromString(adios_type_to_string(((ADIOS_DATATYPES)__pyx_v_type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 675, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 867, __pyx_L1_error)
   __pyx_r = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":674
+  /* "adios_mpi.pyx":866
  *     return atype
  * 
  * cpdef str adiostype2string (ADIOS_DATATYPES type):             # <<<<<<<<<<<<<<
@@ -10704,15 +13789,15 @@ static PyObject *__pyx_f_9adios_mpi_adiostype2string(ADIOS_DATATYPES __pyx_v_typ
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_51adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
-static char __pyx_doc_9adios_mpi_50adiostype2string[] = "adiostype2string(ADIOS_DATATYPES type) -> str";
-static PyObject *__pyx_pw_9adios_mpi_51adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
+static PyObject *__pyx_pw_9adios_mpi_87adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type); /*proto*/
+static char __pyx_doc_9adios_mpi_86adiostype2string[] = "adiostype2string(ADIOS_DATATYPES type) -> str";
+static PyObject *__pyx_pw_9adios_mpi_87adiostype2string(PyObject *__pyx_self, PyObject *__pyx_arg_type) {
   ADIOS_DATATYPES __pyx_v_type;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("adiostype2string (wrapper)", 0);
   assert(__pyx_arg_type); {
-    __pyx_v_type = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_arg_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 674, __pyx_L3_error)
+    __pyx_v_type = ((ADIOS_DATATYPES)__Pyx_PyInt_As_ADIOS_DATATYPES(__pyx_arg_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 866, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -10720,20 +13805,20 @@ static PyObject *__pyx_pw_9adios_mpi_51adiostype2string(PyObject *__pyx_self, Py
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_50adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
+  __pyx_r = __pyx_pf_9adios_mpi_86adiostype2string(__pyx_self, ((ADIOS_DATATYPES)__pyx_v_type));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_50adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
+static PyObject *__pyx_pf_9adios_mpi_86adiostype2string(CYTHON_UNUSED PyObject *__pyx_self, ADIOS_DATATYPES __pyx_v_type) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("adiostype2string", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_adiostype2string(__pyx_v_type, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 674, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_adiostype2string(__pyx_v_type, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -10750,7 +13835,7 @@ static PyObject *__pyx_pf_9adios_mpi_50adiostype2string(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":682
+/* "adios_mpi.pyx":874
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
@@ -10758,10 +13843,10 @@ static PyObject *__pyx_pf_9adios_mpi_50adiostype2string(CYTHON_UNUSED PyObject *
  *                     str parameters = ""):
  */
 
-static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_89read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_f_9adios_mpi_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_read_init *__pyx_optional_args) {
   PyObject *__pyx_v_method_name = ((PyObject*)__pyx_n_s_BP);
-  struct PyMPICommObject *__pyx_v_comm = __pyx_k__11;
+  struct PyMPICommObject *__pyx_v_comm = __pyx_k__12;
   PyObject *__pyx_v_parameters = ((PyObject*)__pyx_kp_s__10);
   PyObject *__pyx_v_method = 0;
   int __pyx_r;
@@ -10784,14 +13869,14 @@ static int __pyx_f_9adios_mpi_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, s
     }
   }
 
-  /* "adios_mpi.pyx":686
+  /* "adios_mpi.pyx":878
  *                     str parameters = ""):
  *     global read_init_comm
  *     read_init_comm = comm.Clone()             # <<<<<<<<<<<<<<
  *     cdef method = str2adiosreadmethod(method_name)
  *     return adios_read_init_method (method, read_init_comm.ob_mpi, s2b(parameters))
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_comm), __pyx_n_s_Clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_comm), __pyx_n_s_Clone); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -10804,47 +13889,47 @@ static int __pyx_f_9adios_mpi_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, s
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 686, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 878, __pyx_L1_error)
   __Pyx_XGOTREF(((PyObject *)__pyx_v_9adios_mpi_read_init_comm));
   __Pyx_DECREF_SET(__pyx_v_9adios_mpi_read_init_comm, ((struct PyMPICommObject *)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":687
+  /* "adios_mpi.pyx":879
  *     global read_init_comm
  *     read_init_comm = comm.Clone()
  *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  *     return adios_read_init_method (method, read_init_comm.ob_mpi, s2b(parameters))
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_9adios_mpi_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_9adios_mpi_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 879, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":688
+  /* "adios_mpi.pyx":880
  *     read_init_comm = comm.Clone()
  *     cdef method = str2adiosreadmethod(method_name)
  *     return adios_read_init_method (method, read_init_comm.ob_mpi, s2b(parameters))             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 688, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
+  __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 880, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_parameters, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 880, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 688, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 880, __pyx_L1_error)
   __pyx_r = adios_read_init_method(__pyx_t_4, __pyx_v_9adios_mpi_read_init_comm->ob_mpi, __pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":682
+  /* "adios_mpi.pyx":874
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
@@ -10866,9 +13951,9 @@ static int __pyx_f_9adios_mpi_read_init(CYTHON_UNUSED int __pyx_skip_dispatch, s
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_52read_init[] = "read_init(str method_name='BP', Comm comm=MPI.COMM_WORLD, str parameters='') -> int";
-static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_89read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_88read_init[] = "read_init(str method_name='BP', Comm comm=MPI.COMM_WORLD, str parameters='') -> int";
+static PyObject *__pyx_pw_9adios_mpi_89read_init(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_method_name = 0;
   struct PyMPICommObject *__pyx_v_comm = 0;
   PyObject *__pyx_v_parameters = 0;
@@ -10879,7 +13964,7 @@ static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_name,&__pyx_n_s_comm,&__pyx_n_s_parameters,0};
     PyObject* values[3] = {0,0,0};
     values[0] = ((PyObject*)__pyx_n_s_BP);
-    values[1] = (PyObject *)__pyx_k__11;
+    values[1] = (PyObject *)__pyx_k__12;
     values[2] = ((PyObject*)__pyx_kp_s__10);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
@@ -10910,7 +13995,7 @@ static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) __PYX_ERR(0, 682, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_init") < 0)) __PYX_ERR(0, 874, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -10927,16 +14012,16 @@ static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 682, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_init", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 874, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.read_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 682, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 683, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 684, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_52read_init(__pyx_self, __pyx_v_method_name, __pyx_v_comm, __pyx_v_parameters);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 874, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 875, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parameters), (&PyString_Type), 1, "parameters", 1))) __PYX_ERR(0, 876, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_88read_init(__pyx_self, __pyx_v_method_name, __pyx_v_comm, __pyx_v_parameters);
 
   /* function exit code */
   goto __pyx_L0;
@@ -10947,7 +14032,7 @@ static PyObject *__pyx_pw_9adios_mpi_53read_init(PyObject *__pyx_self, PyObject
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_52read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_parameters) {
+static PyObject *__pyx_pf_9adios_mpi_88read_init(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_parameters) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -10960,7 +14045,7 @@ static PyObject *__pyx_pf_9adios_mpi_52read_init(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_t_2.parameters = __pyx_v_parameters;
   __pyx_t_1 = __pyx_f_9adios_mpi_read_init(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 874, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -10977,7 +14062,7 @@ static PyObject *__pyx_pf_9adios_mpi_52read_init(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":692
+/* "adios_mpi.pyx":884
  * 
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
@@ -10985,7 +14070,7 @@ static PyObject *__pyx_pf_9adios_mpi_52read_init(CYTHON_UNUSED PyObject *__pyx_s
  *     return adios_read_finalize_method (s2b(method))
  */
 
-static PyObject *__pyx_pw_9adios_mpi_55read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_91read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
 static int __pyx_f_9adios_mpi_read_finalize(CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_read_finalize *__pyx_optional_args) {
   PyObject *__pyx_v_method_name = ((PyObject*)__pyx_n_s_BP);
   PyObject *__pyx_v_method = 0;
@@ -11000,34 +14085,34 @@ static int __pyx_f_9adios_mpi_read_finalize(CYTHON_UNUSED int __pyx_skip_dispatc
     }
   }
 
-  /* "adios_mpi.pyx":693
+  /* "adios_mpi.pyx":885
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):
  *     cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  *     return adios_read_finalize_method (s2b(method))
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_9adios_mpi_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_9adios_mpi_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 885, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":694
+  /* "adios_mpi.pyx":886
  * cpdef int read_finalize(str method_name = "BP"):
  *     cdef method = str2adiosreadmethod(method_name)
  *     return adios_read_finalize_method (s2b(method))             # <<<<<<<<<<<<<<
  * 
  * ## dict for handling '/' prefix
  */
-  if (!(likely(PyString_CheckExact(__pyx_v_method))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_method)->tp_name), 0))) __PYX_ERR(0, 694, __pyx_L1_error)
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_v_method), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 694, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_v_method))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_method)->tp_name), 0))) __PYX_ERR(0, 886, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_v_method), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 694, __pyx_L1_error)
+  __pyx_t_2 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 886, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = adios_read_finalize_method(__pyx_t_2);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":692
+  /* "adios_mpi.pyx":884
  * 
  * """ Call adios_read_finalize_method """
  * cpdef int read_finalize(str method_name = "BP"):             # <<<<<<<<<<<<<<
@@ -11047,9 +14132,9 @@ static int __pyx_f_9adios_mpi_read_finalize(CYTHON_UNUSED int __pyx_skip_dispatc
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_55read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_54read_finalize[] = "read_finalize(str method_name='BP') -> int";
-static PyObject *__pyx_pw_9adios_mpi_55read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_91read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_90read_finalize[] = "read_finalize(str method_name='BP') -> int";
+static PyObject *__pyx_pw_9adios_mpi_91read_finalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_method_name = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -11075,7 +14160,7 @@ static PyObject *__pyx_pw_9adios_mpi_55read_finalize(PyObject *__pyx_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_finalize") < 0)) __PYX_ERR(0, 692, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_finalize") < 0)) __PYX_ERR(0, 884, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -11088,14 +14173,14 @@ static PyObject *__pyx_pw_9adios_mpi_55read_finalize(PyObject *__pyx_self, PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 692, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_finalize", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 884, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.read_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 692, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_54read_finalize(__pyx_self, __pyx_v_method_name);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 884, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_90read_finalize(__pyx_self, __pyx_v_method_name);
 
   /* function exit code */
   goto __pyx_L0;
@@ -11106,7 +14191,7 @@ static PyObject *__pyx_pw_9adios_mpi_55read_finalize(PyObject *__pyx_self, PyObj
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_54read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name) {
+static PyObject *__pyx_pf_9adios_mpi_90read_finalize(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_name) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -11117,7 +14202,7 @@ static PyObject *__pyx_pf_9adios_mpi_54read_finalize(CYTHON_UNUSED PyObject *__p
   __pyx_t_2.__pyx_n = 1;
   __pyx_t_2.method_name = __pyx_v_method_name;
   __pyx_t_1 = __pyx_f_9adios_mpi_read_finalize(0, &__pyx_t_2); 
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 692, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 884, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -11134,7 +14219,7 @@ static PyObject *__pyx_pf_9adios_mpi_54read_finalize(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":698
+/* "adios_mpi.pyx":890
  * ## dict for handling '/' prefix
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -11169,7 +14254,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios_mpi.pyx":699
+  /* "adios_mpi.pyx":891
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -11180,14 +14265,14 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":700
+    /* "adios_mpi.pyx":892
  *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 892, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -11195,7 +14280,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":699
+    /* "adios_mpi.pyx":891
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -11204,37 +14289,37 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
   }
 
-  /* "adios_mpi.pyx":702
+  /* "adios_mpi.pyx":894
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 702, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 894, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":703
+    /* "adios_mpi.pyx":895
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 895, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 703, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 895, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 703, __pyx_L1_error)
+    __PYX_ERR(0, 895, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":702
+    /* "adios_mpi.pyx":894
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -11243,7 +14328,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
   }
 
-  /* "adios_mpi.pyx":705
+  /* "adios_mpi.pyx":897
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -11254,26 +14339,26 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 705, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 897, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 705, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 897, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 705, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 897, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 705, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 705, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 897, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 705, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 897, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -11283,7 +14368,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 705, __pyx_L1_error)
+          else __PYX_ERR(0, 897, __pyx_L1_error)
         }
         break;
       }
@@ -11292,7 +14377,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":706
+    /* "adios_mpi.pyx":898
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -11303,20 +14388,20 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":707
+      /* "adios_mpi.pyx":899
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 899, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 707, __pyx_L1_error)
+      __PYX_ERR(0, 899, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":706
+      /* "adios_mpi.pyx":898
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -11325,35 +14410,35 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
     }
 
-    /* "adios_mpi.pyx":709
+    /* "adios_mpi.pyx":901
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 709, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 901, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 709, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 901, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 709, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 901, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":710
+      /* "adios_mpi.pyx":902
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in dict.keys(self):
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__14, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 710, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__15, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 902, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":709
+      /* "adios_mpi.pyx":901
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -11362,7 +14447,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
     }
 
-    /* "adios_mpi.pyx":712
+    /* "adios_mpi.pyx":904
  *                 key_ = key_[1:]
  * 
  *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -11371,16 +14456,16 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
     if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
       PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "keys", "dict");
-      __PYX_ERR(0, 712, __pyx_L1_error)
+      __PYX_ERR(0, 904, __pyx_L1_error)
     }
-    __pyx_t_7 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 712, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 904, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 712, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 904, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":713
+      /* "adios_mpi.pyx":905
  * 
  *             if key_ in dict.keys(self):
  *                 return dict.get(self, key_)             # <<<<<<<<<<<<<<
@@ -11390,16 +14475,16 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
         PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "get", "dict");
-        __PYX_ERR(0, 713, __pyx_L1_error)
+        __PYX_ERR(0, 905, __pyx_L1_error)
       }
-      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 713, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_v_key_, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 905, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_r = __pyx_t_7;
       __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":712
+      /* "adios_mpi.pyx":904
  *                 key_ = key_[1:]
  * 
  *             if key_ in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -11408,28 +14493,28 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
     }
 
-    /* "adios_mpi.pyx":715
+    /* "adios_mpi.pyx":907
  *                 return dict.get(self, key_)
  * 
  *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
  *                 return dict.get(self, '/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 715, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 907, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
       PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "keys", "dict");
-      __PYX_ERR(0, 715, __pyx_L1_error)
+      __PYX_ERR(0, 907, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 715, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 907, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 715, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 907, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":716
+      /* "adios_mpi.pyx":908
  * 
  *             if '/'+key_ in dict.keys(self):
  *                 return dict.get(self, '/'+key_)             # <<<<<<<<<<<<<<
@@ -11439,11 +14524,11 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
         PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "get", "dict");
-        __PYX_ERR(0, 716, __pyx_L1_error)
+        __PYX_ERR(0, 908, __pyx_L1_error)
       }
-      __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 716, __pyx_L1_error)
+      __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 908, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_t_3, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 716, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_self), __pyx_t_3, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 908, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_r = __pyx_t_7;
@@ -11451,7 +14536,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":715
+      /* "adios_mpi.pyx":907
  *                 return dict.get(self, key_)
  * 
  *             if '/'+key_ in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -11460,7 +14545,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
  */
     }
 
-    /* "adios_mpi.pyx":705
+    /* "adios_mpi.pyx":897
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -11470,27 +14555,27 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":718
+  /* "adios_mpi.pyx":910
  *                 return dict.get(self, '/'+key_)
  * 
  *         raise KeyError(key_)             # <<<<<<<<<<<<<<
  * 
  * ## Python class for ADIOS_FILE structure
  */
-  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 718, __pyx_L1_error) }
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 718, __pyx_L1_error)
+  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 910, __pyx_L1_error) }
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 910, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_key_);
   __Pyx_GIVEREF(__pyx_v_key_);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key_);
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 910, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_Raise(__pyx_t_7, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __PYX_ERR(0, 718, __pyx_L1_error)
+  __PYX_ERR(0, 910, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":698
+  /* "adios_mpi.pyx":890
  * ## dict for handling '/' prefix
  * cdef class softdict(dict):
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -11513,7 +14598,7 @@ static PyObject *__pyx_pf_9adios_mpi_8softdict___getitem__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":759
+/* "adios_mpi.pyx":951
  *     property name:
  *         """ The filename (or stream name) associated with. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11539,7 +14624,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4name___get__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":760
+  /* "adios_mpi.pyx":952
  *         """ The filename (or stream name) associated with. """
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -11551,7 +14636,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4name___get__(struct __pyx_obj_9adios
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":759
+  /* "adios_mpi.pyx":951
  *     property name:
  *         """ The filename (or stream name) associated with. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11566,7 +14651,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4name___get__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":764
+/* "adios_mpi.pyx":956
  *     property nvars:
  *         """ The number of variables. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11593,7 +14678,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adio
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":765
+  /* "adios_mpi.pyx":957
  *         """ The number of variables. """
  *         def __get__(self):
  *             return self.nvars             # <<<<<<<<<<<<<<
@@ -11601,13 +14686,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adio
  *     property nattrs:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 765, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 957, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":764
+  /* "adios_mpi.pyx":956
  *     property nvars:
  *         """ The number of variables. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11626,7 +14711,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_5nvars___get__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":769
+/* "adios_mpi.pyx":961
  *     property nattrs:
  *         """ The number of attributes. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11653,7 +14738,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":770
+  /* "adios_mpi.pyx":962
  *         """ The number of attributes. """
  *         def __get__(self):
  *             return self.nattrs             # <<<<<<<<<<<<<<
@@ -11661,13 +14746,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adi
  *     property current_step:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 770, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":769
+  /* "adios_mpi.pyx":961
  *     property nattrs:
  *         """ The number of attributes. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11686,7 +14771,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_6nattrs___get__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":774
+/* "adios_mpi.pyx":966
  *     property current_step:
  *         """ The current timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11713,7 +14798,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_o
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":775
+  /* "adios_mpi.pyx":967
  *         """ The current timestep index. """
  *         def __get__(self):
  *             return self.current_step             # <<<<<<<<<<<<<<
@@ -11721,13 +14806,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_o
  *     property last_step:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 967, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":774
+  /* "adios_mpi.pyx":966
  *     property current_step:
  *         """ The current timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11746,7 +14831,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_12current_step___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":779
+/* "adios_mpi.pyx":971
  *     property last_step:
  *         """ The last timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11773,7 +14858,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":780
+  /* "adios_mpi.pyx":972
  *         """ The last timestep index. """
  *         def __get__(self):
  *             return self.last_step             # <<<<<<<<<<<<<<
@@ -11781,13 +14866,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9
  *     property endianness:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 780, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 972, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":779
+  /* "adios_mpi.pyx":971
  *     property last_step:
  *         """ The last timestep index. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11806,7 +14891,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9last_step___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":784
+/* "adios_mpi.pyx":976
  *     property endianness:
  *         """ The endianness of the stored data. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11833,7 +14918,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":785
+  /* "adios_mpi.pyx":977
  *         """ The endianness of the stored data. """
  *         def __get__(self):
  *             return self.endianness             # <<<<<<<<<<<<<<
@@ -11841,13 +14926,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj
  *     property version:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->endianness); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 977, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":784
+  /* "adios_mpi.pyx":976
  *     property endianness:
  *         """ The endianness of the stored data. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11866,7 +14951,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_10endianness___get__(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":789
+/* "adios_mpi.pyx":981
  *     property version:
  *         """ The version of Adios. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11893,7 +14978,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9ad
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":790
+  /* "adios_mpi.pyx":982
  *         """ The version of Adios. """
  *         def __get__(self):
  *             return self.version             # <<<<<<<<<<<<<<
@@ -11901,13 +14986,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9ad
  *     property file_size:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 790, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 982, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":789
+  /* "adios_mpi.pyx":981
  *     property version:
  *         """ The version of Adios. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11926,7 +15011,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_7version___get__(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":794
+/* "adios_mpi.pyx":986
  *     property file_size:
  *         """ The size of Adios file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11953,7 +15038,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9file_size___get__(struct __pyx_obj_9
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":795
+  /* "adios_mpi.pyx":987
  *         """ The size of Adios file. """
  *         def __get__(self):
  *             return self.file_size             # <<<<<<<<<<<<<<
@@ -11961,13 +15046,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9file_size___get__(struct __pyx_obj_9
  *     property is_stream:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 795, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":794
+  /* "adios_mpi.pyx":986
  *     property file_size:
  *         """ The size of Adios file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -11986,7 +15071,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9file_size___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":799
+/* "adios_mpi.pyx":991
  *     property is_stream:
  *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -12013,7 +15098,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":800
+  /* "adios_mpi.pyx":992
  *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):
  *             return self.is_stream             # <<<<<<<<<<<<<<
@@ -12021,13 +15106,13 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9
  *     def __init__(self, str fname,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 992, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":799
+  /* "adios_mpi.pyx":991
  *     property is_stream:
  *         """ Indicating reader type; file reader or stream reader """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -12046,7 +15131,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_9is_stream___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":802
+/* "adios_mpi.pyx":994
  *             return self.is_stream
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
@@ -12070,9 +15155,9 @@ static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fname,&__pyx_n_s_method_name,&__pyx_n_s_comm,&__pyx_n_s_is_stream,&__pyx_n_s_lock_mode,&__pyx_n_s_timeout_sec,0};
     PyObject* values[6] = {0,0,0,0,0,0};
     values[1] = ((PyObject*)__pyx_n_s_BP);
-    values[2] = (PyObject *)__pyx_k__15;
+    values[2] = (PyObject *)__pyx_k__16;
 
-    /* "adios_mpi.pyx":805
+    /* "adios_mpi.pyx":997
  *                  str method_name = "BP",
  *                  MPI.Comm comm = MPI.COMM_WORLD,
  *                  is_stream = False,             # <<<<<<<<<<<<<<
@@ -12125,7 +15210,7 @@ static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 802, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 994, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -12144,30 +15229,30 @@ static int __pyx_pw_9adios_mpi_4file_1__init__(PyObject *__pyx_v_self, PyObject
     __pyx_v_comm = ((struct PyMPICommObject *)values[2]);
     __pyx_v_is_stream = values[3];
     if (values[4]) {
-      __pyx_v_lock_mode = ((ADIOS_LOCKMODE)__Pyx_PyInt_As_ADIOS_LOCKMODE(values[4])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 806, __pyx_L3_error)
+      __pyx_v_lock_mode = ((ADIOS_LOCKMODE)__Pyx_PyInt_As_ADIOS_LOCKMODE(values[4])); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 998, __pyx_L3_error)
     } else {
-      __pyx_v_lock_mode = __pyx_k__16;
+      __pyx_v_lock_mode = __pyx_k__17;
     }
     if (values[5]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 807, __pyx_L3_error)
+      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 999, __pyx_L3_error)
     } else {
       __pyx_v_timeout_sec = ((float)0.0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 802, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 994, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.file.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 802, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 803, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 804, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 994, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_name), (&PyString_Type), 1, "method_name", 1))) __PYX_ERR(0, 995, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 996, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_4file___init__(((struct __pyx_obj_9adios_mpi_file *)__pyx_v_self), __pyx_v_fname, __pyx_v_method_name, __pyx_v_comm, __pyx_v_is_stream, __pyx_v_lock_mode, __pyx_v_timeout_sec);
 
-  /* "adios_mpi.pyx":802
+  /* "adios_mpi.pyx":994
  *             return self.is_stream
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
@@ -12203,7 +15288,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   PyObject *__pyx_t_11 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":808
+  /* "adios_mpi.pyx":1000
  *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
  *                  float timeout_sec = 0.0):
  *         self.fp = NULL             # <<<<<<<<<<<<<<
@@ -12212,14 +15297,14 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
  */
   __pyx_v_self->fp = NULL;
 
-  /* "adios_mpi.pyx":809
+  /* "adios_mpi.pyx":1001
  *                  float timeout_sec = 0.0):
  *         self.fp = NULL
  *         self.vars = softdict()             # <<<<<<<<<<<<<<
  *         self.attrs = softdict()
  *         self.is_stream = is_stream
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 809, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1001, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->vars);
@@ -12227,14 +15312,14 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":810
+  /* "adios_mpi.pyx":1002
  *         self.fp = NULL
  *         self.vars = softdict()
  *         self.attrs = softdict()             # <<<<<<<<<<<<<<
  *         self.is_stream = is_stream
  *         cdef method = str2adiosreadmethod(method_name)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 810, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1002, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -12242,51 +15327,51 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":811
+  /* "adios_mpi.pyx":1003
  *         self.vars = softdict()
  *         self.attrs = softdict()
  *         self.is_stream = is_stream             # <<<<<<<<<<<<<<
  *         cdef method = str2adiosreadmethod(method_name)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 811, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1003, __pyx_L1_error)
   __pyx_v_self->is_stream = __pyx_t_2;
 
-  /* "adios_mpi.pyx":812
+  /* "adios_mpi.pyx":1004
  *         self.attrs = softdict()
  *         self.is_stream = is_stream
  *         cdef method = str2adiosreadmethod(method_name)             # <<<<<<<<<<<<<<
  * 
  *         if (is_stream):
  */
-  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_9adios_mpi_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 812, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_ADIOS_READ_METHOD(__pyx_f_9adios_mpi_str2adiosreadmethod(__pyx_v_method_name)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1004, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_method = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":814
+  /* "adios_mpi.pyx":1006
  *         cdef method = str2adiosreadmethod(method_name)
  * 
  *         if (is_stream):             # <<<<<<<<<<<<<<
  *             self.fp = adios_read_open(s2b(fname), method, comm.ob_mpi,
  *                                       lock_mode, timeout_sec)
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 814, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_stream); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1006, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":815
+    /* "adios_mpi.pyx":1007
  * 
  *         if (is_stream):
  *             self.fp = adios_read_open(s2b(fname), method, comm.ob_mpi,             # <<<<<<<<<<<<<<
  *                                       lock_mode, timeout_sec)
  *         else:
  */
-    __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1007, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 815, __pyx_L1_error)
-    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 815, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1007, __pyx_L1_error)
+    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1007, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":816
+    /* "adios_mpi.pyx":1008
  *         if (is_stream):
  *             self.fp = adios_read_open(s2b(fname), method, comm.ob_mpi,
  *                                       lock_mode, timeout_sec)             # <<<<<<<<<<<<<<
@@ -12296,7 +15381,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
     __pyx_v_self->fp = adios_read_open(__pyx_t_3, __pyx_t_4, __pyx_v_comm->ob_mpi, __pyx_v_lock_mode, __pyx_v_timeout_sec);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":814
+    /* "adios_mpi.pyx":1006
  *         cdef method = str2adiosreadmethod(method_name)
  * 
  *         if (is_stream):             # <<<<<<<<<<<<<<
@@ -12306,7 +15391,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":818
+  /* "adios_mpi.pyx":1010
  *                                       lock_mode, timeout_sec)
  *         else:
  *             self.fp = adios_read_open_file(s2b(fname), method, comm.ob_mpi)             # <<<<<<<<<<<<<<
@@ -12314,16 +15399,16 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
  *         assert self.fp != NULL, 'Not an open file'
  */
   /*else*/ {
-    __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 818, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_fname, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1010, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 818, __pyx_L1_error)
-    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 818, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1010, __pyx_L1_error)
+    __pyx_t_4 = ((ADIOS_READ_METHOD)__Pyx_PyInt_As_ADIOS_READ_METHOD(__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1010, __pyx_L1_error)
     __pyx_v_self->fp = adios_read_open_file(__pyx_t_5, __pyx_t_4, __pyx_v_comm->ob_mpi);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":820
+  /* "adios_mpi.pyx":1012
  *             self.fp = adios_read_open_file(s2b(fname), method, comm.ob_mpi)
  * 
  *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -12334,34 +15419,34 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 820, __pyx_L1_error)
+      __PYX_ERR(0, 1012, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":822
+  /* "adios_mpi.pyx":1014
  *         assert self.fp != NULL, 'Not an open file'
  * 
  *         self.name = fname.split('/')[-1]  ## basename             # <<<<<<<<<<<<<<
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 822, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1014, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1014, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 822, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1014, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->name);
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":823
+  /* "adios_mpi.pyx":1015
  * 
  *         self.name = fname.split('/')[-1]  ## basename
  *         self.nvars = self.fp.nvars             # <<<<<<<<<<<<<<
@@ -12371,7 +15456,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_7 = __pyx_v_self->fp->nvars;
   __pyx_v_self->nvars = __pyx_t_7;
 
-  /* "adios_mpi.pyx":824
+  /* "adios_mpi.pyx":1016
  *         self.name = fname.split('/')[-1]  ## basename
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs             # <<<<<<<<<<<<<<
@@ -12381,7 +15466,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_7 = __pyx_v_self->fp->nattrs;
   __pyx_v_self->nattrs = __pyx_t_7;
 
-  /* "adios_mpi.pyx":825
+  /* "adios_mpi.pyx":1017
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs
  *         self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
@@ -12391,7 +15476,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_7 = __pyx_v_self->fp->current_step;
   __pyx_v_self->current_step = __pyx_t_7;
 
-  /* "adios_mpi.pyx":826
+  /* "adios_mpi.pyx":1018
  *         self.nattrs = self.fp.nattrs
  *         self.current_step = self.fp.current_step
  *         self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
@@ -12401,7 +15486,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_7 = __pyx_v_self->fp->last_step;
   __pyx_v_self->last_step = __pyx_t_7;
 
-  /* "adios_mpi.pyx":827
+  /* "adios_mpi.pyx":1019
  *         self.current_step = self.fp.current_step
  *         self.last_step = self.fp.last_step
  *         self.endianness = self.fp.endianness             # <<<<<<<<<<<<<<
@@ -12411,7 +15496,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_7 = __pyx_v_self->fp->endianness;
   __pyx_v_self->endianness = __pyx_t_7;
 
-  /* "adios_mpi.pyx":828
+  /* "adios_mpi.pyx":1020
  *         self.last_step = self.fp.last_step
  *         self.endianness = self.fp.endianness
  *         self.version = self.fp.version             # <<<<<<<<<<<<<<
@@ -12421,7 +15506,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_7 = __pyx_v_self->fp->version;
   __pyx_v_self->version = __pyx_t_7;
 
-  /* "adios_mpi.pyx":829
+  /* "adios_mpi.pyx":1021
  *         self.endianness = self.fp.endianness
  *         self.version = self.fp.version
  *         self.file_size = self.fp.file_size             # <<<<<<<<<<<<<<
@@ -12431,21 +15516,21 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_t_8 = __pyx_v_self->fp->file_size;
   __pyx_v_self->file_size = __pyx_t_8;
 
-  /* "adios_mpi.pyx":831
+  /* "adios_mpi.pyx":1023
  *         self.file_size = self.fp.file_size
  * 
  *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
  *             self.attrs[b2s(name)] = attr(self, b2s(name))
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = __pyx_v_self->nattrs;
   for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_7; __pyx_t_9+=1) {
     __pyx_v_i = __pyx_t_9;
-    __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 831, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->attr_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1023, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 831, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 1023, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
@@ -12453,25 +15538,25 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   for (;;) {
     if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 831, __pyx_L1_error)
+    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1023, __pyx_L1_error)
     #else
-    __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
+    __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":832
+    /* "adios_mpi.pyx":1024
  * 
  *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:
  *             self.attrs[b2s(name)] = attr(self, b2s(name))             # <<<<<<<<<<<<<<
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
  */
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 832, __pyx_L1_error)
-    __pyx_t_1 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1024, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 832, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -12479,17 +15564,17 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attr), __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attr), __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 832, __pyx_L1_error)
-    __pyx_t_11 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 832, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1024, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
-    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_11, __pyx_t_1) < 0)) __PYX_ERR(0, 832, __pyx_L1_error)
+    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_11, __pyx_t_1) < 0)) __PYX_ERR(0, 1024, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":831
+    /* "adios_mpi.pyx":1023
  *         self.file_size = self.fp.file_size
  * 
  *         for name in [self.fp.attr_namelist[i] for i in range(self.nattrs)]:             # <<<<<<<<<<<<<<
@@ -12499,21 +15584,21 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios_mpi.pyx":834
+  /* "adios_mpi.pyx":1026
  *             self.attrs[b2s(name)] = attr(self, b2s(name))
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
  *             self.vars[b2s(name)] = var(self, b2s(name))
  * 
  */
-  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 834, __pyx_L1_error)
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1026, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = __pyx_v_self->nvars;
   for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_7; __pyx_t_9+=1) {
     __pyx_v_i = __pyx_t_9;
-    __pyx_t_1 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 834, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyBytes_FromString((__pyx_v_self->fp->var_namelist[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 834, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1026, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
@@ -12521,25 +15606,25 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   for (;;) {
     if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 834, __pyx_L1_error)
+    __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_6); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1026, __pyx_L1_error)
     #else
-    __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 834, __pyx_L1_error)
+    __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1026, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "adios_mpi.pyx":835
+    /* "adios_mpi.pyx":1027
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:
  *             self.vars[b2s(name)] = var(self, b2s(name))             # <<<<<<<<<<<<<<
  * 
  *         self.var = self.vars
  */
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 835, __pyx_L1_error)
-    __pyx_t_6 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1027, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 835, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -12547,17 +15632,17 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
     __Pyx_GIVEREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_var), __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_var), __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 835, __pyx_L1_error)
-    __pyx_t_11 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 835, __pyx_L1_error)
+    if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(0, 1027, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_9adios_mpi_b2s(((PyObject*)__pyx_v_name), 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
-    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_11, __pyx_t_6) < 0)) __PYX_ERR(0, 835, __pyx_L1_error)
+    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_11, __pyx_t_6) < 0)) __PYX_ERR(0, 1027, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "adios_mpi.pyx":834
+    /* "adios_mpi.pyx":1026
  *             self.attrs[b2s(name)] = attr(self, b2s(name))
  * 
  *         for name in [self.fp.var_namelist[i] for i in range(self.nvars)]:             # <<<<<<<<<<<<<<
@@ -12567,7 +15652,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":837
+  /* "adios_mpi.pyx":1029
  *             self.vars[b2s(name)] = var(self, b2s(name))
  * 
  *         self.var = self.vars             # <<<<<<<<<<<<<<
@@ -12582,7 +15667,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_v_self->var = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":838
+  /* "adios_mpi.pyx":1030
  * 
  *         self.var = self.vars
  *         self.attr = self.attrs             # <<<<<<<<<<<<<<
@@ -12597,7 +15682,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   __pyx_v_self->attr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":802
+  /* "adios_mpi.pyx":994
  *             return self.is_stream
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
@@ -12621,7 +15706,7 @@ static int __pyx_pf_9adios_mpi_4file___init__(struct __pyx_obj_9adios_mpi_file *
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":840
+/* "adios_mpi.pyx":1032
  *         self.attr = self.attrs
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -12649,18 +15734,18 @@ static PyObject *__pyx_pf_9adios_mpi_4file_2__del__(struct __pyx_obj_9adios_mpi_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__del__", 0);
 
-  /* "adios_mpi.pyx":842
+  /* "adios_mpi.pyx":1034
  *     def __del__(self):
  *         """ Close file on destruction. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     def __enter__(self):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_9adios_mpi_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 842, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_9adios_mpi_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1034, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":840
+  /* "adios_mpi.pyx":1032
  *         self.attr = self.attrs
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -12681,17 +15766,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_2__del__(struct __pyx_obj_9adios_mpi_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":844
+/* "adios_mpi.pyx":1036
  *         self.close()
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_9adios_mpi_4file_5__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_4file_4__enter__[] = "file.__enter__(self)\n Enter for with statemetn ";
+static char __pyx_doc_9adios_mpi_4file_4__enter__[] = "file.__enter__(self)\n Enter for with statement ";
 static PyObject *__pyx_pw_9adios_mpi_4file_5__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -12708,9 +15793,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4__enter__(struct __pyx_obj_9adios_mp
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "adios_mpi.pyx":846
+  /* "adios_mpi.pyx":1038
  *     def __enter__(self):
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self             # <<<<<<<<<<<<<<
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):
@@ -12720,11 +15805,11 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4__enter__(struct __pyx_obj_9adios_mp
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":844
+  /* "adios_mpi.pyx":1036
  *         self.close()
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
@@ -12735,7 +15820,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_4__enter__(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":848
+/* "adios_mpi.pyx":1040
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -12774,16 +15859,16 @@ static PyObject *__pyx_pw_9adios_mpi_4file_7__exit__(PyObject *__pyx_v_self, PyO
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 848, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 1040, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 848, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 1040, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 848, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 1040, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -12798,7 +15883,7 @@ static PyObject *__pyx_pw_9adios_mpi_4file_7__exit__(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 848, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1040, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.file.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12817,18 +15902,18 @@ static PyObject *__pyx_pf_9adios_mpi_4file_6__exit__(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "adios_mpi.pyx":850
+  /* "adios_mpi.pyx":1042
  *     def __exit__(self, exception_type, exception_value, traceback):
  *         """ Close file on exit. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     cpdef close(self):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_9adios_mpi_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_9adios_mpi_file *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":848
+  /* "adios_mpi.pyx":1040
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -12849,7 +15934,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_6__exit__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":852
+/* "adios_mpi.pyx":1044
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -12870,7 +15955,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_4file_9close)) {
       __Pyx_XDECREF(__pyx_r);
@@ -12886,10 +15971,10 @@ static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 852, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -12901,7 +15986,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":854
+  /* "adios_mpi.pyx":1046
  *     cpdef close(self):
  *         """ Close the open file. """
  *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -12912,12 +15997,12 @@ static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 854, __pyx_L1_error)
+      __PYX_ERR(0, 1046, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":855
+  /* "adios_mpi.pyx":1047
  *         """ Close the open file. """
  *         assert self.fp != NULL, 'Not an open file'
  *         adios_read_close(self.fp)             # <<<<<<<<<<<<<<
@@ -12926,7 +16011,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file
  */
   adios_read_close(__pyx_v_self->fp);
 
-  /* "adios_mpi.pyx":856
+  /* "adios_mpi.pyx":1048
  *         assert self.fp != NULL, 'Not an open file'
  *         adios_read_close(self.fp)
  *         self.fp = NULL             # <<<<<<<<<<<<<<
@@ -12935,7 +16020,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_close(struct __pyx_obj_9adios_mpi_file
  */
   __pyx_v_self->fp = NULL;
 
-  /* "adios_mpi.pyx":852
+  /* "adios_mpi.pyx":1044
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -12979,7 +16064,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_8close(struct __pyx_obj_9adios_mpi_fi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_4file_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_4file_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -12996,7 +16081,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_8close(struct __pyx_obj_9adios_mpi_fi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":858
+/* "adios_mpi.pyx":1050
  *         self.fp = NULL
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -13017,7 +16102,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_4file_11printself)) {
       __Pyx_XDECREF(__pyx_r);
@@ -13033,10 +16118,10 @@ static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1050, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 858, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1050, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13048,7 +16133,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":860
+  /* "adios_mpi.pyx":1052
  *     cpdef printself(self):
  *         """ Print native ADIOS_FILE structure. """
  *         assert self.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -13059,32 +16144,32 @@ static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 860, __pyx_L1_error)
+      __PYX_ERR(0, 1052, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":861
+  /* "adios_mpi.pyx":1053
  *         """ Print native ADIOS_FILE structure. """
  *         assert self.fp != NULL, 'Not an open file'
  *         print ('=== AdiosFile ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  *         printfile(self.fp)
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 861, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":862
+  /* "adios_mpi.pyx":1054
  *         assert self.fp != NULL, 'Not an open file'
  *         print ('=== AdiosFile ===')
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))             # <<<<<<<<<<<<<<
  *         printfile(self.fp)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fp);
   __Pyx_GIVEREF(__pyx_n_s_fp);
@@ -13092,31 +16177,31 @@ static PyObject *__pyx_f_9adios_mpi_4file_printself(struct __pyx_obj_9adios_mpi_
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":863
+  /* "adios_mpi.pyx":1055
  *         print ('=== AdiosFile ===')
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  *         printfile(self.fp)             # <<<<<<<<<<<<<<
  * 
  *     cpdef release_step(self):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_printfile(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 863, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_printfile(__pyx_v_self->fp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":858
+  /* "adios_mpi.pyx":1050
  *         self.fp = NULL
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -13160,7 +16245,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_10printself(struct __pyx_obj_9adios_m
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("printself", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_4file_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 858, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_4file_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -13177,7 +16262,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_10printself(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":865
+/* "adios_mpi.pyx":1057
  *         printfile(self.fp)
  * 
  *     cpdef release_step(self):             # <<<<<<<<<<<<<<
@@ -13198,7 +16283,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_release_step(struct __pyx_obj_9adios_m
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_release_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 865, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_release_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1057, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_4file_13release_step)) {
       __Pyx_XDECREF(__pyx_r);
@@ -13214,10 +16299,10 @@ static PyObject *__pyx_f_9adios_mpi_4file_release_step(struct __pyx_obj_9adios_m
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 865, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 865, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -13229,7 +16314,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_release_step(struct __pyx_obj_9adios_m
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":867
+  /* "adios_mpi.pyx":1059
  *     cpdef release_step(self):
  *         """ Release the current step lock and let the writer code to progress """
  *         adios_release_step(self.fp)             # <<<<<<<<<<<<<<
@@ -13238,7 +16323,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_release_step(struct __pyx_obj_9adios_m
  */
   adios_release_step(__pyx_v_self->fp);
 
-  /* "adios_mpi.pyx":865
+  /* "adios_mpi.pyx":1057
  *         printfile(self.fp)
  * 
  *     cpdef release_step(self):             # <<<<<<<<<<<<<<
@@ -13282,7 +16367,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_12release_step(struct __pyx_obj_9adio
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("release_step", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_4file_release_step(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 865, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_4file_release_step(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1057, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -13299,7 +16384,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_12release_step(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":869
+/* "adios_mpi.pyx":1061
  *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
@@ -13339,13 +16424,13 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 869, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_4file_15advance)) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_last); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 869, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_last); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1061, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_timeout_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 869, __pyx_L1_error)
+      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_timeout_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_5 = __pyx_t_1; __pyx_t_6 = NULL;
@@ -13360,7 +16445,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
           __pyx_t_7 = 1;
         }
       }
-      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 869, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1061, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       if (__pyx_t_6) {
         __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
@@ -13371,7 +16456,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
       PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
       __pyx_t_3 = 0;
       __pyx_t_4 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 869, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1061, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -13383,7 +16468,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":880
+  /* "adios_mpi.pyx":1072
  *             int: 0 if successful, non-zero otherwise.
  *         """
  *         val = adios_advance_step(self.fp, last, timeout_sec)             # <<<<<<<<<<<<<<
@@ -13392,7 +16477,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
  */
   __pyx_v_val = adios_advance_step(__pyx_v_self->fp, __pyx_v_last, __pyx_v_timeout_sec);
 
-  /* "adios_mpi.pyx":881
+  /* "adios_mpi.pyx":1073
  *         """
  *         val = adios_advance_step(self.fp, last, timeout_sec)
  *         if (val >= 0):             # <<<<<<<<<<<<<<
@@ -13402,7 +16487,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
   __pyx_t_9 = ((__pyx_v_val >= 0) != 0);
   if (__pyx_t_9) {
 
-    /* "adios_mpi.pyx":882
+    /* "adios_mpi.pyx":1074
  *         val = adios_advance_step(self.fp, last, timeout_sec)
  *         if (val >= 0):
  *             self.current_step = self.fp.current_step             # <<<<<<<<<<<<<<
@@ -13412,7 +16497,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
     __pyx_t_10 = __pyx_v_self->fp->current_step;
     __pyx_v_self->current_step = __pyx_t_10;
 
-    /* "adios_mpi.pyx":883
+    /* "adios_mpi.pyx":1075
  *         if (val >= 0):
  *             self.current_step = self.fp.current_step
  *             self.last_step = self.fp.last_step             # <<<<<<<<<<<<<<
@@ -13422,14 +16507,14 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
     __pyx_t_10 = __pyx_v_self->fp->last_step;
     __pyx_v_self->last_step = __pyx_t_10;
 
-    /* "adios_mpi.pyx":885
+    /* "adios_mpi.pyx":1077
  *             self.last_step = self.fp.last_step
  * 
  *             for v in self.vars.values():             # <<<<<<<<<<<<<<
  *                 v.advance()
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 885, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1077, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -13442,10 +16527,10 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 885, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1077, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 885, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1077, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -13453,9 +16538,9 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
       __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = 0;
       __pyx_t_11 = NULL;
     } else {
-      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 885, __pyx_L1_error)
+      __pyx_t_7 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1077, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 885, __pyx_L1_error)
+      __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1077, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     for (;;) {
@@ -13463,17 +16548,17 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
         if (likely(PyList_CheckExact(__pyx_t_2))) {
           if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 885, __pyx_L1_error)
+          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1077, __pyx_L1_error)
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 885, __pyx_L1_error)
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1077, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           #endif
         } else {
           if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 885, __pyx_L1_error)
+          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_7); __Pyx_INCREF(__pyx_t_1); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 1077, __pyx_L1_error)
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 885, __pyx_L1_error)
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1077, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           #endif
         }
@@ -13483,7 +16568,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 885, __pyx_L1_error)
+            else __PYX_ERR(0, 1077, __pyx_L1_error)
           }
           break;
         }
@@ -13492,14 +16577,14 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
       __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":886
+      /* "adios_mpi.pyx":1078
  * 
  *             for v in self.vars.values():
  *                 v.advance()             # <<<<<<<<<<<<<<
  * 
  *         return val
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_advance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 886, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_advance); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1078, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -13512,16 +16597,16 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
         }
       }
       if (__pyx_t_8) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":885
+      /* "adios_mpi.pyx":1077
  *             self.last_step = self.fp.last_step
  * 
  *             for v in self.vars.values():             # <<<<<<<<<<<<<<
@@ -13531,7 +16616,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":881
+    /* "adios_mpi.pyx":1073
  *         """
  *         val = adios_advance_step(self.fp, last, timeout_sec)
  *         if (val >= 0):             # <<<<<<<<<<<<<<
@@ -13540,7 +16625,7 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
  */
   }
 
-  /* "adios_mpi.pyx":888
+  /* "adios_mpi.pyx":1080
  *                 v.advance()
  * 
  *         return val             # <<<<<<<<<<<<<<
@@ -13548,13 +16633,13 @@ static PyObject *__pyx_f_9adios_mpi_4file_advance(struct __pyx_obj_9adios_mpi_fi
  *     def __getitem__(self, varname):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 888, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1080, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":869
+  /* "adios_mpi.pyx":1061
  *         adios_release_step(self.fp)
  * 
  *     cpdef advance(self, int last = 0, float timeout_sec = 0.0):             # <<<<<<<<<<<<<<
@@ -13615,7 +16700,7 @@ static PyObject *__pyx_pw_9adios_mpi_4file_15advance(PyObject *__pyx_v_self, PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) __PYX_ERR(0, 869, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "advance") < 0)) __PYX_ERR(0, 1061, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -13626,19 +16711,19 @@ static PyObject *__pyx_pw_9adios_mpi_4file_15advance(PyObject *__pyx_v_self, PyO
       }
     }
     if (values[0]) {
-      __pyx_v_last = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_last == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 869, __pyx_L3_error)
+      __pyx_v_last = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_last == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1061, __pyx_L3_error)
     } else {
       __pyx_v_last = ((int)0);
     }
     if (values[1]) {
-      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 869, __pyx_L3_error)
+      __pyx_v_timeout_sec = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_timeout_sec == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1061, __pyx_L3_error)
     } else {
       __pyx_v_timeout_sec = ((float)0.0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("advance", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 869, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("advance", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1061, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.file.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13661,7 +16746,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_14advance(struct __pyx_obj_9adios_mpi
   __pyx_t_2.__pyx_n = 2;
   __pyx_t_2.last = __pyx_v_last;
   __pyx_t_2.timeout_sec = __pyx_v_timeout_sec;
-  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_file->advance(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 869, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_file->advance(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -13678,7 +16763,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_14advance(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":890
+/* "adios_mpi.pyx":1082
  *         return val
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -13724,7 +16809,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios_mpi.pyx":901
+  /* "adios_mpi.pyx":1093
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -13735,14 +16820,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":902
+    /* "adios_mpi.pyx":1094
  *         """
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1094, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -13750,7 +16835,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":901
+    /* "adios_mpi.pyx":1093
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -13759,37 +16844,37 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":904
+  /* "adios_mpi.pyx":1096
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 904, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1096, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":905
+    /* "adios_mpi.pyx":1097
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 905, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1097, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 905, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1097, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 905, __pyx_L1_error)
+    __PYX_ERR(0, 1097, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":904
+    /* "adios_mpi.pyx":1096
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -13798,7 +16883,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":907
+  /* "adios_mpi.pyx":1099
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -13809,26 +16894,26 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 907, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1099, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 907, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1099, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 907, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1099, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 907, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 907, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1099, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 907, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1099, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -13838,7 +16923,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 907, __pyx_L1_error)
+          else __PYX_ERR(0, 1099, __pyx_L1_error)
         }
         break;
       }
@@ -13847,7 +16932,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":908
+    /* "adios_mpi.pyx":1100
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -13858,20 +16943,20 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":909
+      /* "adios_mpi.pyx":1101
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 909, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1101, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 909, __pyx_L1_error)
+      __PYX_ERR(0, 1101, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":908
+      /* "adios_mpi.pyx":1100
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -13880,35 +16965,35 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":911
+    /* "adios_mpi.pyx":1103
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1103, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 911, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1103, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 911, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1103, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":912
+      /* "adios_mpi.pyx":1104
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__21, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 912, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__22, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1104, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":911
+      /* "adios_mpi.pyx":1103
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -13917,14 +17002,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":914
+    /* "adios_mpi.pyx":1106
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 914, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13937,19 +17022,19 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 914, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1106, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 914, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1106, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 914, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1106, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":915
+      /* "adios_mpi.pyx":1107
  * 
  *             if key_ in self.vars.keys():
  *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
@@ -13957,7 +17042,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  *             if key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 915, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1107, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -13970,16 +17055,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 915, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1107, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 915, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1107, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 915, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1107, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -13989,7 +17074,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":914
+      /* "adios_mpi.pyx":1106
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -13998,14 +17083,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":917
+    /* "adios_mpi.pyx":1109
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1109, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14018,19 +17103,19 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 917, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1109, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 917, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1109, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 917, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1109, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":918
+      /* "adios_mpi.pyx":1110
  * 
  *             if key_ in self.attrs.keys():
  *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
@@ -14038,7 +17123,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  *             if '/'+key_ in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 918, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1110, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14051,16 +17136,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 918, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1110, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 918, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1110, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 918, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1110, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
@@ -14070,7 +17155,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":917
+      /* "adios_mpi.pyx":1109
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -14079,16 +17164,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":920
+    /* "adios_mpi.pyx":1112
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get('/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 920, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1112, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 920, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1112, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -14101,20 +17186,20 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 920, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1112, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 920, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1112, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 920, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1112, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":921
+      /* "adios_mpi.pyx":1113
  * 
  *             if '/'+key_ in self.vars.keys():
  *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -14122,9 +17207,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  *             if '/'+key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 921, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1113, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 921, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1113, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -14137,17 +17222,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 921, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1113, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 921, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
@@ -14157,7 +17242,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":920
+      /* "adios_mpi.pyx":1112
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -14166,16 +17251,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":923
+    /* "adios_mpi.pyx":1115
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get('/'+key_)
  * 
  */
-    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 923, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1115, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 923, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1115, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -14188,20 +17273,20 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 923, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1115, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 923, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1115, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 923, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1115, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":924
+      /* "adios_mpi.pyx":1116
  * 
  *             if '/'+key_ in self.attrs.keys():
  *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -14209,9 +17294,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  *             for name in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 924, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1116, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 924, __pyx_L1_error)
+      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1116, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14224,17 +17309,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1116, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 924, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1116, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
         __pyx_t_10 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 924, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1116, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -14244,7 +17329,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":923
+      /* "adios_mpi.pyx":1115
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -14253,14 +17338,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":926
+    /* "adios_mpi.pyx":1118
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1118, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14273,10 +17358,10 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1118, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1118, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14284,9 +17369,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 926, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1118, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 926, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1118, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -14294,17 +17379,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 926, __pyx_L1_error)
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1118, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1118, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 926, __pyx_L1_error)
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1118, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 926, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1118, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         }
@@ -14314,7 +17399,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 926, __pyx_L1_error)
+            else __PYX_ERR(0, 1118, __pyx_L1_error)
           }
           break;
         }
@@ -14323,14 +17408,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":928
+      /* "adios_mpi.pyx":1120
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self, key_)
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 928, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1120, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -14343,30 +17428,30 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 928, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1120, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 928, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1120, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 928, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1120, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 928, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1120, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L16_bool_binop_done;
       }
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 928, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1120, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 928, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1120, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -14379,28 +17464,28 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 928, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1120, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 928, __pyx_L1_error)
+        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1120, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 928, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1120, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 928, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1120, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L16_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios_mpi.pyx":929
+        /* "adios_mpi.pyx":1121
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self, key_)             # <<<<<<<<<<<<<<
@@ -14408,7 +17493,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  *             for name in self.attrs.keys():
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_INCREF(((PyObject *)__pyx_v_self));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -14416,7 +17501,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_key_);
-        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 929, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1121, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_r = __pyx_t_9;
@@ -14425,7 +17510,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         goto __pyx_L0;
 
-        /* "adios_mpi.pyx":928
+        /* "adios_mpi.pyx":1120
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -14434,7 +17519,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
       }
 
-      /* "adios_mpi.pyx":926
+      /* "adios_mpi.pyx":1118
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -14444,14 +17529,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":931
+    /* "adios_mpi.pyx":1123
  *                     return group(self, key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 931, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1123, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -14464,10 +17549,10 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 931, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1123, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 931, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1123, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -14475,9 +17560,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 931, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1123, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 931, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1123, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     for (;;) {
@@ -14485,17 +17570,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         if (likely(PyList_CheckExact(__pyx_t_9))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 931, __pyx_L1_error)
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1123, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 931, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1123, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 931, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1123, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 931, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1123, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -14505,7 +17590,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 931, __pyx_L1_error)
+            else __PYX_ERR(0, 1123, __pyx_L1_error)
           }
           break;
         }
@@ -14514,14 +17599,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":933
+      /* "adios_mpi.pyx":1125
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self, key_)
  * 
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 933, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1125, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -14534,30 +17619,30 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 933, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1125, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 933, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1125, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 933, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1125, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1125, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L21_bool_binop_done;
       }
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 933, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1125, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 933, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1125, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -14570,28 +17655,28 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 933, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1125, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 933, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1125, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 933, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1125, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 933, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1125, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L21_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios_mpi.pyx":934
+        /* "adios_mpi.pyx":1126
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self, key_)             # <<<<<<<<<<<<<<
@@ -14599,7 +17684,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  *         raise KeyError(key_)
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_v_self));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -14607,7 +17692,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 934, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1126, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_7;
@@ -14616,7 +17701,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         goto __pyx_L0;
 
-        /* "adios_mpi.pyx":933
+        /* "adios_mpi.pyx":1125
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -14625,7 +17710,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
  */
       }
 
-      /* "adios_mpi.pyx":931
+      /* "adios_mpi.pyx":1123
  *                     return group(self, key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -14635,7 +17720,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
     }
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-    /* "adios_mpi.pyx":907
+    /* "adios_mpi.pyx":1099
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -14645,27 +17730,27 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":936
+  /* "adios_mpi.pyx":1128
  *                     return group(self, key_)
  * 
  *         raise KeyError(key_)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 936, __pyx_L1_error) }
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 936, __pyx_L1_error)
+  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 1128, __pyx_L1_error) }
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1128, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_key_);
   __Pyx_GIVEREF(__pyx_v_key_);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key_);
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 936, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1128, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_Raise(__pyx_t_9, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __PYX_ERR(0, 936, __pyx_L1_error)
+  __PYX_ERR(0, 1128, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":890
+  /* "adios_mpi.pyx":1082
  *         return val
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -14693,7 +17778,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_16__getitem__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":939
+/* "adios_mpi.pyx":1131
  * 
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -14732,7 +17817,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":941
+  /* "adios_mpi.pyx":1133
  *     def __repr__(self):
  *         """ Return string representation. """
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "             # <<<<<<<<<<<<<<
@@ -14741,7 +17826,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":943
+  /* "adios_mpi.pyx":1135
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \
  *                 (self.fp.path if self.fp != NULL else None,             # <<<<<<<<<<<<<<
@@ -14749,7 +17834,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
  *                  self.vars.keys(),
  */
   if (((__pyx_v_self->fp != NULL) != 0)) {
-    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_self->fp->path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 943, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_self->fp->path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1135, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -14758,24 +17843,24 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
     __pyx_t_1 = Py_None;
   }
 
-  /* "adios_mpi.pyx":944
+  /* "adios_mpi.pyx":1136
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \
  *                 (self.fp.path if self.fp != NULL else None,
  *                  self.nvars,             # <<<<<<<<<<<<<<
  *                  self.vars.keys(),
  *                  self.nattrs,
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1136, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios_mpi.pyx":945
+  /* "adios_mpi.pyx":1137
  *                 (self.fp.path if self.fp != NULL else None,
  *                  self.nvars,
  *                  self.vars.keys(),             # <<<<<<<<<<<<<<
  *                  self.nattrs,
  *                  self.attrs.keys(),
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 945, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1137, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -14788,32 +17873,32 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 945, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 945, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":946
+  /* "adios_mpi.pyx":1138
  *                  self.nvars,
  *                  self.vars.keys(),
  *                  self.nattrs,             # <<<<<<<<<<<<<<
  *                  self.attrs.keys(),
  *                  self.current_step,
  */
-  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 946, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->nattrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
-  /* "adios_mpi.pyx":947
+  /* "adios_mpi.pyx":1139
  *                  self.vars.keys(),
  *                  self.nattrs,
  *                  self.attrs.keys(),             # <<<<<<<<<<<<<<
  *                  self.current_step,
  *                  self.last_step,
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 947, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1139, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -14826,52 +17911,52 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
     }
   }
   if (__pyx_t_7) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 947, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1139, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 947, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1139, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios_mpi.pyx":948
+  /* "adios_mpi.pyx":1140
  *                  self.nattrs,
  *                  self.attrs.keys(),
  *                  self.current_step,             # <<<<<<<<<<<<<<
  *                  self.last_step,
  *                  self.file_size)
  */
-  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 948, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->current_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1140, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
 
-  /* "adios_mpi.pyx":949
+  /* "adios_mpi.pyx":1141
  *                  self.attrs.keys(),
  *                  self.current_step,
  *                  self.last_step,             # <<<<<<<<<<<<<<
  *                  self.file_size)
  * 
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 949, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->last_step); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
 
-  /* "adios_mpi.pyx":950
+  /* "adios_mpi.pyx":1142
  *                  self.current_step,
  *                  self.last_step,
  *                  self.file_size)             # <<<<<<<<<<<<<<
  * 
  *     ## For access var/attr/group as an attribute
  */
-  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 950, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->file_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1142, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
 
-  /* "adios_mpi.pyx":943
+  /* "adios_mpi.pyx":1135
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \
  *                 (self.fp.path if self.fp != NULL else None,             # <<<<<<<<<<<<<<
  *                  self.nvars,
  *                  self.vars.keys(),
  */
-  __pyx_t_9 = PyTuple_New(8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 943, __pyx_L1_error)
+  __pyx_t_9 = PyTuple_New(8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1135, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1);
@@ -14898,21 +17983,21 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
   __pyx_t_7 = 0;
   __pyx_t_8 = 0;
 
-  /* "adios_mpi.pyx":942
+  /* "adios_mpi.pyx":1134
  *         """ Return string representation. """
  *         return ("AdiosFile (path=%r, nvars=%r, vars=%r, nattrs=%r, attrs=%r, "
  *                 "current_step=%r, last_step=%r, file_size=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.fp.path if self.fp != NULL else None,
  *                  self.nvars,
  */
-  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 942, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_AdiosFile_path_r_nvars_r_vars_r, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1134, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __pyx_r = __pyx_t_8;
   __pyx_t_8 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":939
+  /* "adios_mpi.pyx":1131
  * 
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -14939,7 +18024,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_18__repr__(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":953
+/* "adios_mpi.pyx":1145
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -14969,7 +18054,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios_mpi.pyx":954
+  /* "adios_mpi.pyx":1146
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):
  *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
@@ -14977,7 +18062,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios
  *     ## To support ipython tab completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 954, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1146, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -14990,16 +18075,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 954, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 954, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 954, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -15008,7 +18093,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":953
+  /* "adios_mpi.pyx":1145
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -15030,7 +18115,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_20__getattr__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":957
+/* "adios_mpi.pyx":1149
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -15065,28 +18150,28 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios_mpi.pyx":958
+  /* "adios_mpi.pyx":1150
  *     ## To support ipython tab completion
  *     def __dir__(self):
  *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/var1'] == f.var1
  */
-  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 958, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_k0 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":961
+  /* "adios_mpi.pyx":1153
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/var1'] == f.var1
  *         k1 = normalize_key(self.vars.keys())             # <<<<<<<<<<<<<<
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 961, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1153, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 961, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1153, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -15099,10 +18184,10 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 961, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1153, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 961, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1153, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15117,17 +18202,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 961, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1153, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 961, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -15135,16 +18220,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
   __pyx_v_k1 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":962
+  /* "adios_mpi.pyx":1154
  *         ## E.g., f['/var1'] == f.var1
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
  *         return k0 + k1 + k2
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 962, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -15157,10 +18242,10 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1154, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -15175,17 +18260,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1154, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -15193,7 +18278,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
   __pyx_v_k2 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":963
+  /* "adios_mpi.pyx":1155
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
@@ -15201,16 +18286,16 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
  *     ## Require for dictionary key completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 963, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 963, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1155, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":957
+  /* "adios_mpi.pyx":1149
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -15236,7 +18321,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_22__dir__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":966
+/* "adios_mpi.pyx":1158
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -15267,7 +18352,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_fi
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios_mpi.pyx":967
+  /* "adios_mpi.pyx":1159
  *     ## Require for dictionary key completion
  *     def keys(self):
  *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
@@ -15275,7 +18360,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_fi
  *     def is_open(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 967, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1159, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15288,14 +18373,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_fi
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 967, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 967, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 967, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1159, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -15308,14 +18393,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_fi
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 967, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1159, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 967, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1159, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 967, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1159, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -15323,7 +18408,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_fi
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":966
+  /* "adios_mpi.pyx":1158
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -15345,7 +18430,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_24keys(struct __pyx_obj_9adios_mpi_fi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":969
+/* "adios_mpi.pyx":1161
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def is_open(self):             # <<<<<<<<<<<<<<
@@ -15373,7 +18458,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_26is_open(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("is_open", 0);
 
-  /* "adios_mpi.pyx":971
+  /* "adios_mpi.pyx":1163
  *     def is_open(self):
  *         """ Check whether file is open or closed """
  *         return True if self.fp != NULL else False             # <<<<<<<<<<<<<<
@@ -15392,7 +18477,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_26is_open(struct __pyx_obj_9adios_mpi
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":969
+  /* "adios_mpi.pyx":1161
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def is_open(self):             # <<<<<<<<<<<<<<
@@ -15407,7 +18492,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_26is_open(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":974
+/* "adios_mpi.pyx":1166
  * 
  *     ## for py2
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -15437,14 +18522,14 @@ static int __pyx_pf_9adios_mpi_4file_28__nonzero__(struct __pyx_obj_9adios_mpi_f
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
 
-  /* "adios_mpi.pyx":975
+  /* "adios_mpi.pyx":1167
  *     ## for py2
  *     def __nonzero__(self):
  *         return self.is_open()             # <<<<<<<<<<<<<<
  * 
  *     ## for py3
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1167, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15457,19 +18542,19 @@ static int __pyx_pf_9adios_mpi_4file_28__nonzero__(struct __pyx_obj_9adios_mpi_f
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 975, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 975, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1167, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":974
+  /* "adios_mpi.pyx":1166
  * 
  *     ## for py2
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -15489,7 +18574,7 @@ static int __pyx_pf_9adios_mpi_4file_28__nonzero__(struct __pyx_obj_9adios_mpi_f
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":978
+/* "adios_mpi.pyx":1170
  * 
  *     ## for py3
  *     def __bool__(self):             # <<<<<<<<<<<<<<
@@ -15519,14 +18604,14 @@ static int __pyx_pf_9adios_mpi_4file_30__bool__(struct __pyx_obj_9adios_mpi_file
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__bool__", 0);
 
-  /* "adios_mpi.pyx":980
+  /* "adios_mpi.pyx":1172
  *     def __bool__(self):
  *         """ Check whether file is open or closed """
  *         return self.is_open()             # <<<<<<<<<<<<<<
  * 
  *     def dirs(self):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 980, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_open); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1172, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15539,19 +18624,19 @@ static int __pyx_pf_9adios_mpi_4file_30__bool__(struct __pyx_obj_9adios_mpi_file
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 980, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1172, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 980, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1172, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_4;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":978
+  /* "adios_mpi.pyx":1170
  * 
  *     ## for py3
  *     def __bool__(self):             # <<<<<<<<<<<<<<
@@ -15571,7 +18656,7 @@ static int __pyx_pf_9adios_mpi_4file_30__bool__(struct __pyx_obj_9adios_mpi_file
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":982
+/* "adios_mpi.pyx":1174
  *         return self.is_open()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -15609,26 +18694,26 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("dirs", 0);
 
-  /* "adios_mpi.pyx":984
+  /* "adios_mpi.pyx":1176
  *     def dirs(self):
  *         """ Return child dir names """
  *         s = set()             # <<<<<<<<<<<<<<
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 984, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_s = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":985
+  /* "adios_mpi.pyx":1177
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 985, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15641,10 +18726,10 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -15652,9 +18737,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 985, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1177, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 985, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1177, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -15662,17 +18747,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 985, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1177, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 985, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1177, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1177, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -15682,7 +18767,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 985, __pyx_L1_error)
+          else __PYX_ERR(0, 1177, __pyx_L1_error)
         }
         break;
       }
@@ -15691,40 +18776,40 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":986
+    /* "adios_mpi.pyx":1178
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1178, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 986, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1178, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__23, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 986, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__24, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1178, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios_mpi.pyx":987
+    /* "adios_mpi.pyx":1179
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_7 = NULL;
@@ -15738,33 +18823,33 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
       }
     }
     if (!__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1179, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1179, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":985
+    /* "adios_mpi.pyx":1177
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -15774,14 +18859,14 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":988
+  /* "adios_mpi.pyx":1180
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -15794,10 +18879,10 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -15805,9 +18890,9 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1180, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 988, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1180, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -15815,17 +18900,17 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 988, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1180, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 988, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1180, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -15835,7 +18920,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 988, __pyx_L1_error)
+          else __PYX_ERR(0, 1180, __pyx_L1_error)
         }
         break;
       }
@@ -15844,40 +18929,40 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":989
+    /* "adios_mpi.pyx":1181
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1181, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 989, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1181, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__26, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 989, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__27, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1181, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios_mpi.pyx":990
+    /* "adios_mpi.pyx":1182
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_8 = NULL;
@@ -15891,33 +18976,33 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
       }
     }
     if (!__pyx_t_8) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 990, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1182, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 990, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1182, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":988
+    /* "adios_mpi.pyx":1180
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -15927,7 +19012,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":991
+  /* "adios_mpi.pyx":1183
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))             # <<<<<<<<<<<<<<
@@ -15935,20 +19020,20 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
  * cdef class blockinfo(object):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 991, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1183, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 991, __pyx_L1_error)
-  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
+  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 1183, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1183, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 991, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1183, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":982
+  /* "adios_mpi.pyx":1174
  *         return self.is_open()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -15973,7 +19058,7 @@ static PyObject *__pyx_pf_9adios_mpi_4file_32dirs(struct __pyx_obj_9adios_mpi_fi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":752
+/* "adios_mpi.pyx":944
  * 
  *     ## Public Memeber
  *     cpdef public softdict vars             # <<<<<<<<<<<<<<
@@ -16028,7 +19113,7 @@ static int __pyx_pf_9adios_mpi_4file_4vars_2__set__(struct __pyx_obj_9adios_mpi_
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 752, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 944, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -16078,7 +19163,7 @@ static int __pyx_pf_9adios_mpi_4file_4vars_4__del__(struct __pyx_obj_9adios_mpi_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":753
+/* "adios_mpi.pyx":945
  *     ## Public Memeber
  *     cpdef public softdict vars
  *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
@@ -16133,7 +19218,7 @@ static int __pyx_pf_9adios_mpi_4file_5attrs_2__set__(struct __pyx_obj_9adios_mpi
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 753, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 945, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -16183,7 +19268,7 @@ static int __pyx_pf_9adios_mpi_4file_5attrs_4__del__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":754
+/* "adios_mpi.pyx":946
  *     cpdef public softdict vars
  *     cpdef public softdict attrs
  *     cpdef public var             # <<<<<<<<<<<<<<
@@ -16278,7 +19363,7 @@ static int __pyx_pf_9adios_mpi_4file_3var_4__del__(struct __pyx_obj_9adios_mpi_f
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":755
+/* "adios_mpi.pyx":947
  *     cpdef public softdict attrs
  *     cpdef public var
  *     cpdef public attr             # <<<<<<<<<<<<<<
@@ -16373,7 +19458,7 @@ static int __pyx_pf_9adios_mpi_4file_4attr_4__del__(struct __pyx_obj_9adios_mpi_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1000
+/* "adios_mpi.pyx":1192
  * 
  *     property start:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16399,7 +19484,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5start___get__(struct __pyx_obj_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1001
+  /* "adios_mpi.pyx":1193
  *     property start:
  *         def __get__(self):
  *             return self.start             # <<<<<<<<<<<<<<
@@ -16411,7 +19496,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5start___get__(struct __pyx_obj_
   __pyx_r = __pyx_v_self->start;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1000
+  /* "adios_mpi.pyx":1192
  * 
  *     property start:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16426,7 +19511,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5start___get__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1004
+/* "adios_mpi.pyx":1196
  * 
  *     property count:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16452,7 +19537,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5count___get__(struct __pyx_obj_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1005
+  /* "adios_mpi.pyx":1197
  *     property count:
  *         def __get__(self):
  *             return self.count             # <<<<<<<<<<<<<<
@@ -16464,7 +19549,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5count___get__(struct __pyx_obj_
   __pyx_r = __pyx_v_self->count;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1004
+  /* "adios_mpi.pyx":1196
  * 
  *     property count:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16479,7 +19564,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_5count___get__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1008
+/* "adios_mpi.pyx":1200
  * 
  *     property process_id:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16506,7 +19591,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10process_id___get__(struct __py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1009
+  /* "adios_mpi.pyx":1201
  *     property process_id:
  *         def __get__(self):
  *             return self.process_id             # <<<<<<<<<<<<<<
@@ -16514,13 +19599,13 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10process_id___get__(struct __py
  *     property time_index:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1201, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1008
+  /* "adios_mpi.pyx":1200
  * 
  *     property process_id:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16539,7 +19624,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10process_id___get__(struct __py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1012
+/* "adios_mpi.pyx":1204
  * 
  *     property time_index:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16566,7 +19651,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10time_index___get__(struct __py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1013
+  /* "adios_mpi.pyx":1205
  *     property time_index:
  *         def __get__(self):
  *             return self.time_index             # <<<<<<<<<<<<<<
@@ -16574,13 +19659,13 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10time_index___get__(struct __py
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1013, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1205, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1012
+  /* "adios_mpi.pyx":1204
  * 
  *     property time_index:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16599,7 +19684,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_10time_index___get__(struct __py
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1015
+/* "adios_mpi.pyx":1207
  *             return self.time_index
  * 
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
@@ -16639,21 +19724,21 @@ static int __pyx_pw_9adios_mpi_9blockinfo_1__init__(PyObject *__pyx_v_self, PyOb
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 1015, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(0, 1207, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_process_id)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 1015, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(0, 1207, __pyx_L3_error)
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time_index)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 1015, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(0, 1207, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1015, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1207, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -16665,19 +19750,19 @@ static int __pyx_pw_9adios_mpi_9blockinfo_1__init__(PyObject *__pyx_v_self, PyOb
     }
     __pyx_v_start = ((PyObject*)values[0]);
     __pyx_v_count = ((PyObject*)values[1]);
-    __pyx_v_process_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_process_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1015, __pyx_L3_error)
-    __pyx_v_time_index = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_time_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1015, __pyx_L3_error)
+    __pyx_v_process_id = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_process_id == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1207, __pyx_L3_error)
+    __pyx_v_time_index = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_time_index == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1207, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1015, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1207, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.blockinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyTuple_Type), 1, "start", 1))) __PYX_ERR(0, 1015, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1015, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_start), (&PyTuple_Type), 1, "start", 1))) __PYX_ERR(0, 1207, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1207, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_9blockinfo___init__(((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_v_self), __pyx_v_start, __pyx_v_count, __pyx_v_process_id, __pyx_v_time_index);
 
   /* function exit code */
@@ -16694,7 +19779,7 @@ static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_b
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1016
+  /* "adios_mpi.pyx":1208
  * 
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
  *         self.start = start             # <<<<<<<<<<<<<<
@@ -16707,7 +19792,7 @@ static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_b
   __Pyx_DECREF(__pyx_v_self->start);
   __pyx_v_self->start = __pyx_v_start;
 
-  /* "adios_mpi.pyx":1017
+  /* "adios_mpi.pyx":1209
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):
  *         self.start = start
  *         self.count = count             # <<<<<<<<<<<<<<
@@ -16720,7 +19805,7 @@ static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_b
   __Pyx_DECREF(__pyx_v_self->count);
   __pyx_v_self->count = __pyx_v_count;
 
-  /* "adios_mpi.pyx":1018
+  /* "adios_mpi.pyx":1210
  *         self.start = start
  *         self.count = count
  *         self.process_id = process_id             # <<<<<<<<<<<<<<
@@ -16729,7 +19814,7 @@ static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_b
  */
   __pyx_v_self->process_id = __pyx_v_process_id;
 
-  /* "adios_mpi.pyx":1019
+  /* "adios_mpi.pyx":1211
  *         self.count = count
  *         self.process_id = process_id
  *         self.time_index = time_index             # <<<<<<<<<<<<<<
@@ -16738,7 +19823,7 @@ static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_b
  */
   __pyx_v_self->time_index = __pyx_v_time_index;
 
-  /* "adios_mpi.pyx":1015
+  /* "adios_mpi.pyx":1207
  *             return self.time_index
  * 
  *     def __init__(self, tuple start, tuple count, int process_id, int time_index):             # <<<<<<<<<<<<<<
@@ -16752,7 +19837,7 @@ static int __pyx_pf_9adios_mpi_9blockinfo___init__(struct __pyx_obj_9adios_mpi_b
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1021
+/* "adios_mpi.pyx":1213
  *         self.time_index = time_index
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -16781,7 +19866,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_2__repr__(struct __pyx_obj_9adio
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1022
+  /* "adios_mpi.pyx":1214
  * 
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
@@ -16790,34 +19875,34 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_2__repr__(struct __pyx_obj_9adio
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1023
+  /* "adios_mpi.pyx":1215
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
  *                (self.process_id,             # <<<<<<<<<<<<<<
  *                 self.time_index,
  *                 self.start,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->process_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":1024
+  /* "adios_mpi.pyx":1216
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
  *                (self.process_id,
  *                 self.time_index,             # <<<<<<<<<<<<<<
  *                 self.start,
  *                 self.count)
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1024, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->time_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios_mpi.pyx":1023
+  /* "adios_mpi.pyx":1215
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \
  *                (self.process_id,             # <<<<<<<<<<<<<<
  *                 self.time_index,
  *                 self.start,
  */
-  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1023, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1215, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -16832,21 +19917,21 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_2__repr__(struct __pyx_obj_9adio
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1022
+  /* "adios_mpi.pyx":1214
  * 
  *     def __repr__(self):
  *         return "AdiosBlockinfo (process_id=%r, time_index=%r, start=%r, count=%r)" % \             # <<<<<<<<<<<<<<
  *                (self.process_id,
  *                 self.time_index,
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosBlockinfo_process_id_r_time, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1022, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosBlockinfo_process_id_r_time, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1214, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1021
+  /* "adios_mpi.pyx":1213
  *         self.time_index = time_index
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -16867,7 +19952,7 @@ static PyObject *__pyx_pf_9adios_mpi_9blockinfo_2__repr__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1058
+/* "adios_mpi.pyx":1250
  *     property name:
  *         """ The variable name. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16893,7 +19978,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1059
+  /* "adios_mpi.pyx":1251
  *         """ The variable name. """
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -16905,7 +19990,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1058
+  /* "adios_mpi.pyx":1250
  *     property name:
  *         """ The variable name. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16920,7 +20005,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4name___get__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1063
+/* "adios_mpi.pyx":1255
  *     property varid:
  *         """ Internal variable id. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16947,7 +20032,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1064
+  /* "adios_mpi.pyx":1256
  *         """ Internal variable id. """
  *         def __get__(self):
  *             return self.varid             # <<<<<<<<<<<<<<
@@ -16955,13 +20040,13 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios
  *     property dtype:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1064, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1063
+  /* "adios_mpi.pyx":1255
  *     property varid:
  *         """ Internal variable id. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16980,7 +20065,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5varid___get__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1068
+/* "adios_mpi.pyx":1260
  *     property dtype:
  *         """ Variable type as in numpy.dtype. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17006,7 +20091,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1069
+  /* "adios_mpi.pyx":1261
  *         """ Variable type as in numpy.dtype. """
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -17018,7 +20103,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios
   __pyx_r = ((PyObject *)__pyx_v_self->dtype);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1068
+  /* "adios_mpi.pyx":1260
  *     property dtype:
  *         """ Variable type as in numpy.dtype. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17033,7 +20118,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5dtype___get__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1073
+/* "adios_mpi.pyx":1265
  *     property ndim:
  *         """ The number of dimensions of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17060,7 +20145,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1074
+  /* "adios_mpi.pyx":1266
  *         """ The number of dimensions of the variable. """
  *         def __get__(self):
  *             return self.ndim             # <<<<<<<<<<<<<<
@@ -17068,13 +20153,13 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_
  *     property dims:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1074, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1073
+  /* "adios_mpi.pyx":1265
  *     property ndim:
  *         """ The number of dimensions of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17093,7 +20178,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4ndim___get__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1078
+/* "adios_mpi.pyx":1270
  *     property dims:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17119,7 +20204,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1079
+  /* "adios_mpi.pyx":1271
  *         """ The shape of the variable. """
  *         def __get__(self):
  *             return self.dims             # <<<<<<<<<<<<<<
@@ -17131,7 +20216,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_
   __pyx_r = __pyx_v_self->dims;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1078
+  /* "adios_mpi.pyx":1270
  *     property dims:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17146,7 +20231,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4dims___get__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1083
+/* "adios_mpi.pyx":1275
  *     property shape:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17172,7 +20257,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5shape___get__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1084
+  /* "adios_mpi.pyx":1276
  *         """ The shape of the variable. """
  *         def __get__(self):
  *             return self.dims             # <<<<<<<<<<<<<<
@@ -17184,7 +20269,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5shape___get__(struct __pyx_obj_9adios
   __pyx_r = __pyx_v_self->dims;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1083
+  /* "adios_mpi.pyx":1275
  *     property shape:
  *         """ The shape of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17199,7 +20284,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5shape___get__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1088
+/* "adios_mpi.pyx":1280
  *     property size:
  *         """ The number of elements in the array. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17229,7 +20314,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1089
+  /* "adios_mpi.pyx":1281
  *         """ The number of elements in the array. """
  *         def __get__(self):
  *             return np.prod(self.dims)             # <<<<<<<<<<<<<<
@@ -17237,9 +20322,9 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_
  *     property nsteps:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1089, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1281, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_prod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1089, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_prod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1281, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -17253,16 +20338,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1281, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1089, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1281, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_self->dims);
     __Pyx_GIVEREF(__pyx_v_self->dims);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->dims);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1089, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1281, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -17271,7 +20356,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1088
+  /* "adios_mpi.pyx":1280
  *     property size:
  *         """ The number of elements in the array. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17293,7 +20378,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4size___get__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1093
+/* "adios_mpi.pyx":1285
  *     property nsteps:
  *         """ The number of time steps of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17320,7 +20405,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adio
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1094
+  /* "adios_mpi.pyx":1286
  *         """ The number of time steps of the variable. """
  *         def __get__(self):
  *             return self.nsteps             # <<<<<<<<<<<<<<
@@ -17328,13 +20413,13 @@ static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adio
  *     property attrs:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1094, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1286, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1093
+  /* "adios_mpi.pyx":1285
  *     property nsteps:
  *         """ The number of time steps of the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17353,7 +20438,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_6nsteps___get__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1098
+/* "adios_mpi.pyx":1290
  *     property attrs:
  *         """ Attributes associated with the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17379,7 +20464,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5attrs___get__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1099
+  /* "adios_mpi.pyx":1291
  *         """ Attributes associated with the variable. """
  *         def __get__(self):
  *             return self.attrs             # <<<<<<<<<<<<<<
@@ -17391,7 +20476,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5attrs___get__(struct __pyx_obj_9adios
   __pyx_r = ((PyObject *)__pyx_v_self->attrs);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1098
+  /* "adios_mpi.pyx":1290
  *     property attrs:
  *         """ Attributes associated with the variable. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17406,7 +20491,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_5attrs___get__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1103
+/* "adios_mpi.pyx":1295
  *     property blockinfo:
  *         """ Block information. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17455,7 +20540,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1104
+  /* "adios_mpi.pyx":1296
  *         """ Block information. """
  *         def __get__(self):
  *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
@@ -17466,19 +20551,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1105
+    /* "adios_mpi.pyx":1297
  *         def __get__(self):
  *             if self.blockinfo is None:
  *                 ll = list()             # <<<<<<<<<<<<<<
  *                 k = 0
  *                 for t in range(self.vp.nsteps):
  */
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1105, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1297, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_ll = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1106
+    /* "adios_mpi.pyx":1298
  *             if self.blockinfo is None:
  *                 ll = list()
  *                 k = 0             # <<<<<<<<<<<<<<
@@ -17488,7 +20573,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
     __Pyx_INCREF(__pyx_int_0);
     __pyx_v_k = __pyx_int_0;
 
-    /* "adios_mpi.pyx":1107
+    /* "adios_mpi.pyx":1299
  *                 ll = list()
  *                 k = 0
  *                 for t in range(self.vp.nsteps):             # <<<<<<<<<<<<<<
@@ -17499,19 +20584,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
     for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
       __pyx_v_t = __pyx_t_5;
 
-      /* "adios_mpi.pyx":1108
+      /* "adios_mpi.pyx":1300
  *                 k = 0
  *                 for t in range(self.vp.nsteps):
  *                     l = list()             # <<<<<<<<<<<<<<
  *                     if self.vp.nblocks[t] == 0:
  *                         l.append(None)
  */
-      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1108, __pyx_L1_error)
+      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1300, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_XDECREF_SET(__pyx_v_l, ((PyObject*)__pyx_t_3));
       __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":1109
+      /* "adios_mpi.pyx":1301
  *                 for t in range(self.vp.nsteps):
  *                     l = list()
  *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
@@ -17521,16 +20606,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
       __pyx_t_2 = (((__pyx_v_self->vp->nblocks[__pyx_v_t]) == 0) != 0);
       if (__pyx_t_2) {
 
-        /* "adios_mpi.pyx":1110
+        /* "adios_mpi.pyx":1302
  *                     l = list()
  *                     if self.vp.nblocks[t] == 0:
  *                         l.append(None)             # <<<<<<<<<<<<<<
  *                     for i in range(self.vp.nblocks[t]):
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])
  */
-        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, Py_None); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1110, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, Py_None); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1302, __pyx_L1_error)
 
-        /* "adios_mpi.pyx":1109
+        /* "adios_mpi.pyx":1301
  *                 for t in range(self.vp.nsteps):
  *                     l = list()
  *                     if self.vp.nblocks[t] == 0:             # <<<<<<<<<<<<<<
@@ -17539,7 +20624,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
  */
       }
 
-      /* "adios_mpi.pyx":1111
+      /* "adios_mpi.pyx":1303
  *                     if self.vp.nblocks[t] == 0:
  *                         l.append(None)
  *                     for i in range(self.vp.nblocks[t]):             # <<<<<<<<<<<<<<
@@ -17550,88 +20635,88 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
       for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
         __pyx_v_i = __pyx_t_8;
 
-        /* "adios_mpi.pyx":1112
+        /* "adios_mpi.pyx":1304
  *                         l.append(None)
  *                     for i in range(self.vp.nblocks[t]):
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])             # <<<<<<<<<<<<<<
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
  *                         process_id = self.vp.blockinfo[k].process_id
  */
-        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1112, __pyx_L1_error)
+        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1304, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_9 = __pyx_v_self->vp->ndim;
         for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
           __pyx_v_d = __pyx_t_10;
-          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1112, __pyx_L1_error)
-          __pyx_t_12 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).start[__pyx_v_d])); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1112, __pyx_L1_error)
+          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1304, __pyx_L1_error)
+          __pyx_t_12 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).start[__pyx_v_d])); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1304, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_12);
-          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 1112, __pyx_L1_error)
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 1304, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
-        __pyx_t_12 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1112, __pyx_L1_error)
+        __pyx_t_12 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1304, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_XDECREF_SET(__pyx_v_start, ((PyObject*)__pyx_t_12));
         __pyx_t_12 = 0;
 
-        /* "adios_mpi.pyx":1113
+        /* "adios_mpi.pyx":1305
  *                     for i in range(self.vp.nblocks[t]):
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])             # <<<<<<<<<<<<<<
  *                         process_id = self.vp.blockinfo[k].process_id
  *                         time_index = self.vp.blockinfo[k].time_index
  */
-        __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1113, __pyx_L1_error)
+        __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1305, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __pyx_t_9 = __pyx_v_self->vp->ndim;
         for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
           __pyx_v_d = __pyx_t_10;
-          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1113, __pyx_L1_error)
-          __pyx_t_3 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).count[__pyx_v_d])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
+          __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1305, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_t_11]).count[__pyx_v_d])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1305, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
-          if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1113, __pyx_L1_error)
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1305, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         }
-        __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
+        __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1305, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_XDECREF_SET(__pyx_v_count, ((PyObject*)__pyx_t_3));
         __pyx_t_3 = 0;
 
-        /* "adios_mpi.pyx":1114
+        /* "adios_mpi.pyx":1306
  *                         start = tuple([self.vp.blockinfo[k].start[d] for d in range(self.vp.ndim)])
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
  *                         process_id = self.vp.blockinfo[k].process_id             # <<<<<<<<<<<<<<
  *                         time_index = self.vp.blockinfo[k].time_index
  *                         binfo = blockinfo(start, count, process_id, time_index)
  */
-        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1114, __pyx_L1_error)
-        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).process_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1114, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1306, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).process_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1306, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_process_id, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "adios_mpi.pyx":1115
+        /* "adios_mpi.pyx":1307
  *                         count = tuple([self.vp.blockinfo[k].count[d] for d in range(self.vp.ndim)])
  *                         process_id = self.vp.blockinfo[k].process_id
  *                         time_index = self.vp.blockinfo[k].time_index             # <<<<<<<<<<<<<<
  *                         binfo = blockinfo(start, count, process_id, time_index)
  *                         l.append(binfo)
  */
-        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1115, __pyx_L1_error)
-        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).time_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1115, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_k); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1307, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyInt_From_uint32_t((__pyx_v_self->vp->blockinfo[__pyx_t_11]).time_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1307, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_time_index, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "adios_mpi.pyx":1116
+        /* "adios_mpi.pyx":1308
  *                         process_id = self.vp.blockinfo[k].process_id
  *                         time_index = self.vp.blockinfo[k].time_index
  *                         binfo = blockinfo(start, count, process_id, time_index)             # <<<<<<<<<<<<<<
  *                         l.append(binfo)
  *                         k += 1
  */
-        __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1116, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1308, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(__pyx_v_start);
         __Pyx_GIVEREF(__pyx_v_start);
@@ -17645,45 +20730,45 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
         __Pyx_INCREF(__pyx_v_time_index);
         __Pyx_GIVEREF(__pyx_v_time_index);
         PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_time_index);
-        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_blockinfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1116, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_blockinfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1308, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_XDECREF_SET(__pyx_v_binfo, ((struct __pyx_obj_9adios_mpi_blockinfo *)__pyx_t_12));
         __pyx_t_12 = 0;
 
-        /* "adios_mpi.pyx":1117
+        /* "adios_mpi.pyx":1309
  *                         time_index = self.vp.blockinfo[k].time_index
  *                         binfo = blockinfo(start, count, process_id, time_index)
  *                         l.append(binfo)             # <<<<<<<<<<<<<<
  *                         k += 1
  *                     ll.append(l)
  */
-        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, ((PyObject *)__pyx_v_binfo)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1117, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_l, ((PyObject *)__pyx_v_binfo)); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1309, __pyx_L1_error)
 
-        /* "adios_mpi.pyx":1118
+        /* "adios_mpi.pyx":1310
  *                         binfo = blockinfo(start, count, process_id, time_index)
  *                         l.append(binfo)
  *                         k += 1             # <<<<<<<<<<<<<<
  *                     ll.append(l)
  *                 self.blockinfo = ll
  */
-        __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1118, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1310, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_12);
         __pyx_t_12 = 0;
       }
 
-      /* "adios_mpi.pyx":1119
+      /* "adios_mpi.pyx":1311
  *                         l.append(binfo)
  *                         k += 1
  *                     ll.append(l)             # <<<<<<<<<<<<<<
  *                 self.blockinfo = ll
  *             return (self.blockinfo)
  */
-      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ll, __pyx_v_l); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1119, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ll, __pyx_v_l); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1311, __pyx_L1_error)
     }
 
-    /* "adios_mpi.pyx":1120
+    /* "adios_mpi.pyx":1312
  *                         k += 1
  *                     ll.append(l)
  *                 self.blockinfo = ll             # <<<<<<<<<<<<<<
@@ -17696,7 +20781,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
     __Pyx_DECREF(__pyx_v_self->blockinfo);
     __pyx_v_self->blockinfo = __pyx_v_ll;
 
-    /* "adios_mpi.pyx":1104
+    /* "adios_mpi.pyx":1296
  *         """ Block information. """
  *         def __get__(self):
  *             if self.blockinfo is None:             # <<<<<<<<<<<<<<
@@ -17705,7 +20790,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
  */
   }
 
-  /* "adios_mpi.pyx":1121
+  /* "adios_mpi.pyx":1313
  *                     ll.append(l)
  *                 self.blockinfo = ll
  *             return (self.blockinfo)             # <<<<<<<<<<<<<<
@@ -17717,7 +20802,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
   __pyx_r = __pyx_v_self->blockinfo;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1103
+  /* "adios_mpi.pyx":1295
  *     property blockinfo:
  *         """ Block information. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -17745,7 +20830,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_9blockinfo___get__(struct __pyx_obj_9a
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1123
+/* "adios_mpi.pyx":1315
  *             return (self.blockinfo)
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -17781,11 +20866,11 @@ static int __pyx_pw_9adios_mpi_3var_1__init__(PyObject *__pyx_v_self, PyObject *
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1123, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1315, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1123, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1315, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -17798,14 +20883,14 @@ static int __pyx_pw_9adios_mpi_3var_1__init__(PyObject *__pyx_v_self, PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1123, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1315, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.var.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_9adios_mpi_file, 1, "file", 0))) __PYX_ERR(0, 1123, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1123, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_9adios_mpi_file, 1, "file", 0))) __PYX_ERR(0, 1315, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1315, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_3var___init__(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
@@ -17840,7 +20925,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_name);
 
-  /* "adios_mpi.pyx":1124
+  /* "adios_mpi.pyx":1316
  * 
  *     def __init__(self, file file, str name):
  *         self.file = file             # <<<<<<<<<<<<<<
@@ -17853,7 +20938,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
   __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios_mpi.pyx":1125
+  /* "adios_mpi.pyx":1317
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.vp = NULL             # <<<<<<<<<<<<<<
@@ -17862,7 +20947,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  */
   __pyx_v_self->vp = NULL;
 
-  /* "adios_mpi.pyx":1127
+  /* "adios_mpi.pyx":1319
  *         self.vp = NULL
  * 
  *         assert self.file.fp != NULL, 'Not an open file'             # <<<<<<<<<<<<<<
@@ -17873,25 +20958,25 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->file->fp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_file);
-      __PYX_ERR(0, 1127, __pyx_L1_error)
+      __PYX_ERR(0, 1319, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1128
+  /* "adios_mpi.pyx":1320
  * 
  *         assert self.file.fp != NULL, 'Not an open file'
  *         self.vp = adios_inq_var(self.file.fp, s2b(name))             # <<<<<<<<<<<<<<
  *         assert self.vp != NULL, 'Not a valid var'
  * 
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1128, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_s2b(__pyx_v_name, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1128, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1320, __pyx_L1_error)
   __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1129
+  /* "adios_mpi.pyx":1321
  *         assert self.file.fp != NULL, 'Not an open file'
  *         self.vp = adios_inq_var(self.file.fp, s2b(name))
  *         assert self.vp != NULL, 'Not a valid var'             # <<<<<<<<<<<<<<
@@ -17902,12 +20987,12 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      __PYX_ERR(0, 1129, __pyx_L1_error)
+      __PYX_ERR(0, 1321, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1132
+  /* "adios_mpi.pyx":1324
  * 
  *         ## Further populate vp.blockinfo
  *         adios_inq_var_blockinfo(self.file.fp, self.vp)             # <<<<<<<<<<<<<<
@@ -17916,7 +21001,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  */
   adios_inq_var_blockinfo(__pyx_v_self->file->fp, __pyx_v_self->vp);
 
-  /* "adios_mpi.pyx":1134
+  /* "adios_mpi.pyx":1326
  *         adios_inq_var_blockinfo(self.file.fp, self.vp)
  * 
  *         self.name = name             # <<<<<<<<<<<<<<
@@ -17929,7 +21014,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":1135
+  /* "adios_mpi.pyx":1327
  * 
  *         self.name = name
  *         self.varid = self.vp.varid             # <<<<<<<<<<<<<<
@@ -17939,7 +21024,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __pyx_t_3 = __pyx_v_self->vp->varid;
   __pyx_v_self->varid = __pyx_t_3;
 
-  /* "adios_mpi.pyx":1136
+  /* "adios_mpi.pyx":1328
  *         self.name = name
  *         self.varid = self.vp.varid
  *         self.ndim = self.vp.ndim             # <<<<<<<<<<<<<<
@@ -17949,24 +21034,24 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __pyx_t_3 = __pyx_v_self->vp->ndim;
   __pyx_v_self->ndim = __pyx_t_3;
 
-  /* "adios_mpi.pyx":1137
+  /* "adios_mpi.pyx":1329
  *         self.varid = self.vp.varid
  *         self.ndim = self.vp.ndim
  *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])             # <<<<<<<<<<<<<<
  *         self.nsteps = self.vp.nsteps
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1137, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = __pyx_v_self->vp->ndim;
   for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
     __pyx_v_i = __pyx_t_4;
-    __pyx_t_5 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1137, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1329, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1137, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 1329, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
-  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1137, __pyx_L1_error)
+  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_GIVEREF(__pyx_t_5);
@@ -17975,7 +21060,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __pyx_v_self->dims = ((PyObject*)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1138
+  /* "adios_mpi.pyx":1330
  *         self.ndim = self.vp.ndim
  *         self.dims = tuple([self.vp.dims[i] for i in range(self.vp.ndim)])
  *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
@@ -17985,28 +21070,28 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __pyx_t_3 = __pyx_v_self->vp->nsteps;
   __pyx_v_self->nsteps = __pyx_t_3;
 
-  /* "adios_mpi.pyx":1140
+  /* "adios_mpi.pyx":1332
  *         self.nsteps = self.vp.nsteps
  * 
  *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
  *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
  *         else:
  */
-  __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_self->vp->type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1140, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_self->vp->type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1332, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1140, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1140, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1332, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1140, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1140, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1332, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1141
+    /* "adios_mpi.pyx":1333
  * 
  *         if self.vp.type == DATATYPE.string:
  *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))             # <<<<<<<<<<<<<<
@@ -18016,7 +21101,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
     __pyx_t_8 = strlen(((char *)__pyx_v_self->vp->value)); 
     __pyx_t_9.__pyx_n = 1;
     __pyx_t_9.strlen = __pyx_t_8;
-    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_self->vp->type, 0, &__pyx_t_9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1141, __pyx_L1_error)
+    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_self->vp->type, 0, &__pyx_t_9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -18024,7 +21109,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
     __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1140
+    /* "adios_mpi.pyx":1332
  *         self.nsteps = self.vp.nsteps
  * 
  *         if self.vp.type == DATATYPE.string:             # <<<<<<<<<<<<<<
@@ -18034,7 +21119,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
     goto __pyx_L5;
   }
 
-  /* "adios_mpi.pyx":1143
+  /* "adios_mpi.pyx":1335
  *             self.dtype = adios2npdtype(self.vp.type, len(<char*> self.vp.value))
  *         else:
  *             self.dtype = adios2npdtype(self.vp.type)             # <<<<<<<<<<<<<<
@@ -18042,7 +21127,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  *         self.attrs = softdict()
  */
   /*else*/ {
-    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_self->vp->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1143, __pyx_L1_error)
+    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_self->vp->type, 0, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1335, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -18052,14 +21137,14 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   }
   __pyx_L5:;
 
-  /* "adios_mpi.pyx":1145
+  /* "adios_mpi.pyx":1337
  *             self.dtype = adios2npdtype(self.vp.type)
  * 
  *         self.attrs = softdict()             # <<<<<<<<<<<<<<
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1145, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -18067,14 +21152,14 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1146
+  /* "adios_mpi.pyx":1338
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1146, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1338, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -18087,10 +21172,10 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -18098,9 +21183,9 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
     __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
     __pyx_t_11 = NULL;
   } else {
-    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1146, __pyx_L1_error)
+    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1338, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1146, __pyx_L1_error)
+    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1338, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -18108,17 +21193,17 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1146, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1338, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1146, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 1338, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -18128,17 +21213,17 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1146, __pyx_L1_error)
+          else __PYX_ERR(0, 1338, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_1);
     }
-    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1146, __pyx_L1_error)
+    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1338, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1147
+    /* "adios_mpi.pyx":1339
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -18147,26 +21232,26 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1147, __pyx_L1_error)
+      __PYX_ERR(0, 1339, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1147, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1147, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1339, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if ((__pyx_t_7 != 0)) {
 
-      /* "adios_mpi.pyx":1148
+      /* "adios_mpi.pyx":1340
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  */
-      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L1_error)
+      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1340, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1148, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1340, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_13 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1148, __pyx_L1_error)
+      __pyx_t_13 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1340, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __pyx_t_14 = NULL;
       __pyx_t_15 = 0;
@@ -18180,7 +21265,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
           __pyx_t_15 = 1;
         }
       }
-      __pyx_t_16 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1148, __pyx_L1_error)
+      __pyx_t_16 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1340, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_16);
       if (__pyx_t_14) {
         __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
@@ -18191,15 +21276,15 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
       __Pyx_GIVEREF(__pyx_kp_s__10);
       PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_15, __pyx_kp_s__10);
       __pyx_t_13 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1148, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1340, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 1148, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_5, __pyx_t_1) < 0)) __PYX_ERR(0, 1340, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1147
+      /* "adios_mpi.pyx":1339
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -18208,7 +21293,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  */
     }
 
-    /* "adios_mpi.pyx":1149
+    /* "adios_mpi.pyx":1341
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -18217,31 +21302,31 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1149, __pyx_L1_error)
+      __PYX_ERR(0, 1341, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1149, __pyx_L1_error)
+    __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1341, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_5, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1149, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_5, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1341, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if ((__pyx_t_7 != 0)) {
 
-      /* "adios_mpi.pyx":1150
+      /* "adios_mpi.pyx":1342
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  * 
  *     def __del__(self):
  */
-      __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      __pyx_t_5 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_16 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      __pyx_t_16 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_16);
-      __pyx_t_13 = PyNumber_Add(__pyx_t_16, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      __pyx_t_13 = PyNumber_Add(__pyx_t_16, __pyx_kp_s_); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
       __pyx_t_16 = NULL;
@@ -18256,7 +21341,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
           __pyx_t_15 = 1;
         }
       }
-      __pyx_t_14 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      __pyx_t_14 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_14);
       if (__pyx_t_16) {
         __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
@@ -18267,15 +21352,15 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
       __Pyx_GIVEREF(__pyx_kp_s__10);
       PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_15, __pyx_kp_s__10);
       __pyx_t_13 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 1150, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 1342, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "adios_mpi.pyx":1149
+      /* "adios_mpi.pyx":1341
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '')] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -18284,7 +21369,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
  */
     }
 
-    /* "adios_mpi.pyx":1146
+    /* "adios_mpi.pyx":1338
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
@@ -18294,7 +21379,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios_mpi.pyx":1123
+  /* "adios_mpi.pyx":1315
  *             return (self.blockinfo)
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -18321,7 +21406,7 @@ static int __pyx_pf_9adios_mpi_3var___init__(struct __pyx_obj_9adios_mpi_var *__
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1152
+/* "adios_mpi.pyx":1344
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -18349,18 +21434,18 @@ static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_v
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__del__", 0);
 
-  /* "adios_mpi.pyx":1153
+  /* "adios_mpi.pyx":1345
  * 
  *     def __del__(self):
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     cpdef close(self):
  */
-  __pyx_t_1 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
+  __pyx_t_1 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1152
+  /* "adios_mpi.pyx":1344
  *                 self.attrs[name.replace('/' + self.name + '/', '')] = self.file.attrs[name]
  * 
  *     def __del__(self):             # <<<<<<<<<<<<<<
@@ -18381,7 +21466,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_2__del__(struct __pyx_obj_9adios_mpi_v
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1155
+/* "adios_mpi.pyx":1347
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -18402,7 +21487,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_5close)) {
       __Pyx_XDECREF(__pyx_r);
@@ -18418,10 +21503,10 @@ static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1155, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1347, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1155, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1347, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18433,7 +21518,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":1157
+  /* "adios_mpi.pyx":1349
  *     cpdef close(self):
  *         """ Close and free variable information """
  *         assert self.vp != NULL, 'Not an open var'             # <<<<<<<<<<<<<<
@@ -18444,12 +21529,12 @@ static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_var);
-      __PYX_ERR(0, 1157, __pyx_L1_error)
+      __PYX_ERR(0, 1349, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1158
+  /* "adios_mpi.pyx":1350
  *         """ Close and free variable information """
  *         assert self.vp != NULL, 'Not an open var'
  *         adios_free_varinfo(self.vp)             # <<<<<<<<<<<<<<
@@ -18458,7 +21543,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *
  */
   adios_free_varinfo(__pyx_v_self->vp);
 
-  /* "adios_mpi.pyx":1159
+  /* "adios_mpi.pyx":1351
  *         assert self.vp != NULL, 'Not an open var'
  *         adios_free_varinfo(self.vp)
  *         self.vp = NULL             # <<<<<<<<<<<<<<
@@ -18467,7 +21552,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_close(struct __pyx_obj_9adios_mpi_var *
  */
   __pyx_v_self->vp = NULL;
 
-  /* "adios_mpi.pyx":1155
+  /* "adios_mpi.pyx":1347
  *         self.close()
  * 
  *     cpdef close(self):             # <<<<<<<<<<<<<<
@@ -18511,7 +21596,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4close(struct __pyx_obj_9adios_mpi_var
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("close", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_3var_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1155, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_3var_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -18528,7 +21613,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_4close(struct __pyx_obj_9adios_mpi_var
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1161
+/* "adios_mpi.pyx":1353
  *         self.vp = NULL
  * 
  *     cpdef advance(self):             # <<<<<<<<<<<<<<
@@ -18551,7 +21636,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1161, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_advance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_7advance)) {
       __Pyx_XDECREF(__pyx_r);
@@ -18567,10 +21652,10 @@ static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1161, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1161, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18582,17 +21667,17 @@ static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":1163
+  /* "adios_mpi.pyx":1355
  *     cpdef advance(self):
  *         """ Update variable information after the stream advanced """
  *         self.vp = adios_inq_var(self.file.fp, self.name)             # <<<<<<<<<<<<<<
  *         assert self.vp != NULL, 'Not a valid var'
  *         self.nsteps = self.vp.nsteps
  */
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1163, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1355, __pyx_L1_error)
   __pyx_v_self->vp = adios_inq_var(__pyx_v_self->file->fp, __pyx_t_5);
 
-  /* "adios_mpi.pyx":1164
+  /* "adios_mpi.pyx":1356
  *         """ Update variable information after the stream advanced """
  *         self.vp = adios_inq_var(self.file.fp, self.name)
  *         assert self.vp != NULL, 'Not a valid var'             # <<<<<<<<<<<<<<
@@ -18603,12 +21688,12 @@ static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_a_valid_var);
-      __PYX_ERR(0, 1164, __pyx_L1_error)
+      __PYX_ERR(0, 1356, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1165
+  /* "adios_mpi.pyx":1357
  *         self.vp = adios_inq_var(self.file.fp, self.name)
  *         assert self.vp != NULL, 'Not a valid var'
  *         self.nsteps = self.vp.nsteps             # <<<<<<<<<<<<<<
@@ -18618,7 +21703,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_advance(struct __pyx_obj_9adios_mpi_var
   __pyx_t_6 = __pyx_v_self->vp->nsteps;
   __pyx_v_self->nsteps = __pyx_t_6;
 
-  /* "adios_mpi.pyx":1161
+  /* "adios_mpi.pyx":1353
  *         self.vp = NULL
  * 
  *     cpdef advance(self):             # <<<<<<<<<<<<<<
@@ -18662,7 +21747,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_6advance(struct __pyx_obj_9adios_mpi_v
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("advance", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_3var_advance(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1161, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_3var_advance(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -18679,7 +21764,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_6advance(struct __pyx_obj_9adios_mpi_v
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1167
+/* "adios_mpi.pyx":1359
  *         self.nsteps = self.vp.nsteps
  * 
  *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -18731,7 +21816,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_points); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_points); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1359, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_9read_points)) {
       __Pyx_XDECREF(__pyx_r);
@@ -18748,7 +21833,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
           __pyx_t_5 = 1;
         }
       }
-      __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1167, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1359, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       if (__pyx_t_4) {
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -18762,7 +21847,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
       __Pyx_INCREF(__pyx_v_nsteps);
       __Pyx_GIVEREF(__pyx_v_nsteps);
       PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_nsteps);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1167, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18774,7 +21859,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":1183
+  /* "adios_mpi.pyx":1375
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -18785,7 +21870,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1184
+    /* "adios_mpi.pyx":1376
  *         """
  *         if from_steps is None:
  *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
@@ -18795,7 +21880,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "adios_mpi.pyx":1183
+    /* "adios_mpi.pyx":1375
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -18804,7 +21889,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1186
+  /* "adios_mpi.pyx":1378
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -18815,25 +21900,25 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
   __pyx_t_7 = (__pyx_t_8 != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1187
+    /* "adios_mpi.pyx":1379
  * 
  *         if nsteps is None:
  *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1379, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1187, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1379, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1379, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_nsteps, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1186
+    /* "adios_mpi.pyx":1378
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -18842,7 +21927,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1189
+  /* "adios_mpi.pyx":1381
  *             nsteps = self.file.last_step - from_steps + 1
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
@@ -18854,12 +21939,12 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
     __pyx_t_7 = (((PyObject *)__pyx_v_self->dtype) != Py_None);
     if (unlikely(!(__pyx_t_7 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Data_type_is_not_supported_yet);
-      __PYX_ERR(0, 1189, __pyx_L1_error)
+      __PYX_ERR(0, 1381, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1191
+  /* "adios_mpi.pyx":1383
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -18872,27 +21957,27 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
     __pyx_t_7 = __pyx_t_8;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1191, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1191, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1191, __pyx_L1_error)
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1383, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1191, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1383, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_7 = __pyx_t_8;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1192
+    /* "adios_mpi.pyx":1384
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))             # <<<<<<<<<<<<<<
  * 
  *         if not isinstance(points, tuple):
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1192, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1384, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_from_steps);
     __Pyx_GIVEREF(__pyx_v_from_steps);
@@ -18900,22 +21985,22 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
     __Pyx_INCREF(__pyx_v_nsteps);
     __Pyx_GIVEREF(__pyx_v_nsteps);
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_nsteps);
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1192, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1384, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 1192, __pyx_L1_error)
+    __PYX_ERR(0, 1384, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1191
+    /* "adios_mpi.pyx":1383
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -18924,7 +22009,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1194
+  /* "adios_mpi.pyx":1386
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
@@ -18935,14 +22020,14 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
   __pyx_t_8 = ((!(__pyx_t_7 != 0)) != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1195
+    /* "adios_mpi.pyx":1387
  * 
  *         if not isinstance(points, tuple):
  *             points = (points,)             # <<<<<<<<<<<<<<
  * 
  *         if len(points) > 1:
  */
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1195, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1387, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_points);
     __Pyx_GIVEREF(__pyx_v_points);
@@ -18950,7 +22035,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
     __Pyx_DECREF_SET(__pyx_v_points, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1194
+    /* "adios_mpi.pyx":1386
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         if not isinstance(points, tuple):             # <<<<<<<<<<<<<<
@@ -18959,7 +22044,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1197
+  /* "adios_mpi.pyx":1389
  *             points = (points,)
  * 
  *         if len(points) > 1:             # <<<<<<<<<<<<<<
@@ -18968,13 +22053,13 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   if (unlikely(__pyx_v_points == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1197, __pyx_L1_error)
+    __PYX_ERR(0, 1389, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1197, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1389, __pyx_L1_error)
   __pyx_t_8 = ((__pyx_t_5 > 1) != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1198
+    /* "adios_mpi.pyx":1390
  * 
  *         if len(points) > 1:
  *             plen = len(points[0])             # <<<<<<<<<<<<<<
@@ -18983,86 +22068,86 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
     if (unlikely(__pyx_v_points == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1198, __pyx_L1_error)
+      __PYX_ERR(0, 1390, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_points, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1198, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_points, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1390, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1198, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1390, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_plen = __pyx_t_5;
 
-    /* "adios_mpi.pyx":1199
+    /* "adios_mpi.pyx":1391
  *         if len(points) > 1:
  *             plen = len(points[0])
  *             if not all([len(x) == plen for x in points]):             # <<<<<<<<<<<<<<
  *                 raise IndexError('All points must have the same length %r' % (points,))
  * 
  */
-    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1199, __pyx_L1_error)
+    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1391, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     if (unlikely(__pyx_v_points == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      __PYX_ERR(0, 1199, __pyx_L1_error)
+      __PYX_ERR(0, 1391, __pyx_L1_error)
     }
     __pyx_t_3 = __pyx_v_points; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     for (;;) {
       if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1199, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1391, __pyx_L1_error)
       #else
-      __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1199, __pyx_L1_error)
+      __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       #endif
       __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_9 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1199, __pyx_L1_error)
-      __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_t_9 == __pyx_v_plen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1199, __pyx_L1_error)
+      __pyx_t_9 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1391, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_t_9 == __pyx_v_plen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1199, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1391, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1199, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1199, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1391, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1199, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1391, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_7 = ((!__pyx_t_8) != 0);
     if (__pyx_t_7) {
 
-      /* "adios_mpi.pyx":1200
+      /* "adios_mpi.pyx":1392
  *             plen = len(points[0])
  *             if not all([len(x) == plen for x in points]):
  *                 raise IndexError('All points must have the same length %r' % (points,))             # <<<<<<<<<<<<<<
  * 
  *         cpdef uint64_t ndim = self.ndim
  */
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_v_points);
       __Pyx_GIVEREF(__pyx_v_points);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_points);
-      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_All_points_must_have_the_same_le, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_All_points_must_have_the_same_le, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_GIVEREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1392, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1200, __pyx_L1_error)
+      __PYX_ERR(0, 1392, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1199
+      /* "adios_mpi.pyx":1391
  *         if len(points) > 1:
  *             plen = len(points[0])
  *             if not all([len(x) == plen for x in points]):             # <<<<<<<<<<<<<<
@@ -19071,7 +22156,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
     }
 
-    /* "adios_mpi.pyx":1197
+    /* "adios_mpi.pyx":1389
  *             points = (points,)
  * 
  *         if len(points) > 1:             # <<<<<<<<<<<<<<
@@ -19080,7 +22165,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1202
+  /* "adios_mpi.pyx":1394
  *                 raise IndexError('All points must have the same length %r' % (points,))
  * 
  *         cpdef uint64_t ndim = self.ndim             # <<<<<<<<<<<<<<
@@ -19090,7 +22175,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
   __pyx_t_10 = __pyx_v_self->ndim;
   __pyx_v_ndim = __pyx_t_10;
 
-  /* "adios_mpi.pyx":1203
+  /* "adios_mpi.pyx":1395
  * 
  *         cpdef uint64_t ndim = self.ndim
  *         cpdef uint64_t npoints = len(points)             # <<<<<<<<<<<<<<
@@ -19099,87 +22184,87 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   if (unlikely(__pyx_v_points == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1203, __pyx_L1_error)
+    __PYX_ERR(0, 1395, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1203, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_points); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1395, __pyx_L1_error)
   __pyx_v_npoints = __pyx_t_5;
 
-  /* "adios_mpi.pyx":1206
+  /* "adios_mpi.pyx":1398
  *         ##print 'ndim, npoints = %r, %r' % (ndim, npoints)
  * 
  *         cdef np.ndarray nppoints = np.array(points, dtype=np.int64, order='C')             # <<<<<<<<<<<<<<
  *         ##print 'nppoints.ndim = %r' % (nppoints.ndim)
  *         ##print 'nppoints.shape = (%r, %r)' % (nppoints.shape[0], nppoints.shape[1])
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_points);
   __Pyx_GIVEREF(__pyx_v_points);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_points);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1206, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 1206, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1206, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 1398, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1398, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1206, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1398, __pyx_L1_error)
   __pyx_v_nppoints = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1210
+  /* "adios_mpi.pyx":1402
  *         ##print 'nppoints.shape = (%r, %r)' % (nppoints.shape[0], nppoints.shape[1])
  * 
  *         cdef np.ndarray var = np.zeros((npoints * nsteps,), dtype=self.dtype)             # <<<<<<<<<<<<<<
  *         ##print 'nppoints.ndim = %r' % (nppoints.ndim)
  *         ##print 'nppoints.shape = (%r, %r)' % (nppoints.shape[0], nppoints.shape[1])
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_npoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_From_uint64_t(__pyx_v_npoints); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_v_nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_v_nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_4);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
   __pyx_t_4 = 0;
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1210, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1210, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1402, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1402, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1210, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1402, __pyx_L1_error)
   __pyx_v_var = ((PyArrayObject *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1215
+  /* "adios_mpi.pyx":1407
  * 
  *         cdef ADIOS_SELECTION * sel
  *         sel = adios_selection_points (ndim, npoints, <uint64_t *> nppoints.data)             # <<<<<<<<<<<<<<
@@ -19188,18 +22273,18 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   __pyx_v_sel = adios_selection_points(__pyx_v_ndim, __pyx_v_npoints, ((uint64_t *)__pyx_v_nppoints->data));
 
-  /* "adios_mpi.pyx":1217
+  /* "adios_mpi.pyx":1409
  *         sel = adios_selection_points (ndim, npoints, <uint64_t *> nppoints.data)
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)             # <<<<<<<<<<<<<<
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  */
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1217, __pyx_L1_error)
-  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1217, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error)
+  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error)
   adios_schedule_read_byid(__pyx_v_self->file->fp, __pyx_v_sel, __pyx_v_self->vp->varid, __pyx_t_10, __pyx_t_11, ((void *)__pyx_v_var->data));
 
-  /* "adios_mpi.pyx":1218
+  /* "adios_mpi.pyx":1410
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
@@ -19208,7 +22293,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios_mpi.pyx":1219
+  /* "adios_mpi.pyx":1411
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)             # <<<<<<<<<<<<<<
@@ -19217,7 +22302,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
  */
   adios_selection_delete(__pyx_v_sel);
 
-  /* "adios_mpi.pyx":1221
+  /* "adios_mpi.pyx":1413
  *         adios_selection_delete(sel)
  * 
  *         return var             # <<<<<<<<<<<<<<
@@ -19229,7 +22314,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_points(struct __pyx_obj_9adios_mpi
   __pyx_r = ((PyObject *)__pyx_v_var);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1167
+  /* "adios_mpi.pyx":1359
  *         self.nsteps = self.vp.nsteps
  * 
  *     cpdef read_points(self, tuple points = (), from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -19303,7 +22388,7 @@ static PyObject *__pyx_pw_9adios_mpi_3var_9read_points(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_points") < 0)) __PYX_ERR(0, 1167, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_points") < 0)) __PYX_ERR(0, 1359, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -19320,13 +22405,13 @@ static PyObject *__pyx_pw_9adios_mpi_3var_9read_points(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_points", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1167, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_points", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1359, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.var.read_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyTuple_Type), 1, "points", 1))) __PYX_ERR(0, 1167, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyTuple_Type), 1, "points", 1))) __PYX_ERR(0, 1359, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_3var_8read_points(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), __pyx_v_points, __pyx_v_from_steps, __pyx_v_nsteps);
 
   /* function exit code */
@@ -19349,7 +22434,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_8read_points(struct __pyx_obj_9adios_m
   __pyx_t_2.points = __pyx_v_points;
   __pyx_t_2.from_steps = __pyx_v_from_steps;
   __pyx_t_2.nsteps = __pyx_v_nsteps;
-  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read_points(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read_points(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1359, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -19366,7 +22451,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_8read_points(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1223
+/* "adios_mpi.pyx":1415
  *         return var
  * 
  *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -19411,11 +22496,11 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_writeblock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1223, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_writeblock); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1415, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_11read_writeblock)) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1223, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_1);
       __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
@@ -19430,7 +22515,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1223, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1415, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_5) {
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -19444,7 +22529,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
       __Pyx_GIVEREF(__pyx_v_nsteps);
       PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_nsteps);
       __pyx_t_3 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1223, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1415, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -19456,7 +22541,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":1239
+  /* "adios_mpi.pyx":1431
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -19467,7 +22552,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (__pyx_t_9) {
 
-    /* "adios_mpi.pyx":1240
+    /* "adios_mpi.pyx":1432
  *         """
  *         if from_steps is None:
  *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
@@ -19477,7 +22562,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "adios_mpi.pyx":1239
+    /* "adios_mpi.pyx":1431
  *             IndexError: If dimension is mismatched or out of the boundary.
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -19486,7 +22571,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":1242
+  /* "adios_mpi.pyx":1434
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -19497,25 +22582,25 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
   __pyx_t_8 = (__pyx_t_9 != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1243
+    /* "adios_mpi.pyx":1435
  * 
  *         if nsteps is None:
  *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1435, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1243, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1435, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1435, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_nsteps, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1242
+    /* "adios_mpi.pyx":1434
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -19524,7 +22609,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":1245
+  /* "adios_mpi.pyx":1437
  *             nsteps = self.file.last_step - from_steps + 1
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
@@ -19536,12 +22621,12 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
     __pyx_t_8 = (((PyObject *)__pyx_v_self->dtype) != Py_None);
     if (unlikely(!(__pyx_t_8 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Data_type_is_not_supported_yet);
-      __PYX_ERR(0, 1245, __pyx_L1_error)
+      __PYX_ERR(0, 1437, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1246
+  /* "adios_mpi.pyx":1438
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)             # <<<<<<<<<<<<<<
@@ -19551,19 +22636,19 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
   #ifndef CYTHON_WITHOUT_ASSERTIONS
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_rank < __pyx_v_self->vp->sum_nblocks) != 0))) {
-      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->vp->sum_nblocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1246, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->vp->sum_nblocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1438, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Rank_is_out_of_range_nblock_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1246, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Rank_is_out_of_range_nblock_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1438, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       PyErr_SetObject(PyExc_AssertionError, __pyx_t_2);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __PYX_ERR(0, 1246, __pyx_L1_error)
+      __PYX_ERR(0, 1438, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1248
+  /* "adios_mpi.pyx":1440
  *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -19576,27 +22661,27 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
     __pyx_t_8 = __pyx_t_9;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_2 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1248, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1440, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1248, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1440, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1248, __pyx_L1_error)
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1440, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1248, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1440, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_8 = __pyx_t_9;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1249
+    /* "adios_mpi.pyx":1441
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))             # <<<<<<<<<<<<<<
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  */
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1249, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1441, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_from_steps);
     __Pyx_GIVEREF(__pyx_v_from_steps);
@@ -19604,22 +22689,22 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
     __Pyx_INCREF(__pyx_v_nsteps);
     __Pyx_GIVEREF(__pyx_v_nsteps);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_nsteps);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1249, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1441, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1249, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1441, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1249, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1441, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 1249, __pyx_L1_error)
+    __PYX_ERR(0, 1441, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1248
+    /* "adios_mpi.pyx":1440
  *         assert rank < self.vp.sum_nblocks, 'Rank is out of range (nblock=%r)' % (self.vp.sum_nblocks)
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -19628,48 +22713,48 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":1251
+  /* "adios_mpi.pyx":1443
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]             # <<<<<<<<<<<<<<
  *         if (nsteps>1):
  *             shape.insert(0, nsteps)
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1251, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1443, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_10 = __pyx_v_self->vp->ndim;
   for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
     __pyx_v_i = __pyx_t_11;
-    __pyx_t_4 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_v_rank]).count[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1251, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyInt_From_uint64_t(((__pyx_v_self->vp->blockinfo[__pyx_v_rank]).count[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1443, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 1251, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 1443, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __pyx_v_shape = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1252
+  /* "adios_mpi.pyx":1444
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  *         if (nsteps>1):             # <<<<<<<<<<<<<<
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1252, __pyx_L1_error)
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1252, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1444, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1444, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1253
+    /* "adios_mpi.pyx":1445
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  *         if (nsteps>1):
  *             shape.insert(0, nsteps)             # <<<<<<<<<<<<<<
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  */
-    __pyx_t_12 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1253, __pyx_L1_error)
+    __pyx_t_12 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1445, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1252
+    /* "adios_mpi.pyx":1444
  * 
  *         shape = [self.vp.blockinfo[rank].count[i] for i in range(self.vp.ndim)]
  *         if (nsteps>1):             # <<<<<<<<<<<<<<
@@ -19678,36 +22763,36 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":1254
+  /* "adios_mpi.pyx":1446
  *         if (nsteps>1):
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1254, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1254, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1254, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_shape);
   __Pyx_GIVEREF(__pyx_v_shape);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1254, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1254, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1254, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1446, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1446, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1254, __pyx_L1_error)
+  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1446, __pyx_L1_error)
   __pyx_v_var = ((PyArrayObject *)__pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "adios_mpi.pyx":1257
+  /* "adios_mpi.pyx":1449
  * 
  *         cdef ADIOS_SELECTION * sel
  *         sel = adios_selection_writeblock (rank)             # <<<<<<<<<<<<<<
@@ -19716,18 +22801,18 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   __pyx_v_sel = adios_selection_writeblock(__pyx_v_rank);
 
-  /* "adios_mpi.pyx":1259
+  /* "adios_mpi.pyx":1451
  *         sel = adios_selection_writeblock (rank)
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)             # <<<<<<<<<<<<<<
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  */
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1259, __pyx_L1_error)
-  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1259, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1451, __pyx_L1_error)
+  __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1451, __pyx_L1_error)
   adios_schedule_read_byid(__pyx_v_self->file->fp, __pyx_v_sel, __pyx_v_self->vp->varid, __pyx_t_10, __pyx_t_11, ((void *)__pyx_v_var->data));
 
-  /* "adios_mpi.pyx":1260
+  /* "adios_mpi.pyx":1452
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
@@ -19736,7 +22821,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios_mpi.pyx":1261
+  /* "adios_mpi.pyx":1453
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)             # <<<<<<<<<<<<<<
@@ -19745,7 +22830,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
  */
   adios_selection_delete(__pyx_v_sel);
 
-  /* "adios_mpi.pyx":1262
+  /* "adios_mpi.pyx":1454
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  *         return var             # <<<<<<<<<<<<<<
@@ -19757,7 +22842,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read_writeblock(struct __pyx_obj_9adios
   __pyx_r = ((PyObject *)__pyx_v_var);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1223
+  /* "adios_mpi.pyx":1415
  *         return var
  * 
  *     cpdef read_writeblock(self, int rank, from_steps = None, nsteps = None):             # <<<<<<<<<<<<<<
@@ -19827,7 +22912,7 @@ static PyObject *__pyx_pw_9adios_mpi_3var_11read_writeblock(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_writeblock") < 0)) __PYX_ERR(0, 1223, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_writeblock") < 0)) __PYX_ERR(0, 1415, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -19838,13 +22923,13 @@ static PyObject *__pyx_pw_9adios_mpi_3var_11read_writeblock(PyObject *__pyx_v_se
         default: goto __pyx_L5_argtuple_error;
       }
     }
-    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1223, __pyx_L3_error)
+    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1415, __pyx_L3_error)
     __pyx_v_from_steps = values[1];
     __pyx_v_nsteps = values[2];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read_writeblock", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1223, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read_writeblock", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1415, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.var.read_writeblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19867,7 +22952,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_10read_writeblock(struct __pyx_obj_9ad
   __pyx_t_2.__pyx_n = 2;
   __pyx_t_2.from_steps = __pyx_v_from_steps;
   __pyx_t_2.nsteps = __pyx_v_nsteps;
-  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read_writeblock(__pyx_v_self, __pyx_v_rank, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1223, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read_writeblock(__pyx_v_self, __pyx_v_rank, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1415, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -19884,7 +22969,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_10read_writeblock(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1264
+/* "adios_mpi.pyx":1456
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -19898,7 +22983,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   PyObject *__pyx_v_count = ((PyObject*)__pyx_empty_tuple);
   PyObject *__pyx_v_scalar = ((PyObject*)__pyx_empty_tuple);
 
-  /* "adios_mpi.pyx":1265
+  /* "adios_mpi.pyx":1457
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
  *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
@@ -19965,7 +23050,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   __Pyx_INCREF(__pyx_v_from_steps);
   __Pyx_INCREF(__pyx_v_nsteps);
 
-  /* "adios_mpi.pyx":1264
+  /* "adios_mpi.pyx":1456
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -19976,7 +23061,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_13read)) {
       __Pyx_XDECREF(__pyx_r);
@@ -19993,7 +23078,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
           __pyx_t_5 = 1;
         }
       }
-      __pyx_t_6 = PyTuple_New(7+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1264, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(7+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1456, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       if (__pyx_t_4) {
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -20019,7 +23104,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       __Pyx_INCREF(__pyx_v_step_scalar);
       __Pyx_GIVEREF(__pyx_v_step_scalar);
       PyTuple_SET_ITEM(__pyx_t_6, 6+__pyx_t_5, __pyx_v_step_scalar);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1264, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -20031,7 +23116,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":1314
+  /* "adios_mpi.pyx":1506
  * 
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -20042,7 +23127,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1315
+    /* "adios_mpi.pyx":1507
  *         """
  *         if from_steps is None:
  *             from_steps = 0 ##self.file.current_step             # <<<<<<<<<<<<<<
@@ -20052,7 +23137,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_from_steps, __pyx_int_0);
 
-    /* "adios_mpi.pyx":1314
+    /* "adios_mpi.pyx":1506
  * 
  *         """
  *         if from_steps is None:             # <<<<<<<<<<<<<<
@@ -20061,7 +23146,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1317
+  /* "adios_mpi.pyx":1509
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -20072,25 +23157,25 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   __pyx_t_7 = (__pyx_t_8 != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1318
+    /* "adios_mpi.pyx":1510
  * 
  *         if nsteps is None:
  *             nsteps = self.file.last_step - from_steps + 1             # <<<<<<<<<<<<<<
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->file->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1510, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1318, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_v_from_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1510, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_nsteps, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1317
+    /* "adios_mpi.pyx":1509
  *             from_steps = 0 ##self.file.current_step
  * 
  *         if nsteps is None:             # <<<<<<<<<<<<<<
@@ -20099,7 +23184,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1320
+  /* "adios_mpi.pyx":1512
  *             nsteps = self.file.last_step - from_steps + 1
  * 
  *         assert self.dtype is not None, 'Data type is not supported yet'             # <<<<<<<<<<<<<<
@@ -20111,12 +23196,12 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __pyx_t_7 = (((PyObject *)__pyx_v_self->dtype) != Py_None);
     if (unlikely(!(__pyx_t_7 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Data_type_is_not_supported_yet);
-      __PYX_ERR(0, 1320, __pyx_L1_error)
+      __PYX_ERR(0, 1512, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1322
+  /* "adios_mpi.pyx":1514
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -20129,27 +23214,27 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __pyx_t_7 = __pyx_t_8;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1322, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_from_steps, __pyx_v_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1322, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1322, __pyx_L1_error)
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1322, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_7 = __pyx_t_8;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1323
+    /* "adios_mpi.pyx":1515
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))             # <<<<<<<<<<<<<<
  * 
  *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1515, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_from_steps);
     __Pyx_GIVEREF(__pyx_v_from_steps);
@@ -20157,22 +23242,22 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __Pyx_INCREF(__pyx_v_nsteps);
     __Pyx_GIVEREF(__pyx_v_nsteps);
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_nsteps);
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Step_index_is_out_of_range_from, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1515, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1515, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1515, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 1323, __pyx_L1_error)
+    __PYX_ERR(0, 1515, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1322
+    /* "adios_mpi.pyx":1514
  *         assert self.dtype is not None, 'Data type is not supported yet'
  * 
  *         if (self.nsteps > 0) and (from_steps + nsteps > self.nsteps):             # <<<<<<<<<<<<<<
@@ -20181,62 +23266,62 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1325
+  /* "adios_mpi.pyx":1517
  *             raise IndexError('Step index is out of range: from_steps=%r, nsteps=%r' % (from_steps, nsteps))
  * 
  *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]             # <<<<<<<<<<<<<<
  *         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)
  * 
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1325, __pyx_L1_error)
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1517, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_9 = __pyx_v_self->vp->ndim;
   for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
     __pyx_v_i = __pyx_t_10;
-    __pyx_t_3 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1325, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyInt_From_uint64_t((__pyx_v_self->vp->dims[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1517, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1325, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 1517, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __pyx_v_lshape = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1326
+  /* "adios_mpi.pyx":1518
  * 
  *         cdef list lshape = [self.vp.dims[i] for i in range(self.vp.ndim)]
  *         cdef np.ndarray npshape = np.array(lshape, dtype=np.int64)             # <<<<<<<<<<<<<<
  * 
  *         cdef np.ndarray npoffset
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_lshape);
   __Pyx_GIVEREF(__pyx_v_lshape);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_lshape);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1326, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1326, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1518, __pyx_L1_error)
   __pyx_v_npshape = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1329
+  /* "adios_mpi.pyx":1521
  * 
  *         cdef np.ndarray npoffset
  *         if len(offset) == 0:             # <<<<<<<<<<<<<<
@@ -20245,20 +23330,20 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   if (unlikely(__pyx_v_offset == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1329, __pyx_L1_error)
+    __PYX_ERR(0, 1521, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1329, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_offset); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1521, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1330
+    /* "adios_mpi.pyx":1522
  *         cdef np.ndarray npoffset
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()             # <<<<<<<<<<<<<<
  *             npoffset.fill(0)
  *         else:
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npshape), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npshape), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1522, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -20271,32 +23356,32 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1330, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1522, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1330, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1522, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1330, __pyx_L1_error)
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1522, __pyx_L1_error)
     __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":1331
+    /* "adios_mpi.pyx":1523
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()
  *             npoffset.fill(0)             # <<<<<<<<<<<<<<
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npoffset), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1331, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_npoffset), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1523, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1523, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1329
+    /* "adios_mpi.pyx":1521
  * 
  *         cdef np.ndarray npoffset
  *         if len(offset) == 0:             # <<<<<<<<<<<<<<
@@ -20306,7 +23391,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     goto __pyx_L10;
   }
 
-  /* "adios_mpi.pyx":1333
+  /* "adios_mpi.pyx":1525
  *             npoffset.fill(0)
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)             # <<<<<<<<<<<<<<
@@ -20314,37 +23399,37 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  *         cdef np.ndarray npcount
  */
   /*else*/ {
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_offset);
     __Pyx_GIVEREF(__pyx_v_offset);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_offset);
-    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int64); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1333, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1333, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1525, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1333, __pyx_L1_error)
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1525, __pyx_L1_error)
     __pyx_v_npoffset = ((PyArrayObject *)__pyx_t_6);
     __pyx_t_6 = 0;
   }
   __pyx_L10:;
 
-  /* "adios_mpi.pyx":1336
+  /* "adios_mpi.pyx":1528
  * 
  *         cdef np.ndarray npcount
  *         if len(count) == 0:             # <<<<<<<<<<<<<<
@@ -20353,26 +23438,26 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   if (unlikely(__pyx_v_count == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1336, __pyx_L1_error)
+    __PYX_ERR(0, 1528, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1336, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_count); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1528, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1337
+    /* "adios_mpi.pyx":1529
  *         cdef np.ndarray npcount
  *         if len(count) == 0:
  *             npcount = npshape - npoffset             # <<<<<<<<<<<<<<
  *         else:
  *             npcount = np.array(count, dtype=np.int64)
  */
-    __pyx_t_6 = PyNumber_Subtract(((PyObject *)__pyx_v_npshape), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_6 = PyNumber_Subtract(((PyObject *)__pyx_v_npshape), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1529, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1337, __pyx_L1_error)
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1529, __pyx_L1_error)
     __pyx_v_npcount = ((PyArrayObject *)__pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "adios_mpi.pyx":1336
+    /* "adios_mpi.pyx":1528
  * 
  *         cdef np.ndarray npcount
  *         if len(count) == 0:             # <<<<<<<<<<<<<<
@@ -20382,7 +23467,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     goto __pyx_L11;
   }
 
-  /* "adios_mpi.pyx":1339
+  /* "adios_mpi.pyx":1531
  *             npcount = npshape - npoffset
  *         else:
  *             npcount = np.array(count, dtype=np.int64)             # <<<<<<<<<<<<<<
@@ -20390,37 +23475,37 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  *         if len(scalar) == 0:
  */
   /*else*/ {
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_v_count);
     __Pyx_GIVEREF(__pyx_v_count);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_count);
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1339, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1339, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1531, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1339, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1531, __pyx_L1_error)
     __pyx_v_npcount = ((PyArrayObject *)__pyx_t_3);
     __pyx_t_3 = 0;
   }
   __pyx_L11:;
 
-  /* "adios_mpi.pyx":1341
+  /* "adios_mpi.pyx":1533
  *             npcount = np.array(count, dtype=np.int64)
  * 
  *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
@@ -20429,29 +23514,29 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   if (unlikely(__pyx_v_scalar == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1341, __pyx_L1_error)
+    __PYX_ERR(0, 1533, __pyx_L1_error)
   }
-  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1341, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1533, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 == 0) != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1342
+    /* "adios_mpi.pyx":1534
  * 
  *         if len(scalar) == 0:
  *             scalar = tuple((False,) * len(npshape))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(npoffset):
  */
-    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1342, __pyx_L1_error)
-    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1342, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1534, __pyx_L1_error)
+    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1534, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = PyNumber_Multiply(__pyx_tuple__29, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Multiply(__pyx_tuple__30, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1534, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_scalar, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1341
+    /* "adios_mpi.pyx":1533
  *             npcount = np.array(count, dtype=np.int64)
  * 
  *         if len(scalar) == 0:             # <<<<<<<<<<<<<<
@@ -20460,44 +23545,44 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1344
+  /* "adios_mpi.pyx":1536
  *             scalar = tuple((False,) * len(npshape))
  * 
  *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
  */
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1344, __pyx_L1_error)
-  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1344, __pyx_L1_error)
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1536, __pyx_L1_error)
+  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1536, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1345
+    /* "adios_mpi.pyx":1537
  * 
  *         if len(npshape) != len(npoffset):
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(npcount):
  */
-    __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1345, __pyx_L1_error)
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
+    __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npoffset)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1537, __pyx_L1_error)
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1345, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Offset_dimension_mismatch_offset, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1345, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1345, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1345, __pyx_L1_error)
+    __PYX_ERR(0, 1537, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1344
+    /* "adios_mpi.pyx":1536
  *             scalar = tuple((False,) * len(npshape))
  * 
  *         if len(npshape) != len(npoffset):             # <<<<<<<<<<<<<<
@@ -20506,44 +23591,44 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1347
+  /* "adios_mpi.pyx":1539
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
  *         if len(npshape) != len(npcount):             # <<<<<<<<<<<<<<
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  */
-  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1347, __pyx_L1_error)
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1347, __pyx_L1_error)
+  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1539, __pyx_L1_error)
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1539, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_11 != __pyx_t_5) != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1348
+    /* "adios_mpi.pyx":1540
  * 
  *         if len(npshape) != len(npcount):
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(scalar):
  */
-    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1348, __pyx_L1_error)
-    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1348, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npcount)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1540, __pyx_L1_error)
+    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1540, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Count_dimension_mismatch_count_d, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1348, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1540, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1540, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 1348, __pyx_L1_error)
+    __PYX_ERR(0, 1540, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1347
+    /* "adios_mpi.pyx":1539
  *             raise IndexError('Offset dimension mismatch (offset dim: %r)' % len(npoffset))
  * 
  *         if len(npshape) != len(npcount):             # <<<<<<<<<<<<<<
@@ -20552,23 +23637,23 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1350
+  /* "adios_mpi.pyx":1542
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  *         if len(npshape) != len(scalar):             # <<<<<<<<<<<<<<
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  */
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1350, __pyx_L1_error)
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_npshape)); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 1542, __pyx_L1_error)
   if (unlikely(__pyx_v_scalar == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(0, 1350, __pyx_L1_error)
+    __PYX_ERR(0, 1542, __pyx_L1_error)
   }
-  __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1350, __pyx_L1_error)
+  __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1542, __pyx_L1_error)
   __pyx_t_7 = ((__pyx_t_5 != __pyx_t_11) != 0);
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1351
+    /* "adios_mpi.pyx":1543
  * 
  *         if len(npshape) != len(scalar):
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))             # <<<<<<<<<<<<<<
@@ -20577,27 +23662,27 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
     if (unlikely(__pyx_v_scalar == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(0, 1351, __pyx_L1_error)
+      __PYX_ERR(0, 1543, __pyx_L1_error)
     }
-    __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1351, __pyx_L1_error)
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_GET_SIZE(__pyx_v_scalar); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1543, __pyx_L1_error)
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Scalar_dimension_mismatch_scalar, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1351, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Scalar_dimension_mismatch_scalar, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1543, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1351, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1351, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1543, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1351, __pyx_L1_error)
+    __PYX_ERR(0, 1543, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1350
+    /* "adios_mpi.pyx":1542
  *             raise IndexError('Count dimension mismatch (count dim: %r)' % len(npcount))
  * 
  *         if len(npshape) != len(scalar):             # <<<<<<<<<<<<<<
@@ -20606,18 +23691,18 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1353
+  /* "adios_mpi.pyx":1545
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
  *             raise IndexError('Requested is larger than the shape.')
  * 
  */
-  __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_npcount), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_v_npcount), ((PyObject *)__pyx_v_npoffset)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = PyObject_RichCompare(((PyObject *)__pyx_v_npshape), __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1353, __pyx_L1_error)
+  __pyx_t_6 = PyObject_RichCompare(((PyObject *)__pyx_v_npshape), __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1545, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_6 = NULL;
@@ -20631,31 +23716,31 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1353, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1545, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1353, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1545, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1353, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1545, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_7) {
 
-    /* "adios_mpi.pyx":1354
+    /* "adios_mpi.pyx":1546
  * 
  *         if (npshape < npcount + npoffset).any():
  *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1354, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1546, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1354, __pyx_L1_error)
+    __PYX_ERR(0, 1546, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1353
+    /* "adios_mpi.pyx":1545
  *             raise IndexError('Scalar dimension mismatch (scalar dim: %r)' % len(scalar))
  * 
  *         if (npshape < npcount + npoffset).any():             # <<<<<<<<<<<<<<
@@ -20664,16 +23749,16 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1356
+  /* "adios_mpi.pyx":1548
  *             raise IndexError('Requested is larger than the shape.')
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]             # <<<<<<<<<<<<<<
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):
  *             shape.insert(0, nsteps)
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1356, __pyx_L1_error)
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1356, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_npcount));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_npcount));
@@ -20681,16 +23766,16 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   __Pyx_INCREF(__pyx_v_scalar);
   __Pyx_GIVEREF(__pyx_v_scalar);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_scalar);
-  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1356, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
     __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_11 = 0;
     __pyx_t_12 = NULL;
   } else {
-    __pyx_t_11 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1356, __pyx_L1_error)
+    __pyx_t_11 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_12 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1356, __pyx_L1_error)
+    __pyx_t_12 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1548, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   for (;;) {
@@ -20698,17 +23783,17 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1356, __pyx_L1_error)
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1548, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1356, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1548, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       } else {
         if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1356, __pyx_L1_error)
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11); __Pyx_INCREF(__pyx_t_6); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1548, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1356, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1548, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       }
@@ -20718,7 +23803,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1356, __pyx_L1_error)
+          else __PYX_ERR(0, 1548, __pyx_L1_error)
         }
         break;
       }
@@ -20734,7 +23819,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 1356, __pyx_L1_error)
+        __PYX_ERR(0, 1548, __pyx_L1_error)
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -20747,15 +23832,15 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       __Pyx_INCREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_t_4);
       #else
-      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1356, __pyx_L1_error)
+      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1548, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1356, __pyx_L1_error)
+      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1548, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       #endif
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_13 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1356, __pyx_L1_error)
+      __pyx_t_13 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1548, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
@@ -20763,7 +23848,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       __Pyx_GOTREF(__pyx_t_2);
       index = 1; __pyx_t_4 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_4)) goto __pyx_L19_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_4);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) __PYX_ERR(0, 1356, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) __PYX_ERR(0, 1548, __pyx_L1_error)
       __pyx_t_14 = NULL;
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       goto __pyx_L20_unpacking_done;
@@ -20771,32 +23856,32 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 1356, __pyx_L1_error)
+      __PYX_ERR(0, 1548, __pyx_L1_error)
       __pyx_L20_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_2);
     __pyx_t_2 = 0;
     __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1356, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1548, __pyx_L1_error)
     __pyx_t_8 = ((!__pyx_t_7) != 0);
     if (__pyx_t_8) {
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_x))) __PYX_ERR(0, 1356, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_x))) __PYX_ERR(0, 1548, __pyx_L1_error)
     }
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_shape = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1357
+  /* "adios_mpi.pyx":1549
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):             # <<<<<<<<<<<<<<
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  */
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1357, __pyx_L1_error)
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1357, __pyx_L1_error)
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_nsteps, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1549, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (!__pyx_t_7) {
   } else {
@@ -20809,22 +23894,22 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __pyx_t_8 = __pyx_t_7;
     goto __pyx_L23_bool_binop_done;
   }
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_step_scalar); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1357, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_step_scalar); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1549, __pyx_L1_error)
   __pyx_t_15 = ((!__pyx_t_7) != 0);
   __pyx_t_8 = __pyx_t_15;
   __pyx_L23_bool_binop_done:;
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1358
+    /* "adios_mpi.pyx":1550
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):
  *             shape.insert(0, nsteps)             # <<<<<<<<<<<<<<
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  */
-    __pyx_t_16 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 1358, __pyx_L1_error)
+    __pyx_t_16 = PyList_Insert(__pyx_v_shape, 0, __pyx_v_nsteps); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 1550, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1357
+    /* "adios_mpi.pyx":1549
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):             # <<<<<<<<<<<<<<
@@ -20833,56 +23918,56 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1359
+  /* "adios_mpi.pyx":1551
  *         if (nsteps > 1) or (self.nsteps>1 and not step_scalar):
  *             shape.insert(0, nsteps)
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         if len(shape) > 0:
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1359, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_shape);
   __Pyx_GIVEREF(__pyx_v_shape);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1359, __pyx_L1_error)
+  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
-  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1359, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1359, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1551, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1359, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1551, __pyx_L1_error)
   __pyx_v_var = ((PyArrayObject *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1361
+  /* "adios_mpi.pyx":1553
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  *         if len(shape) > 0:             # <<<<<<<<<<<<<<
  *             var[:] = fill
  * 
  */
-  __pyx_t_11 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1361, __pyx_L1_error)
+  __pyx_t_11 = PyList_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1553, __pyx_L1_error)
   __pyx_t_8 = ((__pyx_t_11 > 0) != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1362
+    /* "adios_mpi.pyx":1554
  * 
  *         if len(shape) > 0:
  *             var[:] = fill             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_var), __pyx_v_fill, 0, 0, NULL, NULL, &__pyx_slice__31, 0, 0, 1) < 0) __PYX_ERR(0, 1362, __pyx_L1_error)
+    if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_var), __pyx_v_fill, 0, 0, NULL, NULL, &__pyx_slice__32, 0, 0, 1) < 0) __PYX_ERR(0, 1554, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1361
+    /* "adios_mpi.pyx":1553
  *         cdef np.ndarray var = np.zeros(shape, dtype=self.dtype)
  * 
  *         if len(shape) > 0:             # <<<<<<<<<<<<<<
@@ -20891,7 +23976,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1365
+  /* "adios_mpi.pyx":1557
  * 
  *         cdef ADIOS_SELECTION * sel
  *         sel = adios_selection_boundingbox (self.vp.ndim, <uint64_t *> npoffset.data, <uint64_t *> npcount.data)             # <<<<<<<<<<<<<<
@@ -20900,18 +23985,18 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   __pyx_v_sel = adios_selection_boundingbox(__pyx_v_self->vp->ndim, ((uint64_t *)__pyx_v_npoffset->data), ((uint64_t *)__pyx_v_npcount->data));
 
-  /* "adios_mpi.pyx":1370
+  /* "adios_mpi.pyx":1562
  *         ##print 'npcount', npcount
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)             # <<<<<<<<<<<<<<
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)
  */
-  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1370, __pyx_L1_error)
-  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1370, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_from_steps); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1562, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_nsteps); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1562, __pyx_L1_error)
   adios_schedule_read_byid(__pyx_v_self->file->fp, __pyx_v_sel, __pyx_v_self->vp->varid, __pyx_t_9, __pyx_t_10, ((void *)__pyx_v_var->data));
 
-  /* "adios_mpi.pyx":1371
+  /* "adios_mpi.pyx":1563
  * 
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)             # <<<<<<<<<<<<<<
@@ -20920,7 +24005,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   adios_perform_reads(__pyx_v_self->file->fp, 1);
 
-  /* "adios_mpi.pyx":1372
+  /* "adios_mpi.pyx":1564
  *         adios_schedule_read_byid (self.file.fp, sel, self.vp.varid, from_steps, nsteps, <void *> var.data)
  *         adios_perform_reads(self.file.fp, 1)
  *         adios_selection_delete(sel)             # <<<<<<<<<<<<<<
@@ -20929,7 +24014,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   adios_selection_delete(__pyx_v_sel);
 
-  /* "adios_mpi.pyx":1374
+  /* "adios_mpi.pyx":1566
  *         adios_selection_delete(sel)
  * 
  *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
@@ -20939,7 +24024,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
   __pyx_t_8 = ((__pyx_v_var->nd == 0) != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1375
+    /* "adios_mpi.pyx":1567
  * 
  *         if (var.ndim == 0):
  *             return np.asscalar(var)             # <<<<<<<<<<<<<<
@@ -20947,9 +24032,9 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  *             return var
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1375, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1567, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1375, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1567, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -20963,16 +24048,16 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_var)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1375, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_var)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1567, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1375, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1567, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(((PyObject *)__pyx_v_var));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_var));
       PyTuple_SET_ITEM(__pyx_t_1, 0+1, ((PyObject *)__pyx_v_var));
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1375, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1567, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
@@ -20981,7 +24066,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1374
+    /* "adios_mpi.pyx":1566
  *         adios_selection_delete(sel)
  * 
  *         if (var.ndim == 0):             # <<<<<<<<<<<<<<
@@ -20990,7 +24075,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
  */
   }
 
-  /* "adios_mpi.pyx":1377
+  /* "adios_mpi.pyx":1569
  *             return np.asscalar(var)
  *         else:
  *             return var             # <<<<<<<<<<<<<<
@@ -21004,7 +24089,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_read(struct __pyx_obj_9adios_mpi_var *_
     goto __pyx_L0;
   }
 
-  /* "adios_mpi.pyx":1264
+  /* "adios_mpi.pyx":1456
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -21060,7 +24145,7 @@ static PyObject *__pyx_pw_9adios_mpi_3var_13read(PyObject *__pyx_v_self, PyObjec
     values[1] = ((PyObject*)__pyx_empty_tuple);
     values[2] = ((PyObject*)__pyx_empty_tuple);
 
-    /* "adios_mpi.pyx":1265
+    /* "adios_mpi.pyx":1457
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),
  *                from_steps = None, nsteps = None, fill = 0, step_scalar = True):             # <<<<<<<<<<<<<<
@@ -21124,7 +24209,7 @@ static PyObject *__pyx_pw_9adios_mpi_3var_13read(PyObject *__pyx_v_self, PyObjec
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 1264, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) __PYX_ERR(0, 1456, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -21149,18 +24234,18 @@ static PyObject *__pyx_pw_9adios_mpi_3var_13read(PyObject *__pyx_v_self, PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("read", 0, 0, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1264, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("read", 0, 0, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1456, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.var.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_offset), (&PyTuple_Type), 1, "offset", 1))) __PYX_ERR(0, 1264, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1264, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scalar), (&PyTuple_Type), 1, "scalar", 1))) __PYX_ERR(0, 1264, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_offset), (&PyTuple_Type), 1, "offset", 1))) __PYX_ERR(0, 1456, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_count), (&PyTuple_Type), 1, "count", 1))) __PYX_ERR(0, 1456, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_scalar), (&PyTuple_Type), 1, "scalar", 1))) __PYX_ERR(0, 1456, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_3var_12read(((struct __pyx_obj_9adios_mpi_var *)__pyx_v_self), __pyx_v_offset, __pyx_v_count, __pyx_v_scalar, __pyx_v_from_steps, __pyx_v_nsteps, __pyx_v_fill, __pyx_v_step_scalar);
 
-  /* "adios_mpi.pyx":1264
+  /* "adios_mpi.pyx":1456
  *         return var
  * 
  *     cpdef read(self, tuple offset = (), tuple count = (), tuple scalar = (),             # <<<<<<<<<<<<<<
@@ -21192,7 +24277,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_12read(struct __pyx_obj_9adios_mpi_var
   __pyx_t_2.nsteps = __pyx_v_nsteps;
   __pyx_t_2.fill = __pyx_v_fill;
   __pyx_t_2.step_scalar = __pyx_v_step_scalar;
-  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
+  __pyx_t_1 = __pyx_vtabptr_9adios_mpi_var->read(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -21209,7 +24294,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_12read(struct __pyx_obj_9adios_mpi_var
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1379
+/* "adios_mpi.pyx":1571
  *             return var
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -21230,7 +24315,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_v
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1379, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_printself); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1571, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_9adios_mpi_3var_15printself)) {
       __Pyx_XDECREF(__pyx_r);
@@ -21246,10 +24331,10 @@ static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_v
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1379, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1379, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -21261,7 +24346,7 @@ static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_v
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "adios_mpi.pyx":1381
+  /* "adios_mpi.pyx":1573
  *     cpdef printself(self):
  *         """ Print native ADIOS_VARINFO structure. """
  *         assert self.vp != NULL, 'Not an open variable'             # <<<<<<<<<<<<<<
@@ -21272,32 +24357,32 @@ static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_v
   if (unlikely(!Py_OptimizeFlag)) {
     if (unlikely(!((__pyx_v_self->vp != NULL) != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Not_an_open_variable);
-      __PYX_ERR(0, 1381, __pyx_L1_error)
+      __PYX_ERR(0, 1573, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "adios_mpi.pyx":1382
+  /* "adios_mpi.pyx":1574
  *         """ Print native ADIOS_VARINFO structure. """
  *         assert self.vp != NULL, 'Not an open variable'
  *         print ('=== AdiosVariable ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1382, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1383
+  /* "adios_mpi.pyx":1575
  *         assert self.vp != NULL, 'Not an open variable'
  *         print ('=== AdiosVariable ===')
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  *         printvar(self.vp)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_vp);
   __Pyx_GIVEREF(__pyx_n_s_vp);
@@ -21305,29 +24390,29 @@ static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_v
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1384
+  /* "adios_mpi.pyx":1576
  *         print ('=== AdiosVariable ===')
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))             # <<<<<<<<<<<<<<
  *         printvar(self.vp)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->file->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_unsigned_long(((unsigned long)__pyx_v_self->file->fp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_fp);
   __Pyx_GIVEREF(__pyx_n_s_fp);
@@ -21335,31 +24420,31 @@ static PyObject *__pyx_f_9adios_mpi_3var_printself(struct __pyx_obj_9adios_mpi_v
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_15s_lu, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1385
+  /* "adios_mpi.pyx":1577
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  *         printvar(self.vp)             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_1 = __pyx_f_9adios_mpi_printvar(__pyx_v_self->vp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1385, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_printvar(__pyx_v_self->vp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1379
+  /* "adios_mpi.pyx":1571
  *             return var
  * 
  *     cpdef printself(self):             # <<<<<<<<<<<<<<
@@ -21403,7 +24488,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_14printself(struct __pyx_obj_9adios_mp
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("printself", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_9adios_mpi_3var_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1379, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_9adios_mpi_3var_printself(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1571, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -21420,7 +24505,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_14printself(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1387
+/* "adios_mpi.pyx":1579
  *         printvar(self.vp)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -21452,7 +24537,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1388
+  /* "adios_mpi.pyx":1580
  * 
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \             # <<<<<<<<<<<<<<
@@ -21461,44 +24546,44 @@ static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1389
+  /* "adios_mpi.pyx":1581
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
  *                (self.varid,             # <<<<<<<<<<<<<<
  *                 self.name,
  *                 self.dtype,
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1389, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1581, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":1392
+  /* "adios_mpi.pyx":1584
  *                 self.name,
  *                 self.dtype,
  *                 self.ndim,             # <<<<<<<<<<<<<<
  *                 self.dims,
  *                 self.nsteps,
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1392, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1584, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios_mpi.pyx":1394
+  /* "adios_mpi.pyx":1586
  *                 self.ndim,
  *                 self.dims,
  *                 self.nsteps,             # <<<<<<<<<<<<<<
  *                 self.attrs.keys())
  * 
  */
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1394, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1586, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
 
-  /* "adios_mpi.pyx":1395
+  /* "adios_mpi.pyx":1587
  *                 self.dims,
  *                 self.nsteps,
  *                 self.attrs.keys())             # <<<<<<<<<<<<<<
  * 
  *     def _readattr(self, varname):
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1395, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1587, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -21511,22 +24596,22 @@ static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1395, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1587, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1395, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1587, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1389
+  /* "adios_mpi.pyx":1581
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \
  *                (self.varid,             # <<<<<<<<<<<<<<
  *                 self.name,
  *                 self.dtype,
  */
-  __pyx_t_5 = PyTuple_New(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1389, __pyx_L1_error)
+  __pyx_t_5 = PyTuple_New(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1581, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
@@ -21550,21 +24635,21 @@ static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi
   __pyx_t_3 = 0;
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1388
+  /* "adios_mpi.pyx":1580
  * 
  *     def __repr__(self):
  *         return "AdiosVar (varid=%r, name=%r, dtype=%r, ndim=%r, dims=%r, nsteps=%r, attrs=%r)" % \             # <<<<<<<<<<<<<<
  *                (self.varid,
  *                 self.name,
  */
-  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1388, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVar_varid_r_name_r_dtype_r, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1580, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1387
+  /* "adios_mpi.pyx":1579
  *         printvar(self.vp)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -21588,7 +24673,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_16__repr__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1397
+/* "adios_mpi.pyx":1589
  *                 self.attrs.keys())
  * 
  *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
@@ -21631,7 +24716,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
   __Pyx_RefNannySetupContext("_readattr", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios_mpi.pyx":1398
+  /* "adios_mpi.pyx":1590
  * 
  *     def _readattr(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -21642,14 +24727,14 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1399
+    /* "adios_mpi.pyx":1591
  *     def _readattr(self, varname):
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1399, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1591, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -21657,7 +24742,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1398
+    /* "adios_mpi.pyx":1590
  * 
  *     def _readattr(self, varname):
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -21666,37 +24751,37 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":1401
+  /* "adios_mpi.pyx":1593
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1401, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1593, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1402
+    /* "adios_mpi.pyx":1594
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1402, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1594, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1402, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1594, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 1402, __pyx_L1_error)
+    __PYX_ERR(0, 1594, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1401
+    /* "adios_mpi.pyx":1593
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -21705,7 +24790,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":1404
+  /* "adios_mpi.pyx":1596
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -21716,26 +24801,26 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1404, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1596, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1404, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1596, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1404, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1596, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1404, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1596, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1404, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1596, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1404, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1596, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -21745,7 +24830,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1404, __pyx_L1_error)
+          else __PYX_ERR(0, 1596, __pyx_L1_error)
         }
         break;
       }
@@ -21754,7 +24839,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1405
+    /* "adios_mpi.pyx":1597
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -21765,20 +24850,20 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1406
+      /* "adios_mpi.pyx":1598
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1406, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1598, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1406, __pyx_L1_error)
+      __PYX_ERR(0, 1598, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1405
+      /* "adios_mpi.pyx":1597
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -21787,35 +24872,35 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
     }
 
-    /* "adios_mpi.pyx":1408
+    /* "adios_mpi.pyx":1600
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1600, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1408, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1600, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1408, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1600, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1409
+      /* "adios_mpi.pyx":1601
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.attrs.keys():
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__35, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1409, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__36, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1601, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1408
+      /* "adios_mpi.pyx":1600
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -21824,14 +24909,14 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
     }
 
-    /* "adios_mpi.pyx":1411
+    /* "adios_mpi.pyx":1603
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1603, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -21844,19 +24929,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1411, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1411, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1411, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1603, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":1412
+      /* "adios_mpi.pyx":1604
  * 
  *             if key_ in self.attrs.keys():
  *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
@@ -21864,7 +24949,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  *             if '/'+key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1412, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1604, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -21877,16 +24962,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1604, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1412, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1604, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1604, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -21896,7 +24981,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1411
+      /* "adios_mpi.pyx":1603
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -21905,16 +24990,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
     }
 
-    /* "adios_mpi.pyx":1414
+    /* "adios_mpi.pyx":1606
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get('/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1414, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1414, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1606, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -21927,20 +25012,20 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1414, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1606, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1414, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1606, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1414, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1606, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1415
+      /* "adios_mpi.pyx":1607
  * 
  *             if '/'+key_ in self.attrs.keys():
  *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -21948,9 +25033,9 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  *             for name in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1415, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1415, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1607, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -21963,17 +25048,17 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1607, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1415, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1607, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_9);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_9);
         __pyx_t_9 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1607, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
@@ -21983,7 +25068,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1414
+      /* "adios_mpi.pyx":1606
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -21992,14 +25077,14 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
     }
 
-    /* "adios_mpi.pyx":1417
+    /* "adios_mpi.pyx":1609
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1417, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1609, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_10 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -22012,10 +25097,10 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       }
     }
     if (__pyx_t_10) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1609, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1609, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -22023,9 +25108,9 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1417, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1609, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_12 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1417, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1609, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     for (;;) {
@@ -22033,17 +25118,17 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         if (likely(PyList_CheckExact(__pyx_t_7))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1417, __pyx_L1_error)
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1609, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1609, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1417, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1609, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1609, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -22053,7 +25138,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1417, __pyx_L1_error)
+            else __PYX_ERR(0, 1609, __pyx_L1_error)
           }
           break;
         }
@@ -22062,14 +25147,14 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":1419
+      /* "adios_mpi.pyx":1611
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self.file, self.name + '/' + key_)
  * 
  */
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1419, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1611, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -22082,30 +25167,30 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1611, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1419, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1611, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1611, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1419, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1611, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L14_bool_binop_done;
       }
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1419, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1611, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1419, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1611, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -22118,28 +25203,28 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1611, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1419, __pyx_L1_error)
+        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1611, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_13, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1611, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1419, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1611, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L14_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios_mpi.pyx":1420
+        /* "adios_mpi.pyx":1612
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self.file, self.name + '/' + key_)             # <<<<<<<<<<<<<<
@@ -22147,12 +25232,12 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  *     def _readvar(self, args):
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_10 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_10 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
@@ -22160,7 +25245,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         __Pyx_GIVEREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
         __pyx_t_10 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1420, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1612, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_10;
@@ -22169,7 +25254,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L0;
 
-        /* "adios_mpi.pyx":1419
+        /* "adios_mpi.pyx":1611
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -22178,7 +25263,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
  */
       }
 
-      /* "adios_mpi.pyx":1417
+      /* "adios_mpi.pyx":1609
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -22188,7 +25273,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "adios_mpi.pyx":1404
+    /* "adios_mpi.pyx":1596
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -22198,7 +25283,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1397
+  /* "adios_mpi.pyx":1589
  *                 self.attrs.keys())
  * 
  *     def _readattr(self, varname):             # <<<<<<<<<<<<<<
@@ -22228,7 +25313,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_18_readattr(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1422
+/* "adios_mpi.pyx":1614
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *     def _readvar(self, args):             # <<<<<<<<<<<<<<
@@ -22274,19 +25359,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("_readvar", 0);
 
-  /* "adios_mpi.pyx":1423
+  /* "adios_mpi.pyx":1615
  * 
  *     def _readvar(self, args):
  *         shape = list(self.dims)             # <<<<<<<<<<<<<<
  *         if self.nsteps > 1:
  *             shape.insert(0, self.nsteps)
  */
-  __pyx_t_1 = PySequence_List(__pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1423, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_v_self->dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1615, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_shape = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1424
+  /* "adios_mpi.pyx":1616
  *     def _readvar(self, args):
  *         shape = list(self.dims)
  *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
@@ -22296,19 +25381,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
   __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1425
+    /* "adios_mpi.pyx":1617
  *         shape = list(self.dims)
  *         if self.nsteps > 1:
  *             shape.insert(0, self.nsteps)             # <<<<<<<<<<<<<<
  *         asel = sel.select(shape, args)
  * 
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1425, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1617, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyList_Insert(__pyx_v_shape, 0, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 1425, __pyx_L1_error)
+    __pyx_t_3 = PyList_Insert(__pyx_v_shape, 0, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(0, 1617, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1424
+    /* "adios_mpi.pyx":1616
  *     def _readvar(self, args):
  *         shape = list(self.dims)
  *         if self.nsteps > 1:             # <<<<<<<<<<<<<<
@@ -22317,16 +25402,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1426
+  /* "adios_mpi.pyx":1618
  *         if self.nsteps > 1:
  *             shape.insert(0, self.nsteps)
  *         asel = sel.select(shape, args)             # <<<<<<<<<<<<<<
  * 
  *         if isinstance(asel, sel.SimpleSelection):
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1618, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_select); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1426, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_select); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1618, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -22341,7 +25426,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __pyx_t_6 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1426, __pyx_L1_error)
+  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1618, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_4) {
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -22352,31 +25437,31 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
   __Pyx_INCREF(__pyx_v_args);
   __Pyx_GIVEREF(__pyx_v_args);
   PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_args);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1426, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1618, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_asel = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1428
+  /* "adios_mpi.pyx":1620
  *         asel = sel.select(shape, args)
  * 
  *         if isinstance(asel, sel.SimpleSelection):             # <<<<<<<<<<<<<<
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1620, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_SimpleSelection); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1428, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_SimpleSelection); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1620, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_2 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_5); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1428, __pyx_L1_error)
+  __pyx_t_2 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_5); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1620, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_8 = (__pyx_t_2 != 0);
   if (__pyx_t_8) {
 
-    /* "adios_mpi.pyx":1429
+    /* "adios_mpi.pyx":1621
  * 
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22386,7 +25471,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
     __pyx_t_8 = ((__pyx_v_self->nsteps > 1) != 0);
     if (__pyx_t_8) {
 
-      /* "adios_mpi.pyx":1430
+      /* "adios_mpi.pyx":1622
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],             # <<<<<<<<<<<<<<
@@ -22394,119 +25479,119 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  *                                  scalar=asel.sel[3][1:],
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1430, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1430, __pyx_L1_error)
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1430, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__36, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1430, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_7) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1431
+      /* "adios_mpi.pyx":1623
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],             # <<<<<<<<<<<<<<
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1431, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__38, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1623, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_7) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1432
+      /* "adios_mpi.pyx":1624
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],             # <<<<<<<<<<<<<<
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1432, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1624, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1432, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1624, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__38, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1432, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__39, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1624, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1433
+      /* "adios_mpi.pyx":1625
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],             # <<<<<<<<<<<<<<
  *                                  nsteps=asel.sel[1][0],
  *                                  step_scalar=asel.sel[3][0])
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1433, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1625, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1433, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1625, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1433, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1625, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_7) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_7) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1434
+      /* "adios_mpi.pyx":1626
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],             # <<<<<<<<<<<<<<
  *                                  step_scalar=asel.sel[3][0])
  *             else:
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1626, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1434, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1626, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1434, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1626, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_7) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_7) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1435
+      /* "adios_mpi.pyx":1627
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],
  *                                  step_scalar=asel.sel[3][0])             # <<<<<<<<<<<<<<
  *             else:
  *                 return self.read(offset=asel.sel[0],
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1435, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1435, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1435, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1627, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_7) < 0) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1430
+      /* "adios_mpi.pyx":1622
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],             # <<<<<<<<<<<<<<
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],
  */
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1430, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1622, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22514,7 +25599,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __pyx_t_7 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1429
+      /* "adios_mpi.pyx":1621
  * 
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22523,7 +25608,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  */
     }
 
-    /* "adios_mpi.pyx":1437
+    /* "adios_mpi.pyx":1629
  *                                  step_scalar=asel.sel[3][0])
  *             else:
  *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
@@ -22532,42 +25617,42 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  */
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1437, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1629, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1437, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1629, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1437, __pyx_L1_error)
+      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1629, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1438
+      /* "adios_mpi.pyx":1630
  *             else:
  *                 return self.read(offset=asel.sel[0],
  *                                  count=asel.sel[1],             # <<<<<<<<<<<<<<
  *                                  scalar=asel.sel[3],
  *                                  from_steps=0,
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1438, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1630, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1438, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1630, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 1438, __pyx_L1_error)
+      if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 1630, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1439
+      /* "adios_mpi.pyx":1631
  *                 return self.read(offset=asel.sel[0],
  *                                  count=asel.sel[1],
  *                                  scalar=asel.sel[3],             # <<<<<<<<<<<<<<
  *                                  from_steps=0,
  *                                  nsteps=1)
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1439, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1439, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1631, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 1439, __pyx_L1_error)
+      if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 1631, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1437
+      /* "adios_mpi.pyx":1629
  *                                  step_scalar=asel.sel[3][0])
  *             else:
  *                 return self.read(offset=asel.sel[0],             # <<<<<<<<<<<<<<
@@ -22580,7 +25665,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __pyx_t_9.scalar = ((PyObject*)__pyx_t_4);
       __pyx_t_9.from_steps = __pyx_int_0;
       __pyx_t_9.nsteps = __pyx_int_1;
-      __pyx_t_7 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1437, __pyx_L1_error)
+      __pyx_t_7 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1629, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -22590,7 +25675,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       goto __pyx_L0;
     }
 
-    /* "adios_mpi.pyx":1428
+    /* "adios_mpi.pyx":1620
  *         asel = sel.select(shape, args)
  * 
  *         if isinstance(asel, sel.SimpleSelection):             # <<<<<<<<<<<<<<
@@ -22599,82 +25684,82 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1443
+  /* "adios_mpi.pyx":1635
  *                                  nsteps=1)
  * 
  *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
  *             shape = list(asel.sel[0][1])
  *             shape[asel.morder[0]] = 0
  */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1443, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1635, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FancySelection); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1443, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_FancySelection); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1635, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_8 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1443, __pyx_L1_error)
+  __pyx_t_8 = PyObject_IsInstance(__pyx_v_asel, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 1635, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_2 = (__pyx_t_8 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1444
+    /* "adios_mpi.pyx":1636
  * 
  *         elif isinstance(asel, sel.FancySelection):
  *             shape = list(asel.sel[0][1])             # <<<<<<<<<<<<<<
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1636, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1444, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1636, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1444, __pyx_L1_error)
+    __pyx_t_7 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF_SET(__pyx_v_shape, ((PyObject*)__pyx_t_7));
     __pyx_t_7 = 0;
 
-    /* "adios_mpi.pyx":1445
+    /* "adios_mpi.pyx":1637
  *         elif isinstance(asel, sel.FancySelection):
  *             shape = list(asel.sel[0][1])
  *             shape[asel.morder[0]] = 0             # <<<<<<<<<<<<<<
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    if (unlikely(PyObject_SetItem(__pyx_v_shape, __pyx_t_4, __pyx_int_0) < 0)) __PYX_ERR(0, 1445, __pyx_L1_error)
+    if (unlikely(PyObject_SetItem(__pyx_v_shape, __pyx_t_4, __pyx_int_0) < 0)) __PYX_ERR(0, 1637, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":1446
+    /* "adios_mpi.pyx":1638
  *             shape = list(asel.sel[0][1])
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1446, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_shape);
     __Pyx_GIVEREF(__pyx_v_shape);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
-    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1446, __pyx_L1_error)
+    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1446, __pyx_L1_error)
-    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_ndarray), __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1446, __pyx_L1_error)
+    if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1638, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_ndarray), __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1638, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_v_var = __pyx_t_5;
     __pyx_t_5 = 0;
 
-    /* "adios_mpi.pyx":1447
+    /* "adios_mpi.pyx":1639
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
@@ -22683,15 +25768,15 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  */
     __Pyx_INCREF(__pyx_int_0);
     __pyx_t_5 = __pyx_int_0;
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1447, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_sel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
       __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
       __pyx_t_10 = NULL;
     } else {
-      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1447, __pyx_L1_error)
+      __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1639, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1447, __pyx_L1_error)
+      __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1639, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -22699,17 +25784,17 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
         if (likely(PyList_CheckExact(__pyx_t_4))) {
           if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1447, __pyx_L1_error)
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1639, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1447, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         } else {
           if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1447, __pyx_L1_error)
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1639, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1447, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         }
@@ -22719,7 +25804,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1447, __pyx_L1_error)
+            else __PYX_ERR(0, 1639, __pyx_L1_error)
           }
           break;
         }
@@ -22729,13 +25814,13 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __pyx_t_7 = 0;
       __Pyx_INCREF(__pyx_t_5);
       __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_5);
-      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1447, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_5);
       __pyx_t_5 = __pyx_t_7;
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1448
+      /* "adios_mpi.pyx":1640
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22745,115 +25830,115 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __pyx_t_2 = ((__pyx_v_self->nsteps > 1) != 0);
       if (__pyx_t_2) {
 
-        /* "adios_mpi.pyx":1449
+        /* "adios_mpi.pyx":1641
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],             # <<<<<<<<<<<<<<
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  */
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1449, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1449, __pyx_L1_error)
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1449, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__39, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1449, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__40, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_12) < 0) __PYX_ERR(0, 1449, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_offset, __pyx_t_12) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "adios_mpi.pyx":1450
+        /* "adios_mpi.pyx":1642
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],             # <<<<<<<<<<<<<<
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],
  */
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_t_12, 1, 0, NULL, NULL, &__pyx_slice__40, 1, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1450, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_t_12, 1, 0, NULL, NULL, &__pyx_slice__41, 1, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1642, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_11) < 0) __PYX_ERR(0, 1449, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_count, __pyx_t_11) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-        /* "adios_mpi.pyx":1451
+        /* "adios_mpi.pyx":1643
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],             # <<<<<<<<<<<<<<
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],
  */
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1451, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1643, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__41, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1451, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_11, 1, 0, NULL, NULL, &__pyx_slice__42, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1643, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_12) < 0) __PYX_ERR(0, 1449, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scalar, __pyx_t_12) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "adios_mpi.pyx":1452
+        /* "adios_mpi.pyx":1644
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],             # <<<<<<<<<<<<<<
  *                                   nsteps=obj[1][0],
  *                                   step_scalar=obj[3][0])
  */
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1452, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1644, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1452, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1644, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_11) < 0) __PYX_ERR(0, 1449, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_from_steps, __pyx_t_11) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-        /* "adios_mpi.pyx":1453
+        /* "adios_mpi.pyx":1645
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],             # <<<<<<<<<<<<<<
  *                                   step_scalar=obj[3][0])
  *                 else:
  */
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1453, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1645, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1453, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1645, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_12) < 0) __PYX_ERR(0, 1449, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_nsteps, __pyx_t_12) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "adios_mpi.pyx":1454
+        /* "adios_mpi.pyx":1646
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],
  *                                   step_scalar=obj[3][0])             # <<<<<<<<<<<<<<
  *                 else:
  *                     v = self.read(offset=obj[0],
  */
-        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1454, __pyx_L1_error)
+        __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1646, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1454, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1646, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_11) < 0) __PYX_ERR(0, 1449, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_step_scalar, __pyx_t_11) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-        /* "adios_mpi.pyx":1449
+        /* "adios_mpi.pyx":1641
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],             # <<<<<<<<<<<<<<
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  */
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1449, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1641, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_11);
         __pyx_t_11 = 0;
 
-        /* "adios_mpi.pyx":1448
+        /* "adios_mpi.pyx":1640
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:             # <<<<<<<<<<<<<<
@@ -22863,7 +25948,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
         goto __pyx_L8;
       }
 
-      /* "adios_mpi.pyx":1456
+      /* "adios_mpi.pyx":1648
  *                                   step_scalar=obj[3][0])
  *                 else:
  *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
@@ -22871,33 +25956,33 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  *                                   scalar=obj[3],
  */
       /*else*/ {
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1456, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1648, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
-        if (!(likely(PyTuple_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(0, 1456, __pyx_L1_error)
+        if (!(likely(PyTuple_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(0, 1648, __pyx_L1_error)
 
-        /* "adios_mpi.pyx":1457
+        /* "adios_mpi.pyx":1649
  *                 else:
  *                     v = self.read(offset=obj[0],
  *                                   count=obj[1],             # <<<<<<<<<<<<<<
  *                                   scalar=obj[3],
  *                                   from_steps=0,
  */
-        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1457, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1649, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1457, __pyx_L1_error)
+        if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1649, __pyx_L1_error)
 
-        /* "adios_mpi.pyx":1458
+        /* "adios_mpi.pyx":1650
  *                     v = self.read(offset=obj[0],
  *                                   count=obj[1],
  *                                   scalar=obj[3],             # <<<<<<<<<<<<<<
  *                                   from_steps=0,
  *                                   nsteps=1)
  */
-        __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1458, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_obj, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 1458, __pyx_L1_error)
+        if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 1650, __pyx_L1_error)
 
-        /* "adios_mpi.pyx":1456
+        /* "adios_mpi.pyx":1648
  *                                   step_scalar=obj[3][0])
  *                 else:
  *                     v = self.read(offset=obj[0],             # <<<<<<<<<<<<<<
@@ -22910,7 +25995,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
         __pyx_t_9.scalar = ((PyObject*)__pyx_t_7);
         __pyx_t_9.from_steps = __pyx_int_0;
         __pyx_t_9.nsteps = __pyx_int_1;
-        __pyx_t_12 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1456, __pyx_L1_error)
+        __pyx_t_12 = ((struct __pyx_vtabstruct_9adios_mpi_var *)__pyx_v_self->__pyx_vtab)->read(__pyx_v_self, 0, &__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1648, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22920,19 +26005,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       }
       __pyx_L8:;
 
-      /* "adios_mpi.pyx":1462
+      /* "adios_mpi.pyx":1654
  *                                   nsteps=1)
  * 
  *                 var = np.concatenate((var, v), axis=asel.morder[idx])             # <<<<<<<<<<<<<<
  * 
  *             var = np.reshape(var, asel.mshape)
  */
-      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_INCREF(__pyx_v_var);
       __Pyx_GIVEREF(__pyx_v_var);
@@ -22940,21 +26025,21 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __Pyx_INCREF(__pyx_v_v);
       __Pyx_GIVEREF(__pyx_v_v);
       PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_v);
-      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12);
       __pyx_t_12 = 0;
-      __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_morder); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_v_idx); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_v_idx); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_axis, __pyx_t_13) < 0) __PYX_ERR(0, 1462, __pyx_L1_error)
+      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_axis, __pyx_t_13) < 0) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1462, __pyx_L1_error)
+      __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1654, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -22962,7 +26047,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
       __Pyx_DECREF_SET(__pyx_v_var, __pyx_t_13);
       __pyx_t_13 = 0;
 
-      /* "adios_mpi.pyx":1447
+      /* "adios_mpi.pyx":1639
  *             shape[asel.morder[0]] = 0
  *             var = np.ndarray(shape, dtype=self.dtype)
  *             for idx, obj in enumerate(asel.sel):             # <<<<<<<<<<<<<<
@@ -22973,19 +26058,19 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "adios_mpi.pyx":1464
+    /* "adios_mpi.pyx":1656
  *                 var = np.concatenate((var, v), axis=asel.morder[idx])
  * 
  *             var = np.reshape(var, asel.mshape)             # <<<<<<<<<<<<<<
  * 
  *             return var
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1464, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1464, __pyx_L1_error)
+    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1656, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_13);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_mshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1464, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_asel, __pyx_n_s_mshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1656, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_12 = NULL;
     __pyx_t_6 = 0;
@@ -22999,7 +26084,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1656, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     if (__pyx_t_12) {
       __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __pyx_t_12 = NULL;
@@ -23010,14 +26095,14 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
     __Pyx_GIVEREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1464, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1656, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __Pyx_DECREF_SET(__pyx_v_var, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "adios_mpi.pyx":1466
+    /* "adios_mpi.pyx":1658
  *             var = np.reshape(var, asel.mshape)
  * 
  *             return var             # <<<<<<<<<<<<<<
@@ -23029,7 +26114,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
     __pyx_r = __pyx_v_var;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1443
+    /* "adios_mpi.pyx":1635
  *                                  nsteps=1)
  * 
  *         elif isinstance(asel, sel.FancySelection):             # <<<<<<<<<<<<<<
@@ -23038,7 +26123,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":1469
+  /* "adios_mpi.pyx":1661
  * 
  *         else:
  *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
@@ -23046,14 +26131,14 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
  *     def __getitem__(self, args):
  */
   /*else*/ {
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1469, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1661, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 1469, __pyx_L1_error)
+    __PYX_ERR(0, 1661, __pyx_L1_error)
   }
 
-  /* "adios_mpi.pyx":1422
+  /* "adios_mpi.pyx":1614
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *     def _readvar(self, args):             # <<<<<<<<<<<<<<
@@ -23084,7 +26169,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_20_readvar(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1471
+/* "adios_mpi.pyx":1663
  *             raise NotImplementedError("Not implemented yet")
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -23116,7 +26201,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios_mpi.pyx":1472
+  /* "adios_mpi.pyx":1664
  * 
  *     def __getitem__(self, args):
  *         if isinstance(args, str):             # <<<<<<<<<<<<<<
@@ -23127,7 +26212,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1473
+    /* "adios_mpi.pyx":1665
  *     def __getitem__(self, args):
  *         if isinstance(args, str):
  *             return self._readattr(args)             # <<<<<<<<<<<<<<
@@ -23135,7 +26220,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
  *             return self._readvar(args)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1473, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1665, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -23148,16 +26233,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1473, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1665, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1473, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1665, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_args);
       __Pyx_GIVEREF(__pyx_v_args);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_args);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1473, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1665, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -23166,7 +26251,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1472
+    /* "adios_mpi.pyx":1664
  * 
  *     def __getitem__(self, args):
  *         if isinstance(args, str):             # <<<<<<<<<<<<<<
@@ -23175,7 +26260,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
  */
   }
 
-  /* "adios_mpi.pyx":1475
+  /* "adios_mpi.pyx":1667
  *             return self._readattr(args)
  *         else:
  *             return self._readvar(args)             # <<<<<<<<<<<<<<
@@ -23184,7 +26269,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
  */
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readvar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1475, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readvar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1667, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -23197,16 +26282,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1475, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1667, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1475, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1667, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_args);
       __Pyx_GIVEREF(__pyx_v_args);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_args);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1475, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1667, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -23216,7 +26301,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
     goto __pyx_L0;
   }
 
-  /* "adios_mpi.pyx":1471
+  /* "adios_mpi.pyx":1663
  *             raise NotImplementedError("Not implemented yet")
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -23238,7 +26323,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_22__getitem__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1478
+/* "adios_mpi.pyx":1670
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -23268,7 +26353,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios_mpi.pyx":1479
+  /* "adios_mpi.pyx":1671
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):
  *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
@@ -23276,7 +26361,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_
  *     ## To support ipython tab completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1479, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1671, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -23289,16 +26374,16 @@ static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1479, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1479, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1671, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1479, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -23307,7 +26392,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1478
+  /* "adios_mpi.pyx":1670
  * 
  *     ## For access var/attr/group as an attribute
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -23329,7 +26414,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_24__getattr__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1482
+/* "adios_mpi.pyx":1674
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -23363,28 +26448,28 @@ static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios_mpi.pyx":1483
+  /* "adios_mpi.pyx":1675
  *     ## To support ipython tab completion
  *     def __dir__(self):
  *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/attr1'] == f.attr1
  */
-  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1483, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1675, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_k0 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1486
+  /* "adios_mpi.pyx":1678
  *         ## Normalize to support var starting with '/'
  *         ## E.g., f['/attr1'] == f.attr1
  *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
  *         return k0 + k2
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1486, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1486, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1678, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -23397,10 +26482,10 @@ static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1486, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1678, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1486, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1678, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -23415,17 +26500,17 @@ static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1486, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1486, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1678, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1486, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -23433,7 +26518,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_
   __pyx_v_k2 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1487
+  /* "adios_mpi.pyx":1679
  *         ## E.g., f['/attr1'] == f.attr1
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k2             # <<<<<<<<<<<<<<
@@ -23441,13 +26526,13 @@ static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_
  *     ## Require for dictionary key completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1679, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1482
+  /* "adios_mpi.pyx":1674
  * 
  *     ## To support ipython tab completion
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -23472,7 +26557,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_26__dir__(struct __pyx_obj_9adios_mpi_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1490
+/* "adios_mpi.pyx":1682
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -23502,7 +26587,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios_mpi.pyx":1491
+  /* "adios_mpi.pyx":1683
  *     ## Require for dictionary key completion
  *     def keys(self):
  *         return self.attrs.keys()             # <<<<<<<<<<<<<<
@@ -23510,7 +26595,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var
  * cdef class attr(object):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1491, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1683, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -23523,10 +26608,10 @@ static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1491, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1491, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -23534,7 +26619,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1490
+  /* "adios_mpi.pyx":1682
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -23555,7 +26640,7 @@ static PyObject *__pyx_pf_9adios_mpi_3var_28keys(struct __pyx_obj_9adios_mpi_var
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1515
+/* "adios_mpi.pyx":1707
  *     property name:
  *         """ The attribute name """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23581,7 +26666,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1516
+  /* "adios_mpi.pyx":1708
  *         """ The attribute name """
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -23593,7 +26678,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1515
+  /* "adios_mpi.pyx":1707
  *     property name:
  *         """ The attribute name """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23608,7 +26693,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4name___get__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1520
+/* "adios_mpi.pyx":1712
  *     property dtype:
  *         """ The attribute type as in numpy.dtype """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23634,7 +26719,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adio
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1521
+  /* "adios_mpi.pyx":1713
  *         """ The attribute type as in numpy.dtype """
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -23646,7 +26731,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adio
   __pyx_r = ((PyObject *)__pyx_v_self->dtype);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1520
+  /* "adios_mpi.pyx":1712
  *     property dtype:
  *         """ The attribute type as in numpy.dtype """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23661,7 +26746,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5dtype___get__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1525
+/* "adios_mpi.pyx":1717
  *     property value:
  *         """ The attribute's value """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23692,7 +26777,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1526
+  /* "adios_mpi.pyx":1718
  *         """ The attribute's value """
  *         def __get__(self):
  *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
@@ -23702,7 +26787,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
   __pyx_t_1 = ((__pyx_v_self->value->nd == 0) != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":1527
+    /* "adios_mpi.pyx":1719
  *         def __get__(self):
  *             if (self.value.ndim == 0):
  *                 return np.asscalar(self.value)             # <<<<<<<<<<<<<<
@@ -23710,9 +26795,9 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
  *                 return self.value
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1527, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1719, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1527, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1719, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_3 = NULL;
@@ -23726,16 +26811,16 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
       }
     }
     if (!__pyx_t_3) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self->value)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1527, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self->value)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1527, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1719, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
       __Pyx_INCREF(((PyObject *)__pyx_v_self->value));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, ((PyObject *)__pyx_v_self->value));
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1527, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -23744,7 +26829,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1526
+    /* "adios_mpi.pyx":1718
  *         """ The attribute's value """
  *         def __get__(self):
  *             if (self.value.ndim == 0):             # <<<<<<<<<<<<<<
@@ -23753,7 +26838,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
  */
   }
 
-  /* "adios_mpi.pyx":1529
+  /* "adios_mpi.pyx":1721
  *                 return np.asscalar(self.value)
  *             else:
  *                 return self.value             # <<<<<<<<<<<<<<
@@ -23767,7 +26852,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
     goto __pyx_L0;
   }
 
-  /* "adios_mpi.pyx":1525
+  /* "adios_mpi.pyx":1717
  *     property value:
  *         """ The attribute's value """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -23789,7 +26874,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_5value___get__(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1531
+/* "adios_mpi.pyx":1723
  *                 return self.value
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -23825,11 +26910,11 @@ static int __pyx_pw_9adios_mpi_4attr_1__init__(PyObject *__pyx_v_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1531, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1723, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1531, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1723, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -23842,14 +26927,14 @@ static int __pyx_pw_9adios_mpi_4attr_1__init__(PyObject *__pyx_v_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1531, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1723, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.attr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_9adios_mpi_file, 1, "file", 0))) __PYX_ERR(0, 1531, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1531, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_9adios_mpi_file, 1, "file", 0))) __PYX_ERR(0, 1723, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1723, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_4attr___init__(((struct __pyx_obj_9adios_mpi_attr *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
@@ -23885,7 +26970,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
   int __pyx_t_12;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1532
+  /* "adios_mpi.pyx":1724
  * 
  *     def __init__(self, file file, str name):
  *         self.file = file             # <<<<<<<<<<<<<<
@@ -23898,7 +26983,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
   __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
   __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios_mpi.pyx":1533
+  /* "adios_mpi.pyx":1725
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.name = name             # <<<<<<<<<<<<<<
@@ -23911,7 +26996,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":1541
+  /* "adios_mpi.pyx":1733
  *         cdef int len
  * 
  *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)             # <<<<<<<<<<<<<<
@@ -23920,14 +27005,14 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
  */
   __pyx_t_1 = __pyx_v_self->name;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1541, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_9adios_mpi_s2b(((PyObject*)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1733, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1541, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1733, __pyx_L1_error)
   __pyx_v_err = adios_get_attr(__pyx_v_self->file->fp, __pyx_t_3, (&__pyx_v_atype), (&__pyx_v_bytes), ((void **)(&__pyx_v_p)));
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1543
+  /* "adios_mpi.pyx":1735
  *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
  * 
  *         if err == 0:             # <<<<<<<<<<<<<<
@@ -23937,28 +27022,28 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
   __pyx_t_4 = ((__pyx_v_err == 0) != 0);
   if (__pyx_t_4) {
 
-    /* "adios_mpi.pyx":1544
+    /* "adios_mpi.pyx":1736
  * 
  *         if err == 0:
  *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)
  */
-    __pyx_t_2 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1544, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1544, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_string); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1736, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1544, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1736, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_4) {
 
-      /* "adios_mpi.pyx":1545
+      /* "adios_mpi.pyx":1737
  *         if err == 0:
  *             if atype == DATATYPE.string:
  *                 bytes = bytes - 1 ## Remove the NULL terminal             # <<<<<<<<<<<<<<
@@ -23967,7 +27052,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
  */
       __pyx_v_bytes = (__pyx_v_bytes - 1);
 
-      /* "adios_mpi.pyx":1544
+      /* "adios_mpi.pyx":1736
  * 
  *         if err == 0:
  *             if atype == DATATYPE.string:             # <<<<<<<<<<<<<<
@@ -23976,7 +27061,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
  */
     }
 
-    /* "adios_mpi.pyx":1546
+    /* "adios_mpi.pyx":1738
  *             if atype == DATATYPE.string:
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)             # <<<<<<<<<<<<<<
@@ -23985,7 +27070,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
  */
     __pyx_t_6.__pyx_n = 1;
     __pyx_t_6.strlen = __pyx_v_bytes;
-    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_atype, 0, &__pyx_t_6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error)
+    __pyx_t_1 = ((PyObject *)__pyx_f_9adios_mpi_adios2npdtype(__pyx_v_atype, 0, &__pyx_t_6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1738, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -23993,40 +27078,40 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
     __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1547
+    /* "adios_mpi.pyx":1739
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)
  *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
  *                 strlist = list()
  *                 len = <int>(bytes/sizeof(p))
  */
-    __pyx_t_1 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1547, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1547, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DATATYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1739, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1547, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_string_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1739, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1547, __pyx_L1_error)
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1739, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1547, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1739, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_4) {
 
-      /* "adios_mpi.pyx":1548
+      /* "adios_mpi.pyx":1740
  *             self.dtype = adios2npdtype(atype, bytes)
  *             if atype == DATATYPE.string_array:
  *                 strlist = list()             # <<<<<<<<<<<<<<
  *                 len = <int>(bytes/sizeof(p))
  *                 for i in range(len):
  */
-      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1548, __pyx_L1_error)
+      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1740, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_v_strlist = ((PyObject*)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "adios_mpi.pyx":1549
+      /* "adios_mpi.pyx":1741
  *             if atype == DATATYPE.string_array:
  *                 strlist = list()
  *                 len = <int>(bytes/sizeof(p))             # <<<<<<<<<<<<<<
@@ -24036,11 +27121,11 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       __pyx_t_7 = (sizeof(__pyx_v_p));
       if (unlikely(__pyx_t_7 == 0)) {
         PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        __PYX_ERR(0, 1549, __pyx_L1_error)
+        __PYX_ERR(0, 1741, __pyx_L1_error)
       }
       __pyx_v_len = ((int)(__pyx_v_bytes / __pyx_t_7));
 
-      /* "adios_mpi.pyx":1550
+      /* "adios_mpi.pyx":1742
  *                 strlist = list()
  *                 len = <int>(bytes/sizeof(p))
  *                 for i in range(len):             # <<<<<<<<<<<<<<
@@ -24051,29 +27136,29 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
         __pyx_v_i = __pyx_t_9;
 
-        /* "adios_mpi.pyx":1551
+        /* "adios_mpi.pyx":1743
  *                 len = <int>(bytes/sizeof(p))
  *                 for i in range(len):
  *                     strlist.append((<char **>p)[i])             # <<<<<<<<<<<<<<
  *                 self.value = np.array(strlist)
  *                 self.dtype = self.value.dtype
  */
-        __pyx_t_5 = __Pyx_PyBytes_FromString((((char **)__pyx_v_p)[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1551, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyBytes_FromString((((char **)__pyx_v_p)[__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1743, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_strlist, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1551, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_strlist, __pyx_t_5); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 1743, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
 
-      /* "adios_mpi.pyx":1552
+      /* "adios_mpi.pyx":1744
  *                 for i in range(len):
  *                     strlist.append((<char **>p)[i])
  *                 self.value = np.array(strlist)             # <<<<<<<<<<<<<<
  *                 self.dtype = self.value.dtype
  * 
  */
-      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1552, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1744, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1552, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1744, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_2 = NULL;
@@ -24087,44 +27172,44 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
         }
       }
       if (!__pyx_t_2) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_strlist); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1552, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_strlist); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1744, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1552, __pyx_L1_error)
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1744, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __pyx_t_2 = NULL;
         __Pyx_INCREF(__pyx_v_strlist);
         __Pyx_GIVEREF(__pyx_v_strlist);
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_strlist);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1552, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1744, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1552, __pyx_L1_error)
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1744, __pyx_L1_error)
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_v_self->value);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
       __pyx_v_self->value = ((PyArrayObject *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "adios_mpi.pyx":1553
+      /* "adios_mpi.pyx":1745
  *                     strlist.append((<char **>p)[i])
  *                 self.value = np.array(strlist)
  *                 self.dtype = self.value.dtype             # <<<<<<<<<<<<<<
  * 
  *             elif self.dtype is None:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->value), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1553, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->value), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1745, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 1553, __pyx_L1_error)
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 1745, __pyx_L1_error)
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_v_self->dtype);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
       __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "adios_mpi.pyx":1547
+      /* "adios_mpi.pyx":1739
  *                 bytes = bytes - 1 ## Remove the NULL terminal
  *             self.dtype = adios2npdtype(atype, bytes)
  *             if atype == DATATYPE.string_array:             # <<<<<<<<<<<<<<
@@ -24134,7 +27219,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       goto __pyx_L5;
     }
 
-    /* "adios_mpi.pyx":1555
+    /* "adios_mpi.pyx":1747
  *                 self.dtype = self.value.dtype
  * 
  *             elif self.dtype is None:             # <<<<<<<<<<<<<<
@@ -24145,18 +27230,18 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
     __pyx_t_12 = (__pyx_t_4 != 0);
     if (__pyx_t_12) {
 
-      /* "adios_mpi.pyx":1557
+      /* "adios_mpi.pyx":1749
  *             elif self.dtype is None:
  *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \
  *                       (self.name, atype, bytes))             # <<<<<<<<<<<<<<
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)
  */
-      __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyInt_From_ADIOS_DATATYPES(__pyx_v_atype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1749, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1749, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1557, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1749, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_INCREF(__pyx_v_self->name);
       __Pyx_GIVEREF(__pyx_v_self->name);
@@ -24168,27 +27253,27 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       __pyx_t_5 = 0;
       __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1556
+      /* "adios_mpi.pyx":1748
  * 
  *             elif self.dtype is None:
  *                 print ('Warning: No support yet: %s (type=%d, bytes=%d)' % \             # <<<<<<<<<<<<<<
  *                       (self.name, atype, bytes))
  *             else:
  */
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1556, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Warning_No_support_yet_s_type_d, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1748, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1556, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1748, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_GIVEREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1556, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1748, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1555
+      /* "adios_mpi.pyx":1747
  *                 self.dtype = self.value.dtype
  * 
  *             elif self.dtype is None:             # <<<<<<<<<<<<<<
@@ -24198,7 +27283,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       goto __pyx_L5;
     }
 
-    /* "adios_mpi.pyx":1559
+    /* "adios_mpi.pyx":1751
  *                       (self.name, atype, bytes))
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)             # <<<<<<<<<<<<<<
@@ -24208,15 +27293,15 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
     /*else*/ {
       if (unlikely(__pyx_v_self->dtype->elsize == 0)) {
         PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        __PYX_ERR(0, 1559, __pyx_L1_error)
+        __PYX_ERR(0, 1751, __pyx_L1_error)
       }
       else if (sizeof(int) == sizeof(long) && (!(((int)-1) > 0)) && unlikely(__pyx_v_self->dtype->elsize == (int)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_bytes))) {
         PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
-        __PYX_ERR(0, 1559, __pyx_L1_error)
+        __PYX_ERR(0, 1751, __pyx_L1_error)
       }
       __pyx_v_len = ((int)__Pyx_div_int(__pyx_v_bytes, __pyx_v_self->dtype->elsize));
 
-      /* "adios_mpi.pyx":1560
+      /* "adios_mpi.pyx":1752
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)
  *                 if len == 1:             # <<<<<<<<<<<<<<
@@ -24226,41 +27311,41 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       __pyx_t_12 = ((__pyx_v_len == 1) != 0);
       if (__pyx_t_12) {
 
-        /* "adios_mpi.pyx":1561
+        /* "adios_mpi.pyx":1753
  *                 len = <int>(bytes/self.dtype.itemsize)
  *                 if len == 1:
  *                     self.value = np.array(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
  *                 else:
  *                     self.value = np.zeros(len, dtype=self.dtype)
  */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1561, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1561, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1561, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1561, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __pyx_t_1 = 0;
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1561, __pyx_L1_error)
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1561, __pyx_L1_error)
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1561, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1753, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1561, __pyx_L1_error)
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1753, __pyx_L1_error)
         __Pyx_GIVEREF(__pyx_t_2);
         __Pyx_GOTREF(__pyx_v_self->value);
         __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
         __pyx_v_self->value = ((PyArrayObject *)__pyx_t_2);
         __pyx_t_2 = 0;
 
-        /* "adios_mpi.pyx":1560
+        /* "adios_mpi.pyx":1752
  *             else:
  *                 len = <int>(bytes/self.dtype.itemsize)
  *                 if len == 1:             # <<<<<<<<<<<<<<
@@ -24270,7 +27355,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
         goto __pyx_L8;
       }
 
-      /* "adios_mpi.pyx":1563
+      /* "adios_mpi.pyx":1755
  *                     self.value = np.array(len, dtype=self.dtype)
  *                 else:
  *                     self.value = np.zeros(len, dtype=self.dtype)             # <<<<<<<<<<<<<<
@@ -24278,27 +27363,27 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
  *         else:
  */
       /*else*/ {
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1563, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_2);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
         __pyx_t_2 = 0;
-        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1563, __pyx_L1_error)
+        __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
-        if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1563, __pyx_L1_error)
-        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1563, __pyx_L1_error)
+        if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->dtype)) < 0) __PYX_ERR(0, 1755, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1563, __pyx_L1_error)
+        if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1755, __pyx_L1_error)
         __Pyx_GIVEREF(__pyx_t_11);
         __Pyx_GOTREF(__pyx_v_self->value);
         __Pyx_DECREF(((PyObject *)__pyx_v_self->value));
@@ -24307,7 +27392,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
       }
       __pyx_L8:;
 
-      /* "adios_mpi.pyx":1564
+      /* "adios_mpi.pyx":1756
  *                 else:
  *                     self.value = np.zeros(len, dtype=self.dtype)
  *                 self.value.data = <char *> p             # <<<<<<<<<<<<<<
@@ -24318,7 +27403,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
     }
     __pyx_L5:;
 
-    /* "adios_mpi.pyx":1543
+    /* "adios_mpi.pyx":1735
  *         err = adios_get_attr(self.file.fp, s2b(self.name), &atype, &bytes, <void **> &p)
  * 
  *         if err == 0:             # <<<<<<<<<<<<<<
@@ -24328,7 +27413,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":1566
+  /* "adios_mpi.pyx":1758
  *                 self.value.data = <char *> p
  *         else:
  *             raise KeyError(name)             # <<<<<<<<<<<<<<
@@ -24336,21 +27421,21 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
  *     def __getitem__(self, args):
  */
   /*else*/ {
-    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1566, __pyx_L1_error)
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(__pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_name);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1566, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 1566, __pyx_L1_error)
+    __PYX_ERR(0, 1758, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":1531
+  /* "adios_mpi.pyx":1723
  *                 return self.value
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -24374,7 +27459,7 @@ static int __pyx_pf_9adios_mpi_4attr___init__(struct __pyx_obj_9adios_mpi_attr *
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1568
+/* "adios_mpi.pyx":1760
  *             raise KeyError(name)
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -24406,35 +27491,35 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios_mpi.pyx":1569
+  /* "adios_mpi.pyx":1761
  * 
  *     def __getitem__(self, args):
  *         val = self.value[args]             # <<<<<<<<<<<<<<
  *         if (val.ndim == 0):
  *             return np.asscalar(val)
  */
-  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->value), __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1569, __pyx_L1_error)
+  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->value), __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1761, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_val = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1570
+  /* "adios_mpi.pyx":1762
  *     def __getitem__(self, args):
  *         val = self.value[args]
  *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
  *             return np.asscalar(val)
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1570, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1570, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1570, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":1571
+    /* "adios_mpi.pyx":1763
  *         val = self.value[args]
  *         if (val.ndim == 0):
  *             return np.asscalar(val)             # <<<<<<<<<<<<<<
@@ -24442,9 +27527,9 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
  *             return val
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1571, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1571, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_asscalar); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1763, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_1 = NULL;
@@ -24458,16 +27543,16 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
       }
     }
     if (!__pyx_t_1) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1763, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1571, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1763, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_val);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1763, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -24476,7 +27561,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1570
+    /* "adios_mpi.pyx":1762
  *     def __getitem__(self, args):
  *         val = self.value[args]
  *         if (val.ndim == 0):             # <<<<<<<<<<<<<<
@@ -24485,7 +27570,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
  */
   }
 
-  /* "adios_mpi.pyx":1573
+  /* "adios_mpi.pyx":1765
  *             return np.asscalar(val)
  *         else:
  *             return val             # <<<<<<<<<<<<<<
@@ -24499,7 +27584,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
     goto __pyx_L0;
   }
 
-  /* "adios_mpi.pyx":1568
+  /* "adios_mpi.pyx":1760
  *             raise KeyError(name)
  * 
  *     def __getitem__(self, args):             # <<<<<<<<<<<<<<
@@ -24522,7 +27607,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_2__getitem__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1575
+/* "adios_mpi.pyx":1767
  *             return val
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -24550,7 +27635,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4__repr__(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1576
+  /* "adios_mpi.pyx":1768
  * 
  *     def __repr__(self):
  *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
@@ -24559,14 +27644,14 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4__repr__(struct __pyx_obj_9adios_mpi
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1577
+  /* "adios_mpi.pyx":1769
  *     def __repr__(self):
  *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \
  *                (self.name, self.dtype, self.value)             # <<<<<<<<<<<<<<
  * 
  * cdef class group(dict):
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1769, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -24578,21 +27663,21 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4__repr__(struct __pyx_obj_9adios_mpi
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self->value));
   PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_self->value));
 
-  /* "adios_mpi.pyx":1576
+  /* "adios_mpi.pyx":1768
  * 
  *     def __repr__(self):
  *         return "AdiosAttr (name=%r, dtype=%r, value=%r)" % \             # <<<<<<<<<<<<<<
  *                (self.name, self.dtype, self.value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1576, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttr_name_r_dtype_r_value_r, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1768, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1575
+  /* "adios_mpi.pyx":1767
  *             return val
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -24612,7 +27697,7 @@ static PyObject *__pyx_pf_9adios_mpi_4attr_4__repr__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1593
+/* "adios_mpi.pyx":1785
  *     cpdef public softdict attrs
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -24648,11 +27733,11 @@ static int __pyx_pw_9adios_mpi_5group_1__init__(PyObject *__pyx_v_self, PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1593, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1785, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1593, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1785, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -24665,14 +27750,14 @@ static int __pyx_pw_9adios_mpi_5group_1__init__(PyObject *__pyx_v_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1593, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1785, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_9adios_mpi_file, 1, "file", 0))) __PYX_ERR(0, 1593, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1593, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_9adios_mpi_file, 1, "file", 0))) __PYX_ERR(0, 1785, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1785, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_5group___init__(((struct __pyx_obj_9adios_mpi_group *)__pyx_v_self), __pyx_v_file, __pyx_v_name);
 
   /* function exit code */
@@ -24701,7 +27786,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_name);
 
-  /* "adios_mpi.pyx":1594
+  /* "adios_mpi.pyx":1786
  * 
  *     def __init__(self, file file, str name):
  *         self.file = file             # <<<<<<<<<<<<<<
@@ -24714,33 +27799,33 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   __Pyx_DECREF(((PyObject *)__pyx_v_self->file));
   __pyx_v_self->file = __pyx_v_file;
 
-  /* "adios_mpi.pyx":1595
+  /* "adios_mpi.pyx":1787
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.name = name.rstrip('/')             # <<<<<<<<<<<<<<
  * 
  *         self.vars = softdict()
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1595, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1595, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1595, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1787, __pyx_L1_error)
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->name);
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1597
+  /* "adios_mpi.pyx":1789
  *         self.name = name.rstrip('/')
  * 
  *         self.vars = softdict()             # <<<<<<<<<<<<<<
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1597, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __Pyx_GOTREF(__pyx_v_self->vars);
@@ -24748,14 +27833,14 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   __pyx_v_self->vars = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1598
+  /* "adios_mpi.pyx":1790
  * 
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():             # <<<<<<<<<<<<<<
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -24768,10 +27853,10 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -24779,9 +27864,9 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1598, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1790, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -24789,17 +27874,17 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1598, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1790, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1598, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1790, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -24809,17 +27894,17 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1598, __pyx_L1_error)
+          else __PYX_ERR(0, 1790, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_2);
     }
-    if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1598, __pyx_L1_error)
+    if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1790, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1599
+    /* "adios_mpi.pyx":1791
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24828,26 +27913,26 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1599, __pyx_L1_error)
+      __PYX_ERR(0, 1791, __pyx_L1_error)
     }
-    __pyx_t_2 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1599, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1791, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios_mpi.pyx":1600
+      /* "adios_mpi.pyx":1792
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]             # <<<<<<<<<<<<<<
  *             if name.startswith('/' + self.name + '/'):
  *                 self.vars[name.replace('/' + self.name + '/', '', 1)] = self.file.vars[name]
  */
-      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       __pyx_t_10 = 0;
@@ -24861,7 +27946,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_9) {
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
@@ -24875,15 +27960,15 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_8 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1792, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1599
+      /* "adios_mpi.pyx":1791
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24892,7 +27977,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     }
 
-    /* "adios_mpi.pyx":1601
+    /* "adios_mpi.pyx":1793
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24901,31 +27986,31 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1601, __pyx_L1_error)
+      __PYX_ERR(0, 1793, __pyx_L1_error)
     }
-    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1601, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1793, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1601, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1793, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_3, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1601, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_3, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1793, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios_mpi.pyx":1602
+      /* "adios_mpi.pyx":1794
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  *             if name.startswith('/' + self.name + '/'):
  *                 self.vars[name.replace('/' + self.name + '/', '', 1)] = self.file.vars[name]             # <<<<<<<<<<<<<<
  * 
  *         self.attrs = softdict()
  */
-      __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      __pyx_t_3 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->vars), __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_t_11 = NULL;
@@ -24940,7 +28025,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_9 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      __pyx_t_9 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       if (__pyx_t_11) {
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -24954,15 +28039,15 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_8 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 1602, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->vars), __pyx_t_2, __pyx_t_3) < 0)) __PYX_ERR(0, 1794, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":1601
+      /* "adios_mpi.pyx":1793
  *             if name.startswith(self.name + '/'):
  *                 self.vars[name.replace(self.name + '/', '', 1)] = self.file.vars[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -24971,7 +28056,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     }
 
-    /* "adios_mpi.pyx":1598
+    /* "adios_mpi.pyx":1790
  * 
  *         self.vars = softdict()
  *         for name in self.file.vars.keys():             # <<<<<<<<<<<<<<
@@ -24981,14 +28066,14 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1604
+  /* "adios_mpi.pyx":1796
  *                 self.vars[name.replace('/' + self.name + '/', '', 1)] = self.file.vars[name]
  * 
  *         self.attrs = softdict()             # <<<<<<<<<<<<<<
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1604, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_softdict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -24996,14 +28081,14 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   __pyx_v_self->attrs = ((struct __pyx_obj_9adios_mpi_softdict *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1605
+  /* "adios_mpi.pyx":1797
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1605, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->file->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25016,10 +28101,10 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1797, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1797, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25027,9 +28112,9 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1605, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1797, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1605, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1797, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -25037,17 +28122,17 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1605, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1797, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1797, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1605, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1797, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1797, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -25057,17 +28142,17 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1605, __pyx_L1_error)
+          else __PYX_ERR(0, 1797, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_1);
     }
-    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1605, __pyx_L1_error)
+    if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1797, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1606
+    /* "adios_mpi.pyx":1798
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -25076,26 +28161,26 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1606, __pyx_L1_error)
+      __PYX_ERR(0, 1798, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1606, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_1, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1798, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios_mpi.pyx":1607
+      /* "adios_mpi.pyx":1799
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  */
-      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
+      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1799, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1799, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1607, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1799, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = NULL;
       __pyx_t_10 = 0;
@@ -25109,7 +28194,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1607, __pyx_L1_error)
+      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1799, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_8) {
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
@@ -25123,15 +28208,15 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1607, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1799, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 1607, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 1799, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "adios_mpi.pyx":1606
+      /* "adios_mpi.pyx":1798
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():
  *             if name.startswith(self.name + '/'):             # <<<<<<<<<<<<<<
@@ -25140,7 +28225,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     }
 
-    /* "adios_mpi.pyx":1608
+    /* "adios_mpi.pyx":1800
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -25149,31 +28234,31 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "startswith");
-      __PYX_ERR(0, 1608, __pyx_L1_error)
+      __PYX_ERR(0, 1800, __pyx_L1_error)
     }
-    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1608, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1608, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1800, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1608, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyStr_Tailmatch(__pyx_v_name, __pyx_t_2, 0, PY_SSIZE_T_MAX, -1); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1800, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if ((__pyx_t_6 != 0)) {
 
-      /* "adios_mpi.pyx":1609
+      /* "adios_mpi.pyx":1801
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, varname):
  */
-      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->file->attrs), __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      __pyx_t_11 = PyNumber_Add(__pyx_kp_s_, __pyx_v_self->name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_9 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      __pyx_t_9 = PyNumber_Add(__pyx_t_11, __pyx_kp_s_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_t_11 = NULL;
@@ -25188,7 +28273,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
           __pyx_t_10 = 1;
         }
       }
-      __pyx_t_8 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       if (__pyx_t_11) {
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -25202,15 +28287,15 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
       __Pyx_GIVEREF(__pyx_int_1);
       PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_10, __pyx_int_1);
       __pyx_t_9 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1609, __pyx_L1_error)
+      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->attrs), __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1801, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1608
+      /* "adios_mpi.pyx":1800
  *             if name.startswith(self.name + '/'):
  *                 self.attrs[name.replace(self.name + '/', '', 1)] = self.file.attrs[name]
  *             if name.startswith('/' + self.name + '/'):             # <<<<<<<<<<<<<<
@@ -25219,7 +28304,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
  */
     }
 
-    /* "adios_mpi.pyx":1605
+    /* "adios_mpi.pyx":1797
  * 
  *         self.attrs = softdict()
  *         for name in self.file.attrs.keys():             # <<<<<<<<<<<<<<
@@ -25229,7 +28314,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1593
+  /* "adios_mpi.pyx":1785
  *     cpdef public softdict attrs
  * 
  *     def __init__(self, file file, str name):             # <<<<<<<<<<<<<<
@@ -25256,7 +28341,7 @@ static int __pyx_pf_9adios_mpi_5group___init__(struct __pyx_obj_9adios_mpi_group
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1611
+/* "adios_mpi.pyx":1803
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -25302,7 +28387,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "adios_mpi.pyx":1622
+  /* "adios_mpi.pyx":1814
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -25313,14 +28398,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1623
+    /* "adios_mpi.pyx":1815
  *         """
  *         if not isinstance(varname, tuple):
  *             varname = (varname,)             # <<<<<<<<<<<<<<
  * 
  *         if len(varname) > 1:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1623, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
@@ -25328,7 +28413,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
     __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1622
+    /* "adios_mpi.pyx":1814
  * 
  *         """
  *         if not isinstance(varname, tuple):             # <<<<<<<<<<<<<<
@@ -25337,37 +28422,37 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":1625
+  /* "adios_mpi.pyx":1817
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
  *             raise KeyError(varname)
  * 
  */
-  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1625, __pyx_L1_error)
+  __pyx_t_4 = PyObject_Length(__pyx_v_varname); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1817, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1626
+    /* "adios_mpi.pyx":1818
  * 
  *         if len(varname) > 1:
  *             raise KeyError(varname)             # <<<<<<<<<<<<<<
  * 
  *         for key_ in varname:
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1626, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_varname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1626, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1818, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 1626, __pyx_L1_error)
+    __PYX_ERR(0, 1818, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1625
+    /* "adios_mpi.pyx":1817
  *             varname = (varname,)
  * 
  *         if len(varname) > 1:             # <<<<<<<<<<<<<<
@@ -25376,7 +28461,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
   }
 
-  /* "adios_mpi.pyx":1628
+  /* "adios_mpi.pyx":1820
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -25387,26 +28472,26 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
     __pyx_t_5 = __pyx_v_varname; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1628, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1820, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1628, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1820, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1628, __pyx_L1_error)
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1820, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1628, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1820, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1628, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1820, __pyx_L1_error)
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1628, __pyx_L1_error)
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1820, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         #endif
       }
@@ -25416,7 +28501,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1628, __pyx_L1_error)
+          else __PYX_ERR(0, 1820, __pyx_L1_error)
         }
         break;
       }
@@ -25425,7 +28510,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
     __Pyx_XDECREF_SET(__pyx_v_key_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1629
+    /* "adios_mpi.pyx":1821
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -25436,20 +28521,20 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1630
+      /* "adios_mpi.pyx":1822
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1822, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1630, __pyx_L1_error)
+      __PYX_ERR(0, 1822, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1629
+      /* "adios_mpi.pyx":1821
  * 
  *         for key_ in varname:
  *             if not isinstance(key_, str):             # <<<<<<<<<<<<<<
@@ -25458,35 +28543,35 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":1632
+    /* "adios_mpi.pyx":1824
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1632, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_key_, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1824, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1632, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1824, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1632, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1824, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1633
+      /* "adios_mpi.pyx":1825
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__46, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1633, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_key_, 1, 0, NULL, NULL, &__pyx_slice__47, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1825, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF_SET(__pyx_v_key_, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1632
+      /* "adios_mpi.pyx":1824
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
@@ -25495,14 +28580,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":1635
+    /* "adios_mpi.pyx":1827
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1635, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1827, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25515,19 +28600,19 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1635, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1827, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1635, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1827, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1635, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1827, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":1636
+      /* "adios_mpi.pyx":1828
  * 
  *             if key_ in self.vars.keys():
  *                 return self.vars.get(key_)             # <<<<<<<<<<<<<<
@@ -25535,7 +28620,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  *             if key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1636, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1828, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25548,16 +28633,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1828, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1636, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1828, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1636, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1828, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -25567,7 +28652,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1635
+      /* "adios_mpi.pyx":1827
  *                 key_ = key_[1:]
  * 
  *             if key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -25576,14 +28661,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":1638
+    /* "adios_mpi.pyx":1830
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get(key_)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1638, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1830, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25596,19 +28681,19 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1830, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1830, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1638, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key_, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1830, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1639
+      /* "adios_mpi.pyx":1831
  * 
  *             if key_ in self.attrs.keys():
  *                 return self.attrs.get(key_)             # <<<<<<<<<<<<<<
@@ -25616,7 +28701,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  *             if '/'+key_ in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1831, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25629,16 +28714,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1831, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1639, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1831, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1831, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
@@ -25648,7 +28733,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1638
+      /* "adios_mpi.pyx":1830
  *                 return self.vars.get(key_)
  * 
  *             if key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -25657,16 +28742,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":1641
+    /* "adios_mpi.pyx":1833
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 return self.vars.get('/'+key_)
  * 
  */
-    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1641, __pyx_L1_error)
+    __pyx_t_7 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1641, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1833, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -25679,20 +28764,20 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1833, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1641, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1833, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1641, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1833, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":1642
+      /* "adios_mpi.pyx":1834
  * 
  *             if '/'+key_ in self.vars.keys():
  *                 return self.vars.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -25700,9 +28785,9 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  *             if '/'+key_ in self.attrs.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1642, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1834, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1642, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1834, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -25715,17 +28800,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1642, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1834, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1642, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1834, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1642, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1834, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
@@ -25735,7 +28820,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1641
+      /* "adios_mpi.pyx":1833
  *                 return self.attrs.get(key_)
  * 
  *             if '/'+key_ in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -25744,16 +28829,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":1644
+    /* "adios_mpi.pyx":1836
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 return self.attrs.get('/'+key_)
  * 
  */
-    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1644, __pyx_L1_error)
+    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1836, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1644, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1836, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_8 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -25766,20 +28851,20 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_8) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1644, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1836, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1644, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1836, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1644, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1836, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1645
+      /* "adios_mpi.pyx":1837
  * 
  *             if '/'+key_ in self.attrs.keys():
  *                 return self.attrs.get('/'+key_)             # <<<<<<<<<<<<<<
@@ -25787,9 +28872,9 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  *             for name in self.vars.keys():
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1645, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1837, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1645, __pyx_L1_error)
+      __pyx_t_10 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1837, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25802,17 +28887,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1645, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1837, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1645, __pyx_L1_error)
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1837, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_GIVEREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_10);
         __pyx_t_10 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1645, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1837, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -25822,7 +28907,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       goto __pyx_L0;
 
-      /* "adios_mpi.pyx":1644
+      /* "adios_mpi.pyx":1836
  *                 return self.vars.get('/'+key_)
  * 
  *             if '/'+key_ in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -25831,14 +28916,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
     }
 
-    /* "adios_mpi.pyx":1647
+    /* "adios_mpi.pyx":1839
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1647, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1839, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25851,10 +28936,10 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1647, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1839, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1647, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1839, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25862,9 +28947,9 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1647, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1839, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1647, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1839, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -25872,17 +28957,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1647, __pyx_L1_error)
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1839, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1647, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1839, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1647, __pyx_L1_error)
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_11); __Pyx_INCREF(__pyx_t_7); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1839, __pyx_L1_error)
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1647, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1839, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
         }
@@ -25892,7 +28977,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1647, __pyx_L1_error)
+            else __PYX_ERR(0, 1839, __pyx_L1_error)
           }
           break;
         }
@@ -25901,14 +28986,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "adios_mpi.pyx":1649
+      /* "adios_mpi.pyx":1841
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self.file, self.name + '/' + key_)
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1649, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1841, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -25921,30 +29006,30 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1649, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1841, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1649, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1841, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1649, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1841, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1649, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1841, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L16_bool_binop_done;
       }
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1649, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1841, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1649, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1841, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -25957,28 +29042,28 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1649, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1841, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_7);
       } else {
-        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1649, __pyx_L1_error)
+        __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1841, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1649, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1841, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1649, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1841, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L16_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios_mpi.pyx":1650
+        /* "adios_mpi.pyx":1842
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self.file, self.name + '/' + key_)             # <<<<<<<<<<<<<<
@@ -25986,12 +29071,12 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  *             for name in self.attrs.keys():
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_7 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_7 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_9 = PyNumber_Add(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_9 = PyNumber_Add(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
@@ -25999,7 +29084,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         __Pyx_GIVEREF(__pyx_t_9);
         PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9);
         __pyx_t_9 = 0;
-        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1650, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1842, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_r = __pyx_t_9;
@@ -26008,7 +29093,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         goto __pyx_L0;
 
-        /* "adios_mpi.pyx":1649
+        /* "adios_mpi.pyx":1841
  *             for name in self.vars.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -26017,7 +29102,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
       }
 
-      /* "adios_mpi.pyx":1647
+      /* "adios_mpi.pyx":1839
  *                 return self.attrs.get('/'+key_)
  * 
  *             for name in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -26027,14 +29112,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1652
+    /* "adios_mpi.pyx":1844
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  */
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1652, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1844, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -26047,10 +29132,10 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       }
     }
     if (__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1844, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1844, __pyx_L1_error)
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -26058,9 +29143,9 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1652, __pyx_L1_error)
+      __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1844, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1652, __pyx_L1_error)
+      __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1844, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     for (;;) {
@@ -26068,17 +29153,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         if (likely(PyList_CheckExact(__pyx_t_9))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1652, __pyx_L1_error)
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1844, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1844, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1652, __pyx_L1_error)
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11); __Pyx_INCREF(__pyx_t_3); __pyx_t_11++; if (unlikely(0 < 0)) __PYX_ERR(0, 1844, __pyx_L1_error)
           #else
-          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(__pyx_t_9, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1844, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           #endif
         }
@@ -26088,7 +29173,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1652, __pyx_L1_error)
+            else __PYX_ERR(0, 1844, __pyx_L1_error)
           }
           break;
         }
@@ -26097,14 +29182,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":1654
+      /* "adios_mpi.pyx":1846
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
  *                     return group(self.file, self.name + '/' + key_)
  * 
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1846, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -26117,30 +29202,30 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1654, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_key_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1654, __pyx_L1_error)
+        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1846, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_INCREF(__pyx_v_key_);
         __Pyx_GIVEREF(__pyx_v_key_);
         PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_key_);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1654, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1654, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1846, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L21_bool_binop_done;
       }
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1846, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1654, __pyx_L1_error)
+      __pyx_t_8 = PyNumber_Add(__pyx_kp_s_, __pyx_v_key_); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1846, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_13 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -26153,28 +29238,28 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         }
       }
       if (!__pyx_t_13) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1654, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1654, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1846, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_13); __pyx_t_13 = NULL;
         __Pyx_GIVEREF(__pyx_t_8);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_8);
         __pyx_t_8 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1654, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1846, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1654, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1846, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L21_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "adios_mpi.pyx":1655
+        /* "adios_mpi.pyx":1847
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):
  *                     return group(self.file, self.name + '/' + key_)             # <<<<<<<<<<<<<<
@@ -26182,12 +29267,12 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  *         raise KeyError(key_)
  */
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_3 = PyNumber_Add(__pyx_v_self->name, __pyx_kp_s_); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_v_key_); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(((PyObject *)__pyx_v_self->file));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self->file));
@@ -26195,7 +29280,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         __Pyx_GIVEREF(__pyx_t_7);
         PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7);
         __pyx_t_7 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1655, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_group), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1847, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_7;
@@ -26204,7 +29289,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         goto __pyx_L0;
 
-        /* "adios_mpi.pyx":1654
+        /* "adios_mpi.pyx":1846
  *             for name in self.attrs.keys():
  *                 #if (key_ == os.path.dirname(name)) or ('/' + key_ == os.path.dirname(name)):
  *                 if name.startswith(key_) or name.startswith('/'+key_):             # <<<<<<<<<<<<<<
@@ -26213,7 +29298,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
  */
       }
 
-      /* "adios_mpi.pyx":1652
+      /* "adios_mpi.pyx":1844
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *             for name in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -26223,7 +29308,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
     }
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-    /* "adios_mpi.pyx":1628
+    /* "adios_mpi.pyx":1820
  *             raise KeyError(varname)
  * 
  *         for key_ in varname:             # <<<<<<<<<<<<<<
@@ -26233,27 +29318,27 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "adios_mpi.pyx":1657
+  /* "adios_mpi.pyx":1849
  *                     return group(self.file, self.name + '/' + key_)
  * 
  *         raise KeyError(key_)             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 1657, __pyx_L1_error) }
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1657, __pyx_L1_error)
+  if (unlikely(!__pyx_v_key_)) { __Pyx_RaiseUnboundLocalError("key_"); __PYX_ERR(0, 1849, __pyx_L1_error) }
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1849, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_key_);
   __Pyx_GIVEREF(__pyx_v_key_);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key_);
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1657, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1849, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_Raise(__pyx_t_9, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __PYX_ERR(0, 1657, __pyx_L1_error)
+  __PYX_ERR(0, 1849, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":1611
+  /* "adios_mpi.pyx":1803
  *                 self.attrs[name.replace('/' + self.name + '/', '', 1)] = self.file.attrs[name]
  * 
  *     def __getitem__(self, varname):             # <<<<<<<<<<<<<<
@@ -26281,7 +29366,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_2__getitem__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1659
+/* "adios_mpi.pyx":1851
  *         raise KeyError(key_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -26315,7 +29400,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mp
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1661
+  /* "adios_mpi.pyx":1853
  *     def __repr__(self):
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \             # <<<<<<<<<<<<<<
@@ -26324,14 +29409,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mp
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1662
+  /* "adios_mpi.pyx":1854
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  *                 (self.vars.keys(),             # <<<<<<<<<<<<<<
  *                  self.attrs.keys())
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1662, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1854, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26344,22 +29429,22 @@ static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mp
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1662, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1854, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1662, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1854, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1663
+  /* "adios_mpi.pyx":1855
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  *                 (self.vars.keys(),
  *                  self.attrs.keys())             # <<<<<<<<<<<<<<
  * 
  *     ## To support ipython tab completion
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1663, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1855, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -26372,22 +29457,22 @@ static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mp
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1663, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1855, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1663, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1855, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1662
+  /* "adios_mpi.pyx":1854
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \
  *                 (self.vars.keys(),             # <<<<<<<<<<<<<<
  *                  self.attrs.keys())
  * 
  */
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1662, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1854, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -26396,21 +29481,21 @@ static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mp
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1661
+  /* "adios_mpi.pyx":1853
  *     def __repr__(self):
  *         """ Return string representation. """
  *         return ("AdiosGroup (vars=%r, attrs=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.vars.keys(),
  *                  self.attrs.keys())
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosGroup_vars_r_attrs_r, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1661, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosGroup_vars_r_attrs_r, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1853, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1659
+  /* "adios_mpi.pyx":1851
  *         raise KeyError(key_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -26432,7 +29517,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_4__repr__(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1666
+/* "adios_mpi.pyx":1858
  * 
  *     ## To support ipython tab completion
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -26462,7 +29547,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "adios_mpi.pyx":1667
+  /* "adios_mpi.pyx":1859
  *     ## To support ipython tab completion
  *     def __getattr__(self, varname):
  *         return self.__getitem__(varname)             # <<<<<<<<<<<<<<
@@ -26470,7 +29555,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios
  *     def __dir__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1667, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1859, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26483,16 +29568,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1667, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_varname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1859, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1667, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1859, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1667, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1859, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -26501,7 +29586,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1666
+  /* "adios_mpi.pyx":1858
  * 
  *     ## To support ipython tab completion
  *     def __getattr__(self, varname):             # <<<<<<<<<<<<<<
@@ -26523,7 +29608,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_6__getattr__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1669
+/* "adios_mpi.pyx":1861
  *         return self.__getitem__(varname)
  * 
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -26558,28 +29643,28 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__dir__", 0);
 
-  /* "adios_mpi.pyx":1670
+  /* "adios_mpi.pyx":1862
  * 
  *     def __dir__(self):
  *         k0 = dir(type(self))             # <<<<<<<<<<<<<<
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())
  */
-  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Dir(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1862, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_k0 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1671
+  /* "adios_mpi.pyx":1863
  *     def __dir__(self):
  *         k0 = dir(type(self))
  *         k1 = normalize_key(self.vars.keys())             # <<<<<<<<<<<<<<
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1671, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1671, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1863, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -26592,10 +29677,10 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1671, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1863, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1671, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1863, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -26610,17 +29695,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1863, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1671, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1863, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1863, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -26628,16 +29713,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
   __pyx_v_k1 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1672
+  /* "adios_mpi.pyx":1864
  *         k0 = dir(type(self))
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())             # <<<<<<<<<<<<<<
  *         return k0 + k1 + k2
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1672, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1864, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -26650,10 +29735,10 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1864, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26668,17 +29753,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1864, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -26686,7 +29771,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
   __pyx_v_k2 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1673
+  /* "adios_mpi.pyx":1865
  *         k1 = normalize_key(self.vars.keys())
  *         k2 = normalize_key(self.attrs.keys())
  *         return k0 + k1 + k2             # <<<<<<<<<<<<<<
@@ -26694,16 +29779,16 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
  *     ## Require for dictionary key completion
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1673, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_v_k0, __pyx_v_k1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1673, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_k2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1669
+  /* "adios_mpi.pyx":1861
  *         return self.__getitem__(varname)
  * 
  *     def __dir__(self):             # <<<<<<<<<<<<<<
@@ -26729,7 +29814,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_8__dir__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1676
+/* "adios_mpi.pyx":1868
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -26760,7 +29845,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_g
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "adios_mpi.pyx":1677
+  /* "adios_mpi.pyx":1869
  *     ## Require for dictionary key completion
  *     def keys(self):
  *         return self.vars.keys() + self.attrs.keys()             # <<<<<<<<<<<<<<
@@ -26768,7 +29853,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_g
  *     def dirs(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1869, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26781,14 +29866,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_g
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1677, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1677, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1677, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1869, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -26801,14 +29886,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_g
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1869, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1869, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1677, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1869, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -26816,7 +29901,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_g
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1676
+  /* "adios_mpi.pyx":1868
  * 
  *     ## Require for dictionary key completion
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -26838,7 +29923,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_10keys(struct __pyx_obj_9adios_mpi_g
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1679
+/* "adios_mpi.pyx":1871
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -26876,26 +29961,26 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("dirs", 0);
 
-  /* "adios_mpi.pyx":1681
+  /* "adios_mpi.pyx":1873
  *     def dirs(self):
  *         """ Return child dir names """
  *         s = set()             # <<<<<<<<<<<<<<
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1681, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1873, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_s = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1682
+  /* "adios_mpi.pyx":1874
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1682, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->vars), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1874, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26908,10 +29993,10 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1874, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1874, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -26919,9 +30004,9 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1682, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1874, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1682, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1874, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -26929,17 +30014,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1682, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1874, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1874, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1682, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1874, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1874, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -26949,7 +30034,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1682, __pyx_L1_error)
+          else __PYX_ERR(0, 1874, __pyx_L1_error)
         }
         break;
       }
@@ -26958,40 +30043,40 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1683
+    /* "adios_mpi.pyx":1875
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1875, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1875, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1683, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1875, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__48, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1683, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__49, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1875, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios_mpi.pyx":1684
+    /* "adios_mpi.pyx":1876
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dirname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_7 = NULL;
@@ -27005,33 +30090,33 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
       }
     }
     if (!__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1684, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1876, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_1); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1876, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1682
+    /* "adios_mpi.pyx":1874
  *         """ Return child dir names """
  *         s = set()
  *         for k in self.vars.keys():             # <<<<<<<<<<<<<<
@@ -27041,14 +30126,14 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1685
+  /* "adios_mpi.pyx":1877
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->attrs), __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -27061,10 +30146,10 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1877, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -27072,9 +30157,9 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1877, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1685, __pyx_L1_error)
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1877, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -27082,17 +30167,17 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1685, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1877, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1685, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1877, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1685, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1877, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1685, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1877, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -27102,7 +30187,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1685, __pyx_L1_error)
+          else __PYX_ERR(0, 1877, __pyx_L1_error)
         }
         break;
       }
@@ -27111,40 +30196,40 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1686
+    /* "adios_mpi.pyx":1878
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1878, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1878, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1686, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1878, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__51, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1686, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_k, 1, 0, NULL, NULL, &__pyx_slice__52, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1878, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
     }
 
-    /* "adios_mpi.pyx":1687
+    /* "adios_mpi.pyx":1879
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_8 = NULL;
@@ -27158,33 +30243,33 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
       }
     }
     if (!__pyx_t_8) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1687, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_k); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1687, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
       __Pyx_INCREF(__pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_k);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1687, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1879, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1687, __pyx_L1_error)
+    __pyx_t_9 = PySet_Add(__pyx_v_s, __pyx_t_2); if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1879, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1685
+    /* "adios_mpi.pyx":1877
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():             # <<<<<<<<<<<<<<
@@ -27194,7 +30279,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1688
+  /* "adios_mpi.pyx":1880
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))             # <<<<<<<<<<<<<<
@@ -27202,20 +30287,20 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
  * ## Helper dict
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1880, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 1688, __pyx_L1_error)
-  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  if (PySet_Add(__pyx_t_1, __pyx_kp_s__10) < 0) __PYX_ERR(0, 1880, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Subtract(__pyx_v_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1880, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1880, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1679
+  /* "adios_mpi.pyx":1871
  *         return self.vars.keys() + self.attrs.keys()
  * 
  *     def dirs(self):             # <<<<<<<<<<<<<<
@@ -27240,7 +30325,7 @@ static PyObject *__pyx_pf_9adios_mpi_5group_12dirs(struct __pyx_obj_9adios_mpi_g
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1590
+/* "adios_mpi.pyx":1782
  * 
  *     ## Public Memeber
  *     cpdef public softdict vars             # <<<<<<<<<<<<<<
@@ -27295,7 +30380,7 @@ static int __pyx_pf_9adios_mpi_5group_4vars_2__set__(struct __pyx_obj_9adios_mpi
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 1590, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 1782, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -27345,7 +30430,7 @@ static int __pyx_pf_9adios_mpi_5group_4vars_4__del__(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1591
+/* "adios_mpi.pyx":1783
  *     ## Public Memeber
  *     cpdef public softdict vars
  *     cpdef public softdict attrs             # <<<<<<<<<<<<<<
@@ -27400,7 +30485,7 @@ static int __pyx_pf_9adios_mpi_5group_5attrs_2__set__(struct __pyx_obj_9adios_mp
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
-  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 1591, __pyx_L1_error)
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_9adios_mpi_softdict))))) __PYX_ERR(0, 1783, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_value;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -27450,7 +30535,7 @@ static int __pyx_pf_9adios_mpi_5group_5attrs_4__del__(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1693
+/* "adios_mpi.pyx":1885
  * cdef class smartdict(dict):
  *     cdef factory
  *     def __init__(self, factory):             # <<<<<<<<<<<<<<
@@ -27483,7 +30568,7 @@ static int __pyx_pw_9adios_mpi_9smartdict_1__init__(PyObject *__pyx_v_self, PyOb
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1693, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1885, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -27494,7 +30579,7 @@ static int __pyx_pw_9adios_mpi_9smartdict_1__init__(PyObject *__pyx_v_self, PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1693, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1885, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.smartdict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -27516,14 +30601,14 @@ static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_s
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1694
+  /* "adios_mpi.pyx":1886
  *     cdef factory
  *     def __init__(self, factory):
  *         dict.__init__(self)             # <<<<<<<<<<<<<<
  *         self.factory = factory
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1886, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -27536,23 +30621,23 @@ static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_s
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1694, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1886, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1694, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, ((PyObject *)__pyx_v_self));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1694, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1886, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1695
+  /* "adios_mpi.pyx":1887
  *     def __init__(self, factory):
  *         dict.__init__(self)
  *         self.factory = factory             # <<<<<<<<<<<<<<
@@ -27565,7 +30650,7 @@ static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_s
   __Pyx_DECREF(__pyx_v_self->factory);
   __pyx_v_self->factory = __pyx_v_factory;
 
-  /* "adios_mpi.pyx":1693
+  /* "adios_mpi.pyx":1885
  * cdef class smartdict(dict):
  *     cdef factory
  *     def __init__(self, factory):             # <<<<<<<<<<<<<<
@@ -27588,7 +30673,7 @@ static int __pyx_pf_9adios_mpi_9smartdict___init__(struct __pyx_obj_9adios_mpi_s
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1697
+/* "adios_mpi.pyx":1889
  *         self.factory = factory
  * 
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -27621,7 +30706,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "adios_mpi.pyx":1698
+  /* "adios_mpi.pyx":1890
  * 
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -27630,23 +30715,23 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
  */
   if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
     PyErr_Format(PyExc_TypeError, "descriptor '%s' requires a '%s' object but received a 'NoneType'", "keys", "dict");
-    __PYX_ERR(0, 1698, __pyx_L1_error)
+    __PYX_ERR(0, 1890, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_Keys(((PyObject*)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1890, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1698, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1890, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":1699
+    /* "adios_mpi.pyx":1891
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):
  *             dict.__setitem__(self, key, value)             # <<<<<<<<<<<<<<
  *         else:
  *             self.factory(key, value)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_setitem); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1699, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)(&PyDict_Type)), __pyx_n_s_setitem); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1891, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -27660,7 +30745,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1699, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1891, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -27674,13 +30759,13 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
     __Pyx_INCREF(__pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1891, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":1698
+    /* "adios_mpi.pyx":1890
  * 
  *     def __setitem__(self, key, value):
  *         if key in dict.keys(self):             # <<<<<<<<<<<<<<
@@ -27690,7 +30775,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":1701
+  /* "adios_mpi.pyx":1893
  *             dict.__setitem__(self, key, value)
  *         else:
  *             self.factory(key, value)             # <<<<<<<<<<<<<<
@@ -27711,7 +30796,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1701, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_7) {
       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
@@ -27722,7 +30807,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
     __Pyx_INCREF(__pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1701, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1893, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -27730,7 +30815,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":1697
+  /* "adios_mpi.pyx":1889
  *         self.factory = factory
  * 
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -27753,7 +30838,7 @@ static int __pyx_pf_9adios_mpi_9smartdict_2__setitem__(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1733
+/* "adios_mpi.pyx":1927
  *     property fname:
  *         """ The filename to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27779,7 +30864,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9ad
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1734
+  /* "adios_mpi.pyx":1928
  *         """ The filename to write. """
  *         def __get__(self):
  *             return self.fname             # <<<<<<<<<<<<<<
@@ -27791,7 +30876,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9ad
   __pyx_r = __pyx_v_self->fname;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1733
+  /* "adios_mpi.pyx":1927
  *     property fname:
  *         """ The filename to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27806,7 +30891,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5fname___get__(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1738
+/* "adios_mpi.pyx":1932
  *     property gname:
  *         """ The groupname associated with the file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27832,7 +30917,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9ad
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1739
+  /* "adios_mpi.pyx":1933
  *         """ The groupname associated with the file. """
  *         def __get__(self):
  *             return self.gname             # <<<<<<<<<<<<<<
@@ -27844,7 +30929,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9ad
   __pyx_r = __pyx_v_self->gname;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1738
+  /* "adios_mpi.pyx":1932
  *     property gname:
  *         """ The groupname associated with the file. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27859,7 +30944,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5gname___get__(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1743
+/* "adios_mpi.pyx":1937
  *     property is_noxml:
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27886,7 +30971,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1744
+  /* "adios_mpi.pyx":1938
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):
  *             return self.is_noxml             # <<<<<<<<<<<<<<
@@ -27894,13 +30979,13 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_
  *     property mode:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1744, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_noxml); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1938, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1743
+  /* "adios_mpi.pyx":1937
  *     property is_noxml:
  *         """ Boolean to indicate using No-XML or not. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27919,7 +31004,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8is_noxml___get__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1748
+/* "adios_mpi.pyx":1942
  *     property mode:
  *         """ Writing mode: overwrite or append. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27945,7 +31030,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4mode___get__(struct __pyx_obj_9adi
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1749
+  /* "adios_mpi.pyx":1943
  *         """ Writing mode: overwrite or append. """
  *         def __get__(self):
  *             return self.mode             # <<<<<<<<<<<<<<
@@ -27957,7 +31042,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4mode___get__(struct __pyx_obj_9adi
   __pyx_r = __pyx_v_self->mode;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1748
+  /* "adios_mpi.pyx":1942
  *     property mode:
  *         """ Writing mode: overwrite or append. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27972,7 +31057,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4mode___get__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1753
+/* "adios_mpi.pyx":1947
  *     property vars:
  *         """ Dictionary of variables to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27998,7 +31083,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4vars___get__(struct __pyx_obj_9adi
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1754
+  /* "adios_mpi.pyx":1948
  *         """ Dictionary of variables to write. """
  *         def __get__(self):
  *             return self.vars             # <<<<<<<<<<<<<<
@@ -28010,7 +31095,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4vars___get__(struct __pyx_obj_9adi
   __pyx_r = __pyx_v_self->vars;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1753
+  /* "adios_mpi.pyx":1947
  *     property vars:
  *         """ Dictionary of variables to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -28025,7 +31110,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4vars___get__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1758
+/* "adios_mpi.pyx":1952
  *     property attrs:
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -28051,19 +31136,19 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5attrs___get__(struct __pyx_obj_9ad
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1759
+  /* "adios_mpi.pyx":1953
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):
  *             return self.attrs             # <<<<<<<<<<<<<<
  * 
- *     def __init__(self, str fname,
+ *     property timeaggregation_buffersize:
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->attrs);
   __pyx_r = __pyx_v_self->attrs;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1758
+  /* "adios_mpi.pyx":1952
  *     property attrs:
  *         """ Dictionary of attributes to write. """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -28078,8 +31163,68 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_5attrs___get__(struct __pyx_obj_9ad
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1761
- *             return self.attrs
+/* "adios_mpi.pyx":1957
+ *     property timeaggregation_buffersize:
+ *         """ Get time-aggregation buffersize. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.timeaggregation_buffersize
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_6writer_26timeaggregation_buffersize_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_6writer_26timeaggregation_buffersize_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_26timeaggregation_buffersize___get__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_6writer_26timeaggregation_buffersize___get__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":1958
+ *         """ Get time-aggregation buffersize. """
+ *         def __get__(self):
+ *             return self.timeaggregation_buffersize             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str fname,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_self->timeaggregation_buffersize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1958, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":1957
+ *     property timeaggregation_buffersize:
+ *         """ Get time-aggregation buffersize. """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.timeaggregation_buffersize
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.writer.timeaggregation_buffersize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":1960
+ *             return self.timeaggregation_buffersize
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
@@ -28100,7 +31245,7 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fname,&__pyx_n_s_is_noxml,&__pyx_n_s_mode,&__pyx_n_s_comm,0};
     PyObject* values[4] = {0,0,0,0};
     values[2] = ((PyObject*)__pyx_n_s_w);
-    values[3] = (PyObject *)__pyx_k__53;
+    values[3] = (PyObject *)__pyx_k__54;
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
@@ -28134,7 +31279,7 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1761, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1960, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -28148,10 +31293,10 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
     }
     __pyx_v_fname = ((PyObject*)values[0]);
     if (values[1]) {
-      __pyx_v_is_noxml = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_is_noxml == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1762, __pyx_L3_error)
+      __pyx_v_is_noxml = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_is_noxml == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1961, __pyx_L3_error)
     } else {
 
-      /* "adios_mpi.pyx":1762
+      /* "adios_mpi.pyx":1961
  * 
  *     def __init__(self, str fname,
  *                  bint is_noxml = True,             # <<<<<<<<<<<<<<
@@ -28165,19 +31310,19 @@ static int __pyx_pw_9adios_mpi_6writer_1__init__(PyObject *__pyx_v_self, PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1761, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1960, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.writer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 1761, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 1763, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 1764, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) __PYX_ERR(0, 1960, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mode), (&PyString_Type), 1, "mode", 1))) __PYX_ERR(0, 1962, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(0, 1963, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_6writer___init__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_fname, __pyx_v_is_noxml, __pyx_v_mode, __pyx_v_comm);
 
-  /* "adios_mpi.pyx":1761
- *             return self.attrs
+  /* "adios_mpi.pyx":1960
+ *             return self.timeaggregation_buffersize
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
@@ -28200,9 +31345,18 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   struct __pyx_opt_args_9adios_mpi_init_noxml __pyx_t_2;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1765
+  /* "adios_mpi.pyx":1964
  *                  str mode = "w",
  *                  MPI.Comm comm = MPI.COMM_WORLD):
+ *         self.gid = 0             # <<<<<<<<<<<<<<
+ *         self.fname = fname
+ *         self.method = ""
+ */
+  __pyx_v_self->gid = 0;
+
+  /* "adios_mpi.pyx":1965
+ *                  MPI.Comm comm = MPI.COMM_WORLD):
+ *         self.gid = 0
  *         self.fname = fname             # <<<<<<<<<<<<<<
  *         self.method = ""
  *         self.method_params = ""
@@ -28213,8 +31367,8 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __Pyx_DECREF(__pyx_v_self->fname);
   __pyx_v_self->fname = __pyx_v_fname;
 
-  /* "adios_mpi.pyx":1766
- *                  MPI.Comm comm = MPI.COMM_WORLD):
+  /* "adios_mpi.pyx":1966
+ *         self.gid = 0
  *         self.fname = fname
  *         self.method = ""             # <<<<<<<<<<<<<<
  *         self.method_params = ""
@@ -28226,7 +31380,7 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __Pyx_DECREF(__pyx_v_self->method);
   __pyx_v_self->method = __pyx_kp_s__10;
 
-  /* "adios_mpi.pyx":1767
+  /* "adios_mpi.pyx":1967
  *         self.fname = fname
  *         self.method = ""
  *         self.method_params = ""             # <<<<<<<<<<<<<<
@@ -28239,7 +31393,7 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __Pyx_DECREF(__pyx_v_self->method_params);
   __pyx_v_self->method_params = __pyx_kp_s__10;
 
-  /* "adios_mpi.pyx":1768
+  /* "adios_mpi.pyx":1968
  *         self.method = ""
  *         self.method_params = ""
  *         self.is_noxml = is_noxml             # <<<<<<<<<<<<<<
@@ -28248,7 +31402,7 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
  */
   __pyx_v_self->is_noxml = __pyx_v_is_noxml;
 
-  /* "adios_mpi.pyx":1769
+  /* "adios_mpi.pyx":1969
  *         self.method_params = ""
  *         self.is_noxml = is_noxml
  *         self.mode = mode             # <<<<<<<<<<<<<<
@@ -28261,7 +31415,7 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __Pyx_DECREF(__pyx_v_self->mode);
   __pyx_v_self->mode = __pyx_v_mode;
 
-  /* "adios_mpi.pyx":1770
+  /* "adios_mpi.pyx":1970
  *         self.is_noxml = is_noxml
  *         self.mode = mode
  *         self.comm = comm             # <<<<<<<<<<<<<<
@@ -28274,14 +31428,14 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __Pyx_DECREF(((PyObject *)__pyx_v_self->comm));
   __pyx_v_self->comm = __pyx_v_comm;
 
-  /* "adios_mpi.pyx":1771
+  /* "adios_mpi.pyx":1971
  *         self.mode = mode
  *         self.comm = comm
  *         self.vars = dict()             # <<<<<<<<<<<<<<
  *         self.attrs = dict()
- * 
+ *         self.timeaggregation_buffersize = 0
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1771, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1971, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->vars);
@@ -28289,14 +31443,14 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __pyx_v_self->vars = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1772
+  /* "adios_mpi.pyx":1972
  *         self.comm = comm
  *         self.vars = dict()
  *         self.attrs = dict()             # <<<<<<<<<<<<<<
+ *         self.timeaggregation_buffersize = 0
  * 
- *         init_noxml(comm)
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1772, __pyx_L1_error)
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1972, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->attrs);
@@ -28304,8 +31458,17 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __pyx_v_self->attrs = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1774
+  /* "adios_mpi.pyx":1973
+ *         self.vars = dict()
  *         self.attrs = dict()
+ *         self.timeaggregation_buffersize = 0             # <<<<<<<<<<<<<<
+ * 
+ *         init_noxml(comm)
+ */
+  __pyx_v_self->timeaggregation_buffersize = 0;
+
+  /* "adios_mpi.pyx":1975
+ *         self.timeaggregation_buffersize = 0
  * 
  *         init_noxml(comm)             # <<<<<<<<<<<<<<
  *     ##def __var_factory__(self, name, value):
@@ -28315,8 +31478,8 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   __pyx_t_2.comm = __pyx_v_comm;
   __pyx_f_9adios_mpi_init_noxml(0, &__pyx_t_2); 
 
-  /* "adios_mpi.pyx":1761
- *             return self.attrs
+  /* "adios_mpi.pyx":1960
+ *             return self.timeaggregation_buffersize
  * 
  *     def __init__(self, str fname,             # <<<<<<<<<<<<<<
  *                  bint is_noxml = True,
@@ -28335,17 +31498,17 @@ static int __pyx_pf_9adios_mpi_6writer___init__(struct __pyx_obj_9adios_mpi_writ
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1781
+/* "adios_mpi.pyx":1982
  *     ##    print "attr_factory:", name, value
  * 
- *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *     def declare_group(self, str gname = None,             # <<<<<<<<<<<<<<
  *                       str method = "POSIX1",
  *                       str method_params = ""):
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_2declare_group[] = "writer.declare_group(self, str gname, str method='POSIX1', str method_params='')\n\n        Define a group associated with the file.\n\n        Args:\n            gname (str): group name.\n            method (str, optional): Adios write method (default: 'POSIX1')\n            method_params (str, optional): parameters for the write method (default: '')\n\n        Example:\n\n        >>>  fw.declare_group('group', method='MPI', m [...]
+static char __pyx_doc_9adios_mpi_6writer_2declare_group[] = "writer.declare_group(self, str gname=None, str method='POSIX1', str method_params='')\n\n        Define a group associated with the file.\n\n        Args:\n            gname (str): group name.\n            method (str, optional): Adios write method (default: 'POSIX1')\n            method_params (str, optional): parameters for the write method (default: '')\n\n        Example:\n\n        >>>  fw.declare_group('group', method='MP [...]
 static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_gname = 0;
   PyObject *__pyx_v_method = 0;
@@ -28356,6 +31519,7 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_se
   {
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_gname,&__pyx_n_s_method,&__pyx_n_s_method_params,0};
     PyObject* values[3] = {0,0,0};
+    values[0] = ((PyObject*)Py_None);
     values[1] = ((PyObject*)__pyx_n_s_POSIX1);
     values[2] = ((PyObject*)__pyx_kp_s__10);
     if (unlikely(__pyx_kwds)) {
@@ -28371,8 +31535,10 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_se
       kw_args = PyDict_Size(__pyx_kwds);
       switch (pos_args) {
         case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gname)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gname);
+          if (value) { values[0] = value; kw_args--; }
+        }
         case  1:
         if (kw_args > 0) {
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_method);
@@ -28385,14 +31551,14 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 1781, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "declare_group") < 0)) __PYX_ERR(0, 1982, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        break;
+        case  0: break;
         default: goto __pyx_L5_argtuple_error;
       }
     }
@@ -28402,15 +31568,15 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1781, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("declare_group", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1982, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.writer.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gname), (&PyString_Type), 1, "gname", 1))) __PYX_ERR(0, 1781, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 1782, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_params), (&PyString_Type), 1, "method_params", 1))) __PYX_ERR(0, 1783, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gname), (&PyString_Type), 1, "gname", 1))) __PYX_ERR(0, 1982, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(0, 1983, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method_params), (&PyString_Type), 1, "method_params", 1))) __PYX_ERR(0, 1984, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_6writer_2declare_group(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_gname, __pyx_v_method, __pyx_v_method_params);
 
   /* function exit code */
@@ -28425,42 +31591,101 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_3declare_group(PyObject *__pyx_v_se
 static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_gname, PyObject *__pyx_v_method, PyObject *__pyx_v_method_params) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
-  int64_t __pyx_t_1;
-  struct __pyx_opt_args_9adios_mpi_declare_group __pyx_t_2;
+  int __pyx_t_1;
+  int __pyx_t_2;
   PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  struct __pyx_opt_args_9adios_mpi_select_method __pyx_t_5;
+  int64_t __pyx_t_4;
+  struct __pyx_opt_args_9adios_mpi_declare_group __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  struct __pyx_opt_args_9adios_mpi_select_method __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("declare_group", 0);
 
-  /* "adios_mpi.pyx":1797
+  /* "adios_mpi.pyx":1998
  * 
  *         """
- *         self.gid = declare_group(gname, "", 1)             # <<<<<<<<<<<<<<
- *         self.gname = gname
- *         self.method = method
+ *         if gname is not None:             # <<<<<<<<<<<<<<
+ *             self.gname = gname
+ * 
  */
-  __pyx_t_2.__pyx_n = 2;
-  __pyx_t_2.time_index = __pyx_kp_s__10;
-  __pyx_t_2.stats = 1;
-  __pyx_t_1 = __pyx_f_9adios_mpi_declare_group(__pyx_v_gname, 0, &__pyx_t_2); 
-  __pyx_v_self->gid = __pyx_t_1;
+  __pyx_t_1 = (__pyx_v_gname != ((PyObject*)Py_None));
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
 
-  /* "adios_mpi.pyx":1798
+    /* "adios_mpi.pyx":1999
  *         """
- *         self.gid = declare_group(gname, "", 1)
- *         self.gname = gname             # <<<<<<<<<<<<<<
+ *         if gname is not None:
+ *             self.gname = gname             # <<<<<<<<<<<<<<
+ * 
+ *         if self.gname is None:
+ */
+    __Pyx_INCREF(__pyx_v_gname);
+    __Pyx_GIVEREF(__pyx_v_gname);
+    __Pyx_GOTREF(__pyx_v_self->gname);
+    __Pyx_DECREF(__pyx_v_self->gname);
+    __pyx_v_self->gname = __pyx_v_gname;
+
+    /* "adios_mpi.pyx":1998
+ * 
+ *         """
+ *         if gname is not None:             # <<<<<<<<<<<<<<
+ *             self.gname = gname
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":2001
+ *             self.gname = gname
+ * 
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.gname = "group"
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_self->gname == ((PyObject*)Py_None));
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":2002
+ * 
+ *         if self.gname is None:
+ *             self.gname = "group"             # <<<<<<<<<<<<<<
+ * 
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)
+ */
+    __Pyx_INCREF(__pyx_n_s_group);
+    __Pyx_GIVEREF(__pyx_n_s_group);
+    __Pyx_GOTREF(__pyx_v_self->gname);
+    __Pyx_DECREF(__pyx_v_self->gname);
+    __pyx_v_self->gname = __pyx_n_s_group;
+
+    /* "adios_mpi.pyx":2001
+ *             self.gname = gname
+ * 
+ *         if self.gname is None:             # <<<<<<<<<<<<<<
+ *             self.gname = "group"
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":2004
+ *             self.gname = "group"
+ * 
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)             # <<<<<<<<<<<<<<
  *         self.method = method
  *         self.method_params = method_params
  */
-  __Pyx_INCREF(__pyx_v_gname);
-  __Pyx_GIVEREF(__pyx_v_gname);
-  __Pyx_GOTREF(__pyx_v_self->gname);
-  __Pyx_DECREF(__pyx_v_self->gname);
-  __pyx_v_self->gname = __pyx_v_gname;
+  __pyx_t_3 = __pyx_v_self->gname;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_5.__pyx_n = 2;
+  __pyx_t_5.time_index = __pyx_kp_s__10;
+  __pyx_t_5.stats = adios_stat_default;
+  __pyx_t_4 = __pyx_f_9adios_mpi_declare_group(((PyObject*)__pyx_t_3), 0, &__pyx_t_5); 
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_self->gid = __pyx_t_4;
 
-  /* "adios_mpi.pyx":1799
- *         self.gid = declare_group(gname, "", 1)
- *         self.gname = gname
+  /* "adios_mpi.pyx":2005
+ * 
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)
  *         self.method = method             # <<<<<<<<<<<<<<
  *         self.method_params = method_params
  *         select_method(self.gid, self.method, self.method_params, "")
@@ -28471,12 +31696,12 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9ad
   __Pyx_DECREF(__pyx_v_self->method);
   __pyx_v_self->method = __pyx_v_method;
 
-  /* "adios_mpi.pyx":1800
- *         self.gname = gname
+  /* "adios_mpi.pyx":2006
+ *         self.gid = declare_group(self.gname, "", adios_stat_default)
  *         self.method = method
  *         self.method_params = method_params             # <<<<<<<<<<<<<<
  *         select_method(self.gid, self.method, self.method_params, "")
- * 
+ *         self.set_time_aggregation()
  */
   __Pyx_INCREF(__pyx_v_method_params);
   __Pyx_GIVEREF(__pyx_v_method_params);
@@ -28484,41 +31709,227 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9ad
   __Pyx_DECREF(__pyx_v_self->method_params);
   __pyx_v_self->method_params = __pyx_v_method_params;
 
-  /* "adios_mpi.pyx":1801
+  /* "adios_mpi.pyx":2007
  *         self.method = method
  *         self.method_params = method_params
  *         select_method(self.gid, self.method, self.method_params, "")             # <<<<<<<<<<<<<<
+ *         self.set_time_aggregation()
  * 
- *     def define_var(self, str varname,
  */
   __pyx_t_3 = __pyx_v_self->method;
   __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_4 = __pyx_v_self->method_params;
-  __Pyx_INCREF(__pyx_t_4);
-  __pyx_t_5.__pyx_n = 2;
-  __pyx_t_5.parameters = ((PyObject*)__pyx_t_4);
-  __pyx_t_5.base_path = __pyx_kp_s__10;
-  __pyx_f_9adios_mpi_select_method(__pyx_v_self->gid, ((PyObject*)__pyx_t_3), 0, &__pyx_t_5); 
+  __pyx_t_6 = __pyx_v_self->method_params;
+  __Pyx_INCREF(__pyx_t_6);
+  __pyx_t_7.__pyx_n = 2;
+  __pyx_t_7.parameters = ((PyObject*)__pyx_t_6);
+  __pyx_t_7.base_path = __pyx_kp_s__10;
+  __pyx_f_9adios_mpi_select_method(__pyx_v_self->gid, ((PyObject*)__pyx_t_3), 0, &__pyx_t_7); 
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "adios_mpi.pyx":1781
+  /* "adios_mpi.pyx":2008
+ *         self.method_params = method_params
+ *         select_method(self.gid, self.method, self.method_params, "")
+ *         self.set_time_aggregation()             # <<<<<<<<<<<<<<
+ * 
+ *     def set_time_aggregation(self, buffer_size = None):
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_time_aggregation); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2008, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_8 = NULL;
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_8)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_8);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+    }
+  }
+  if (__pyx_t_8) {
+    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  } else {
+    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error)
+  }
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "adios_mpi.pyx":1982
  *     ##    print "attr_factory:", name, value
  * 
- *     def declare_group(self, str gname,             # <<<<<<<<<<<<<<
+ *     def declare_group(self, str gname = None,             # <<<<<<<<<<<<<<
  *                       str method = "POSIX1",
  *                       str method_params = ""):
  */
 
   /* function exit code */
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("adios_mpi.writer.declare_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
   __Pyx_XGIVEREF(__pyx_r);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1803
- *         select_method(self.gid, self.method, self.method_params, "")
+/* "adios_mpi.pyx":2010
+ *         self.set_time_aggregation()
+ * 
+ *     def set_time_aggregation(self, buffer_size = None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Set time-aggregation buffersize.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_6writer_5set_time_aggregation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_4set_time_aggregation[] = "writer.set_time_aggregation(self, buffer_size=None)\n\n        Set time-aggregation buffersize.\n        ";
+static PyObject *__pyx_pw_9adios_mpi_6writer_5set_time_aggregation(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_buffer_size = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_time_aggregation (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buffer_size,0};
+    PyObject* values[1] = {0};
+    values[0] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_time_aggregation") < 0)) __PYX_ERR(0, 2010, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_buffer_size = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_time_aggregation", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2010, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("adios_mpi.writer.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_4set_time_aggregation(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_buffer_size);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_6writer_4set_time_aggregation(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_buffer_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  uint64_t __pyx_t_3;
+  __Pyx_RefNannySetupContext("set_time_aggregation", 0);
+
+  /* "adios_mpi.pyx":2014
+ *         Set time-aggregation buffersize.
+ *         """
+ *         if buffer_size is not None:             # <<<<<<<<<<<<<<
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:
+ */
+  __pyx_t_1 = (__pyx_v_buffer_size != Py_None);
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":2015
+ *         """
+ *         if buffer_size is not None:
+ *             self.timeaggregation_buffersize = buffer_size             # <<<<<<<<<<<<<<
+ *         if self.gid > 0:
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ */
+    __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_v_buffer_size); if (unlikely((__pyx_t_3 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2015, __pyx_L1_error)
+    __pyx_v_self->timeaggregation_buffersize = __pyx_t_3;
+
+    /* "adios_mpi.pyx":2014
+ *         Set time-aggregation buffersize.
+ *         """
+ *         if buffer_size is not None:             # <<<<<<<<<<<<<<
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:
+ */
+  }
+
+  /* "adios_mpi.pyx":2016
+ *         if buffer_size is not None:
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:             # <<<<<<<<<<<<<<
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ * 
+ */
+  __pyx_t_2 = ((__pyx_v_self->gid > 0) != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":2017
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);             # <<<<<<<<<<<<<<
+ * 
+ *     def define_var(self, str varname,
+ */
+    __pyx_f_9adios_mpi_set_time_aggregation(__pyx_v_self->gid, __pyx_v_self->timeaggregation_buffersize, 0, 0);
+
+    /* "adios_mpi.pyx":2016
+ *         if buffer_size is not None:
+ *             self.timeaggregation_buffersize = buffer_size
+ *         if self.gid > 0:             # <<<<<<<<<<<<<<
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":2010
+ *         self.set_time_aggregation()
+ * 
+ *     def set_time_aggregation(self, buffer_size = None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Set time-aggregation buffersize.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("adios_mpi.writer.set_time_aggregation", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":2019
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
  * 
  *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
  *                    ldim = tuple(),
@@ -28526,26 +31937,37 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_2declare_group(struct __pyx_obj_9ad
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_4define_var[] = "writer.define_var(self, str varname, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>)\n\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name.\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n\n        Examp [...]
-static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_7define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_6define_var[] = "writer.define_var(self, str varname, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>, transform=None)\n\n        Define a variable associated with the file.\n\n        Args:\n            varname (str): variable name\n            ldim (tuple, optional): local dimension (default: tuple())\n            gdim (tuple, optional): global dimension (default: tuple())\n            offset (tuple, optional): offset (default: tuple())\n [...]
+static PyObject *__pyx_pw_9adios_mpi_6writer_7define_var(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_ldim = 0;
   PyObject *__pyx_v_gdim = 0;
   PyObject *__pyx_v_offset = 0;
+  PyObject *__pyx_v_transform = 0;
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define_var (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varname,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,0};
-    PyObject* values[4] = {0,0,0,0};
-    values[1] = __pyx_k__54;
-    values[2] = __pyx_k__55;
-    values[3] = __pyx_k__56;
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_varname,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,&__pyx_n_s_transform,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    values[1] = __pyx_k__55;
+    values[2] = __pyx_k__56;
+    values[3] = __pyx_k__57;
+
+    /* "adios_mpi.pyx":2023
+ *                    gdim = tuple(),
+ *                    offset = tuple(),
+ *                    transform = None):             # <<<<<<<<<<<<<<
+ *         """
+ *         Define a variable associated with the file.
+ */
+    values[4] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
@@ -28573,12 +31995,18 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self,
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset);
           if (value) { values[3] = value; kw_args--; }
         }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform);
+          if (value) { values[4] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 1803, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_var") < 0)) __PYX_ERR(0, 2019, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
@@ -28591,17 +32019,26 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self,
     __pyx_v_ldim = values[1];
     __pyx_v_gdim = values[2];
     __pyx_v_offset = values[3];
+    __pyx_v_transform = values[4];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1803, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_var", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2019, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.writer.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 1803, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_4define_var(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_varname, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 2019, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_6define_var(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_varname, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset, __pyx_v_transform);
+
+  /* "adios_mpi.pyx":2019
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
+ * 
+ *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
+ *                    ldim = tuple(),
+ *                    gdim = tuple(),
+ */
 
   /* function exit code */
   goto __pyx_L0;
@@ -28612,21 +32049,22 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_5define_var(PyObject *__pyx_v_self,
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_6define_var(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_transform) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
   PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_var", 0);
 
-  /* "adios_mpi.pyx":1823
+  /* "adios_mpi.pyx":2041
  * 
  *         """
- *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)             # <<<<<<<<<<<<<<
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)             # <<<<<<<<<<<<<<
  * 
  *     def define_attr(self, str attrname):
  */
-  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2041, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_varname);
   __Pyx_GIVEREF(__pyx_v_varname);
@@ -28640,18 +32078,22 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios
   __Pyx_INCREF(__pyx_v_offset);
   __Pyx_GIVEREF(__pyx_v_offset);
   PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_offset);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_varinfo), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2041, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_transform, __pyx_v_transform) < 0) __PYX_ERR(0, 2041, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_varinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2041, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 1823, __pyx_L1_error)
+    __PYX_ERR(0, 2041, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_varname, __pyx_t_2) < 0)) __PYX_ERR(0, 1823, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_varname, __pyx_t_3) < 0)) __PYX_ERR(0, 2041, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1803
- *         select_method(self.gid, self.method, self.method_params, "")
+  /* "adios_mpi.pyx":2019
+ *             set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
  * 
  *     def define_var(self, str varname,             # <<<<<<<<<<<<<<
  *                    ldim = tuple(),
@@ -28664,6 +32106,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
   __Pyx_AddTraceback("adios_mpi.writer.define_var", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -28672,8 +32115,8 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1825
- *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+/* "adios_mpi.pyx":2043
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)
  * 
  *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
  *         """
@@ -28681,14 +32124,14 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_4define_var(struct __pyx_obj_9adios
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_7define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_6define_attr[] = "writer.define_attr(self, str attrname)\n\n        Define attribute in the file.\n\n        Args:\n            attrname (str): attribute name.\n        ";
-static PyObject *__pyx_pw_9adios_mpi_6writer_7define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_9define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_8define_attr[] = "writer.define_attr(self, str attrname)\n\n        Define attribute in the file.\n\n        Args:\n            attrname (str): attribute name.\n        ";
+static PyObject *__pyx_pw_9adios_mpi_6writer_9define_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_attrname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define_attr (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 1825, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_6define_attr(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((PyObject*)__pyx_v_attrname));
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 2043, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_8define_attr(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((PyObject*)__pyx_v_attrname));
 
   /* function exit code */
   goto __pyx_L0;
@@ -28699,7 +32142,7 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_7define_attr(PyObject *__pyx_v_self
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_6define_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_8define_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -28707,34 +32150,34 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_6define_attr(struct __pyx_obj_9adio
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_attr", 0);
 
-  /* "adios_mpi.pyx":1833
+  /* "adios_mpi.pyx":2051
  *         """
  * 
  *         self.attrs[attrname] = attrinfo(attrname, is_static=True)             # <<<<<<<<<<<<<<
  * 
  *     def define_dynamic_attr(self, str attrname,
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2051, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_attrname);
   __Pyx_GIVEREF(__pyx_v_attrname);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_attrname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1833, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2051, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_True) < 0) __PYX_ERR(0, 1833, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1833, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_True) < 0) __PYX_ERR(0, 2051, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 1833, __pyx_L1_error)
+    __PYX_ERR(0, 2051, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1833, __pyx_L1_error)
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 2051, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1825
- *         self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+  /* "adios_mpi.pyx":2043
+ *         self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)
  * 
  *     def define_attr(self, str attrname):             # <<<<<<<<<<<<<<
  *         """
@@ -28756,7 +32199,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_6define_attr(struct __pyx_obj_9adio
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1835
+/* "adios_mpi.pyx":2053
  *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
  * 
  *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
@@ -28765,9 +32208,9 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_6define_attr(struct __pyx_obj_9adio
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_8define_dynamic_attr[] = "writer.define_dynamic_attr(self, str attrname, str varname, dtype)";
-static PyObject *__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_11define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_10define_dynamic_attr[] = "writer.define_dynamic_attr(self, str attrname, str varname, dtype)";
+static PyObject *__pyx_pw_9adios_mpi_6writer_11define_dynamic_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_attrname = 0;
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_dtype = 0;
@@ -28795,16 +32238,16 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 1); __PYX_ERR(0, 1835, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 1); __PYX_ERR(0, 2053, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 2); __PYX_ERR(0, 1835, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, 2); __PYX_ERR(0, 2053, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_dynamic_attr") < 0)) __PYX_ERR(0, 1835, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "define_dynamic_attr") < 0)) __PYX_ERR(0, 2053, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -28819,15 +32262,15 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1835, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("define_dynamic_attr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2053, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.writer.define_dynamic_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 1835, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 1836, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_attrname, __pyx_v_varname, __pyx_v_dtype);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attrname), (&PyString_Type), 1, "attrname", 1))) __PYX_ERR(0, 2053, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_varname), (&PyString_Type), 1, "varname", 1))) __PYX_ERR(0, 2054, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_10define_dynamic_attr(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_attrname, __pyx_v_varname, __pyx_v_dtype);
 
   /* function exit code */
   goto __pyx_L0;
@@ -28838,7 +32281,7 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr(PyObject *__py
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_10define_dynamic_attr(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_attrname, PyObject *__pyx_v_varname, PyObject *__pyx_v_dtype) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -28846,14 +32289,14 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_o
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("define_dynamic_attr", 0);
 
-  /* "adios_mpi.pyx":1838
+  /* "adios_mpi.pyx":2056
  *                             str varname,
  *                             dtype):
  *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)             # <<<<<<<<<<<<<<
+ * 
  *     def __setitem__(self, name, val):
- *         if self.vars.has_key(name):
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1838, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2056, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_attrname);
   __Pyx_GIVEREF(__pyx_v_attrname);
@@ -28864,21 +32307,21 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_o
   __Pyx_INCREF(__pyx_v_dtype);
   __Pyx_GIVEREF(__pyx_v_dtype);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_dtype);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1838, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2056, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_False) < 0) __PYX_ERR(0, 1838, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1838, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_is_static, Py_False) < 0) __PYX_ERR(0, 2056, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2056, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 1838, __pyx_L1_error)
+    __PYX_ERR(0, 2056, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 1838, __pyx_L1_error)
+  if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_attrname, __pyx_t_3) < 0)) __PYX_ERR(0, 2056, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1835
+  /* "adios_mpi.pyx":2053
  *         self.attrs[attrname] = attrinfo(attrname, is_static=True)
  * 
  *     def define_dynamic_attr(self, str attrname,             # <<<<<<<<<<<<<<
@@ -28901,147 +32344,355 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_8define_dynamic_attr(struct __pyx_o
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1839
- *                             dtype):
+/* "adios_mpi.pyx":2058
  *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+ * 
  *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
- *             self.vars[name] = val
+ *             if not isinstance(val, varinfo):
  */
 
 /* Python wrapper */
-static int __pyx_pw_9adios_mpi_6writer_11__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /*proto*/
-static int __pyx_pw_9adios_mpi_6writer_11__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
+static int __pyx_pw_9adios_mpi_6writer_13__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val); /*proto*/
+static int __pyx_pw_9adios_mpi_6writer_13__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_10__setitem__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_val));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_12__setitem__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_val));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_6writer_10__setitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
+static int __pyx_pf_9adios_mpi_6writer_12__setitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_val) {
+  PyObject *__pyx_v_n = NULL;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
   int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "adios_mpi.pyx":1840
- *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+  /* "adios_mpi.pyx":2059
+ * 
  *     def __setitem__(self, name, val):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
- *             self.vars[name] = val
- *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, varinfo):
+ *                 self.vars[name].value = val
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1840, __pyx_L1_error)
+    __PYX_ERR(0, 2059, __pyx_L1_error)
   }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1840, __pyx_L1_error)
+  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 2059, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1841
+    /* "adios_mpi.pyx":2060
  *     def __setitem__(self, name, val):
  *         if self.vars.has_key(name):
- *             self.vars[name] = val             # <<<<<<<<<<<<<<
+ *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
+ *                 self.vars[name].value = val
+ *             else:
+ */
+    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_9adios_mpi_varinfo); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":2061
+ *         if self.vars.has_key(name):
+ *             if not isinstance(val, varinfo):
+ *                 self.vars[name].value = val             # <<<<<<<<<<<<<<
+ *             else:
+ *                 self.vars[name] = val
+ */
+      if (unlikely(__pyx_v_self->vars == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2061, __pyx_L1_error)
+      }
+      __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2061, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2061, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "adios_mpi.pyx":2060
+ *     def __setitem__(self, name, val):
+ *         if self.vars.has_key(name):
+ *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
+ *                 self.vars[name].value = val
+ *             else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "adios_mpi.pyx":2063
+ *                 self.vars[name].value = val
+ *             else:
+ *                 self.vars[name] = val             # <<<<<<<<<<<<<<
  *         elif self.attrs.has_key(name):
- *             self.attrs[name] = val
+ *             if not isinstance(val, attrinfo):
  */
-    if (unlikely(__pyx_v_self->vars == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1841, __pyx_L1_error)
+    /*else*/ {
+      if (unlikely(__pyx_v_self->vars == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2063, __pyx_L1_error)
+      }
+      if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 2063, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1841, __pyx_L1_error)
+    __pyx_L4:;
 
-    /* "adios_mpi.pyx":1840
- *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+    /* "adios_mpi.pyx":2059
+ * 
  *     def __setitem__(self, name, val):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
- *             self.vars[name] = val
- *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, varinfo):
+ *                 self.vars[name].value = val
  */
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":1842
- *         if self.vars.has_key(name):
- *             self.vars[name] = val
+  /* "adios_mpi.pyx":2064
+ *             else:
+ *                 self.vars[name] = val
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
- *             self.attrs[name] = val
- *         else:
+ *             if not isinstance(val, attrinfo):
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
  */
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1842, __pyx_L1_error)
+    __PYX_ERR(0, 2064, __pyx_L1_error)
   }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1842, __pyx_L1_error)
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
+  __pyx_t_1 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 2064, __pyx_L1_error)
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+
+    /* "adios_mpi.pyx":2065
+ *                 self.vars[name] = val
+ *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+ *             else:
+ */
+    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_9adios_mpi_attrinfo); 
+    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
+    if (__pyx_t_1) {
+
+      /* "adios_mpi.pyx":2066
+ *         elif self.attrs.has_key(name):
+ *             if not isinstance(val, attrinfo):
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 self.attrs[name].value = val
+ */
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2066, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2066, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = NULL;
+      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
+        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
+        if (likely(__pyx_t_4)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_4);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_5, function);
+        }
+      }
+      if (!__pyx_t_4) {
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2066, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+      } else {
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2066, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
+        __Pyx_INCREF(__pyx_v_val);
+        __Pyx_GIVEREF(__pyx_v_val);
+        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_val);
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2066, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2066, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2066, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_v_name);
+      __Pyx_GIVEREF(__pyx_v_name);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_val);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2066, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(__pyx_v_self->attrs == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2066, __pyx_L1_error)
+      }
+      if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_name, __pyx_t_5) < 0)) __PYX_ERR(0, 2066, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "adios_mpi.pyx":1843
- *             self.vars[name] = val
+      /* "adios_mpi.pyx":2065
+ *                 self.vars[name] = val
  *         elif self.attrs.has_key(name):
- *             self.attrs[name] = val             # <<<<<<<<<<<<<<
+ *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+ *             else:
+ */
+      goto __pyx_L5;
+    }
+
+    /* "adios_mpi.pyx":2068
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+ *             else:
+ *                 self.attrs[name].value = val             # <<<<<<<<<<<<<<
  *         else:
- *             self.vars[name] = val
+ *             n = np.array(val)
  */
-    if (unlikely(__pyx_v_self->attrs == Py_None)) {
-      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1843, __pyx_L1_error)
+    /*else*/ {
+      if (unlikely(__pyx_v_self->attrs == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+        __PYX_ERR(0, 2068, __pyx_L1_error)
+      }
+      __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2068, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2068, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->attrs, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1843, __pyx_L1_error)
+    __pyx_L5:;
 
-    /* "adios_mpi.pyx":1842
- *         if self.vars.has_key(name):
- *             self.vars[name] = val
+    /* "adios_mpi.pyx":2064
+ *             else:
+ *                 self.vars[name] = val
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
- *             self.attrs[name] = val
- *         else:
+ *             if not isinstance(val, attrinfo):
+ *                 self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
  */
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":1845
- *             self.attrs[name] = val
+  /* "adios_mpi.pyx":2070
+ *                 self.attrs[name].value = val
  *         else:
- *             self.vars[name] = val             # <<<<<<<<<<<<<<
+ *             n = np.array(val)             # <<<<<<<<<<<<<<
+ *             self.vars[name] = varinfo(name, n.shape)
+ *             self.vars[name].value = val
+ */
+  /*else*/ {
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2070, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2070, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_6, function);
+      }
+    }
+    if (!__pyx_t_3) {
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_val); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2070, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+    } else {
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2070, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
+      __Pyx_INCREF(__pyx_v_val);
+      __Pyx_GIVEREF(__pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_val);
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2070, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_v_n = __pyx_t_5;
+    __pyx_t_5 = 0;
+
+    /* "adios_mpi.pyx":2071
+ *         else:
+ *             n = np.array(val)
+ *             self.vars[name] = varinfo(name, n.shape)             # <<<<<<<<<<<<<<
+ *             self.vars[name].value = val
+ * 
+ */
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2071, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2071, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_INCREF(__pyx_v_name);
+    __Pyx_GIVEREF(__pyx_v_name);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_name);
+    __Pyx_GIVEREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_varinfo), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2071, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(__pyx_v_self->vars == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(0, 2071, __pyx_L1_error)
+    }
+    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_t_5) < 0)) __PYX_ERR(0, 2071, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "adios_mpi.pyx":2072
+ *             n = np.array(val)
+ *             self.vars[name] = varinfo(name, n.shape)
+ *             self.vars[name].value = val             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, name):
  */
-  /*else*/ {
     if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1845, __pyx_L1_error)
+      __PYX_ERR(0, 2072, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_name, __pyx_v_val) < 0)) __PYX_ERR(0, 1845, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2072, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":1839
- *                             dtype):
+  /* "adios_mpi.pyx":2058
  *         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+ * 
  *     def __setitem__(self, name, val):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
- *             self.vars[name] = val
+ *             if not isinstance(val, varinfo):
  */
 
   /* function exit code */
   __pyx_r = 0;
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
   __Pyx_AddTraceback("adios_mpi.writer.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_n);
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1847
- *             self.vars[name] = val
+/* "adios_mpi.pyx":2074
+ *             self.vars[name].value = val
  * 
  *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
@@ -29049,19 +32700,19 @@ static int __pyx_pf_9adios_mpi_6writer_10__setitem__(struct __pyx_obj_9adios_mpi
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_13__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_6writer_13__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_6writer_15__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_12__getitem__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_14__getitem__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), ((PyObject *)__pyx_v_name));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_14__getitem__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -29070,7 +32721,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "adios_mpi.pyx":1848
+  /* "adios_mpi.pyx":2075
  * 
  *     def __getitem__(self, name):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
@@ -29079,13 +32730,13 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1848, __pyx_L1_error)
+    __PYX_ERR(0, 2075, __pyx_L1_error)
   }
-  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 1848, __pyx_L1_error)
+  __pyx_t_1 = PyDict_Contains(__pyx_v_self->vars, __pyx_v_name); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 2075, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1849
+    /* "adios_mpi.pyx":2076
  *     def __getitem__(self, name):
  *         if self.vars.has_key(name):
  *             return self.vars[name]             # <<<<<<<<<<<<<<
@@ -29095,15 +32746,15 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1849, __pyx_L1_error)
+      __PYX_ERR(0, 2076, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1849, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->vars, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2076, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1848
+    /* "adios_mpi.pyx":2075
  * 
  *     def __getitem__(self, name):
  *         if self.vars.has_key(name):             # <<<<<<<<<<<<<<
@@ -29112,7 +32763,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
  */
   }
 
-  /* "adios_mpi.pyx":1850
+  /* "adios_mpi.pyx":2077
  *         if self.vars.has_key(name):
  *             return self.vars[name]
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
@@ -29121,13 +32772,13 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
  */
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "has_key");
-    __PYX_ERR(0, 1850, __pyx_L1_error)
+    __PYX_ERR(0, 2077, __pyx_L1_error)
   }
-  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 1850, __pyx_L1_error)
+  __pyx_t_2 = PyDict_Contains(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 2077, __pyx_L1_error)
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":1851
+    /* "adios_mpi.pyx":2078
  *             return self.vars[name]
  *         elif self.attrs.has_key(name):
  *             return self.attrs[name]             # <<<<<<<<<<<<<<
@@ -29137,15 +32788,15 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_self->attrs == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1851, __pyx_L1_error)
+      __PYX_ERR(0, 2078, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1851, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->attrs, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2078, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "adios_mpi.pyx":1850
+    /* "adios_mpi.pyx":2077
  *         if self.vars.has_key(name):
  *             return self.vars[name]
  *         elif self.attrs.has_key(name):             # <<<<<<<<<<<<<<
@@ -29154,7 +32805,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
  */
   }
 
-  /* "adios_mpi.pyx":1853
+  /* "adios_mpi.pyx":2080
  *             return self.attrs[name]
  *         else:
  *             raise KeyError(name)             # <<<<<<<<<<<<<<
@@ -29162,21 +32813,21 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
  *     def close(self):
  */
   /*else*/ {
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1853, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2080, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1853, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2080, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(0, 1853, __pyx_L1_error)
+    __PYX_ERR(0, 2080, __pyx_L1_error)
   }
 
-  /* "adios_mpi.pyx":1847
- *             self.vars[name] = val
+  /* "adios_mpi.pyx":2074
+ *             self.vars[name].value = val
  * 
  *     def __getitem__(self, name):             # <<<<<<<<<<<<<<
  *         if self.vars.has_key(name):
@@ -29195,7 +32846,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1855
+/* "adios_mpi.pyx":2082
  *             raise KeyError(name)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -29204,20 +32855,20 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_12__getitem__(struct __pyx_obj_9adi
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_15close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_14close[] = "writer.close(self)\n\n        Write variables and attributes to a file and close the writer.\n        ";
-static PyObject *__pyx_pw_9adios_mpi_6writer_15close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_17close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_16close[] = "writer.close(self)\n\n        Write variables and attributes to a file and close the writer.\n        ";
+static PyObject *__pyx_pw_9adios_mpi_6writer_17close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("close (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_14close(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_16close(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_16close(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
   int64_t __pyx_v_fd;
   PyObject *__pyx_v_extra_vars = NULL;
   PyObject *__pyx_v_extra_attrs = NULL;
@@ -29228,12 +32879,12 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
-  int __pyx_t_2;
+  PyObject *__pyx_t_2 = NULL;
   PyObject *__pyx_t_3 = NULL;
   PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
+  Py_ssize_t __pyx_t_5;
   Py_ssize_t __pyx_t_6;
-  Py_ssize_t __pyx_t_7;
+  int __pyx_t_7;
   int __pyx_t_8;
   int __pyx_t_9;
   PyObject *__pyx_t_10 = NULL;
@@ -29242,131 +32893,145 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
   PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "adios_mpi.pyx":1859
+  /* "adios_mpi.pyx":2086
  *         Write variables and attributes to a file and close the writer.
  *         """
- *         if self.gname is None:             # <<<<<<<<<<<<<<
- *             self.declare_group("group")
+ *         if self.gid == 0:             # <<<<<<<<<<<<<<
+ *             self.declare_group()
  * 
  */
-  __pyx_t_1 = (__pyx_v_self->gname == ((PyObject*)Py_None));
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
+  __pyx_t_1 = ((__pyx_v_self->gid == 0) != 0);
+  if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":1860
+    /* "adios_mpi.pyx":2087
  *         """
- *         if self.gname is None:
- *             self.declare_group("group")             # <<<<<<<<<<<<<<
+ *         if self.gid == 0:
+ *             self.declare_group()             # <<<<<<<<<<<<<<
  * 
  *         fd = open(self.gname, self.fname, self.mode)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_declare_group); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1860, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_declare_group); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2087, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1860, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_4 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    if (__pyx_t_4) {
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2087, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    } else {
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2087, __pyx_L1_error)
+    }
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1859
+    /* "adios_mpi.pyx":2086
  *         Write variables and attributes to a file and close the writer.
  *         """
- *         if self.gname is None:             # <<<<<<<<<<<<<<
- *             self.declare_group("group")
+ *         if self.gid == 0:             # <<<<<<<<<<<<<<
+ *             self.declare_group()
  * 
  */
   }
 
-  /* "adios_mpi.pyx":1862
- *             self.declare_group("group")
+  /* "adios_mpi.pyx":2089
+ *             self.declare_group()
  * 
  *         fd = open(self.gname, self.fname, self.mode)             # <<<<<<<<<<<<<<
  * 
  *         extra_vars = dict()
  */
-  __pyx_t_4 = __pyx_v_self->gname;
-  __Pyx_INCREF(__pyx_t_4);
+  __pyx_t_2 = __pyx_v_self->gname;
+  __Pyx_INCREF(__pyx_t_2);
   __pyx_t_3 = __pyx_v_self->fname;
   __Pyx_INCREF(__pyx_t_3);
-  __pyx_t_5 = __pyx_v_self->mode;
-  __Pyx_INCREF(__pyx_t_5);
-  __pyx_v_fd = __pyx_f_9adios_mpi_open(((PyObject*)__pyx_t_4), ((PyObject*)__pyx_t_3), ((PyObject*)__pyx_t_5), 0, NULL);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __pyx_v_self->mode;
+  __Pyx_INCREF(__pyx_t_4);
+  __pyx_v_fd = __pyx_f_9adios_mpi_open(((PyObject*)__pyx_t_2), ((PyObject*)__pyx_t_3), ((PyObject*)__pyx_t_4), 0, NULL);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1864
+  /* "adios_mpi.pyx":2091
  *         fd = open(self.gname, self.fname, self.mode)
  * 
  *         extra_vars = dict()             # <<<<<<<<<<<<<<
  *         extra_attrs = dict()
  * 
  */
-  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1864, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_v_extra_vars = ((PyObject*)__pyx_t_5);
-  __pyx_t_5 = 0;
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2091, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_v_extra_vars = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1865
+  /* "adios_mpi.pyx":2092
  * 
  *         extra_vars = dict()
  *         extra_attrs = dict()             # <<<<<<<<<<<<<<
  * 
  *         for key, val in self.vars.iteritems():
  */
-  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1865, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_v_extra_attrs = ((PyObject*)__pyx_t_5);
-  __pyx_t_5 = 0;
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2092, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_v_extra_attrs = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1867
+  /* "adios_mpi.pyx":2094
  *         extra_attrs = dict()
  * 
  *         for key, val in self.vars.iteritems():             # <<<<<<<<<<<<<<
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)
  */
-  __pyx_t_6 = 0;
+  __pyx_t_5 = 0;
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    __PYX_ERR(0, 1867, __pyx_L1_error)
+    __PYX_ERR(0, 2094, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_self->vars, 1, __pyx_n_s_iteritems, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1867, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_self->vars, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2094, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_3;
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_3;
   __pyx_t_3 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_3, &__pyx_t_4, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1867, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, &__pyx_t_2, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2094, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
     __pyx_t_3 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1868
+    /* "adios_mpi.pyx":2095
  * 
  *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
  *                 n = np.array(val)
  *                 extra_vars[key] = varinfo(key, n.shape)
  */
-    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_9adios_mpi_varinfo); 
-    __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
-    if (__pyx_t_1) {
+    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_9adios_mpi_varinfo); 
+    __pyx_t_9 = ((!(__pyx_t_1 != 0)) != 0);
+    if (__pyx_t_9) {
 
-      /* "adios_mpi.pyx":1869
+      /* "adios_mpi.pyx":2096
  *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)             # <<<<<<<<<<<<<<
  *                 extra_vars[key] = varinfo(key, n.shape)
  *                 extra_vars[key].value = val
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1869, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2096, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1869, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2096, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -29380,59 +33045,59 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_val); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1869, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2096, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1869, __pyx_L1_error)
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2096, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
         __Pyx_INCREF(__pyx_v_val);
         __Pyx_GIVEREF(__pyx_v_val);
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_val);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1869, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2096, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_4);
-      __pyx_t_4 = 0;
+      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_2);
+      __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1870
+      /* "adios_mpi.pyx":2097
  *             if not isinstance(val, varinfo):
  *                 n = np.array(val)
  *                 extra_vars[key] = varinfo(key, n.shape)             # <<<<<<<<<<<<<<
  *                 extra_vars[key].value = val
  *             else:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1870, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1870, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_n, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2097, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2097, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_INCREF(__pyx_v_key);
       __Pyx_GIVEREF(__pyx_v_key);
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_key);
-      __Pyx_GIVEREF(__pyx_t_4);
-      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
-      __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_varinfo), __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1870, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GIVEREF(__pyx_t_2);
+      PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
+      __pyx_t_2 = 0;
+      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_varinfo), __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2097, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_vars, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 1870, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(PyDict_SetItem(__pyx_v_extra_vars, __pyx_v_key, __pyx_t_2) < 0)) __PYX_ERR(0, 2097, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1871
+      /* "adios_mpi.pyx":2098
  *                 n = np.array(val)
  *                 extra_vars[key] = varinfo(key, n.shape)
  *                 extra_vars[key].value = val             # <<<<<<<<<<<<<<
  *             else:
- *                 if self.is_noxml: val.define(self.gid)
+ *                 if self.is_noxml:
  */
-      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_extra_vars, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1871, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 1871, __pyx_L1_error)
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_extra_vars, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2098, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_value, __pyx_v_val) < 0) __PYX_ERR(0, 2098, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "adios_mpi.pyx":1868
+      /* "adios_mpi.pyx":2095
  * 
  *         for key, val in self.vars.iteritems():
  *             if not isinstance(val, varinfo):             # <<<<<<<<<<<<<<
@@ -29442,19 +33107,27 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
       goto __pyx_L6;
     }
 
-    /* "adios_mpi.pyx":1873
+    /* "adios_mpi.pyx":2100
  *                 extra_vars[key].value = val
  *             else:
- *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
+ *                 if self.is_noxml:             # <<<<<<<<<<<<<<
+ *                     val.define(self.gid)
  * 
- *         for key, val in extra_vars.iteritems():
  */
     /*else*/ {
-      __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_1) {
-        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1873, __pyx_L1_error)
+      __pyx_t_9 = (__pyx_v_self->is_noxml != 0);
+      if (__pyx_t_9) {
+
+        /* "adios_mpi.pyx":2101
+ *             else:
+ *                 if self.is_noxml:
+ *                     val.define(self.gid)             # <<<<<<<<<<<<<<
+ * 
+ *         for key, val in extra_vars.iteritems():
+ */
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2101, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1873, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2101, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __pyx_t_3 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -29467,95 +33140,103 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
           }
         }
         if (!__pyx_t_3) {
-          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2101, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_2);
         } else {
-          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1873, __pyx_L1_error)
+          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2101, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
           __Pyx_GIVEREF(__pyx_t_11);
           PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_11);
           __pyx_t_11 = 0;
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_4);
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2101, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+        /* "adios_mpi.pyx":2100
+ *                 extra_vars[key].value = val
+ *             else:
+ *                 if self.is_noxml:             # <<<<<<<<<<<<<<
+ *                     val.define(self.gid)
+ * 
+ */
       }
     }
     __pyx_L6:;
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1875
- *                 if self.is_noxml: val.define(self.gid)
+  /* "adios_mpi.pyx":2103
+ *                     val.define(self.gid)
  * 
  *         for key, val in extra_vars.iteritems():             # <<<<<<<<<<<<<<
  *             if self.is_noxml: val.define(self.gid)
  *             self.vars[key] = val
  */
-  __pyx_t_7 = 0;
-  __pyx_t_4 = __Pyx_dict_iterator(__pyx_v_extra_vars, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1875, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_4;
-  __pyx_t_4 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_extra_vars, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_2;
+  __pyx_t_2 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_4, &__pyx_t_10, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1875, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_5, &__pyx_t_6, &__pyx_t_2, &__pyx_t_10, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2103, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GOTREF(__pyx_t_10);
-    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2);
+    __pyx_t_2 = 0;
     __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_10);
     __pyx_t_10 = 0;
 
-    /* "adios_mpi.pyx":1876
+    /* "adios_mpi.pyx":2104
  * 
  *         for key, val in extra_vars.iteritems():
  *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
  *             self.vars[key] = val
  * 
  */
-    __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_1) {
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1876, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1876, __pyx_L1_error)
+    __pyx_t_9 = (__pyx_v_self->is_noxml != 0);
+    if (__pyx_t_9) {
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2104, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2104, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_11 = NULL;
-      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
-        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_4);
+      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
         if (likely(__pyx_t_11)) {
-          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
           __Pyx_INCREF(__pyx_t_11);
           __Pyx_INCREF(function);
-          __Pyx_DECREF_SET(__pyx_t_4, function);
+          __Pyx_DECREF_SET(__pyx_t_2, function);
         }
       }
       if (!__pyx_t_11) {
-        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1876, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2104, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_GOTREF(__pyx_t_10);
       } else {
-        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1876, __pyx_L1_error)
+        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2104, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __pyx_t_11 = NULL;
         __Pyx_GIVEREF(__pyx_t_12);
         PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_12);
         __pyx_t_12 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1876, __pyx_L1_error)
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2104, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
 
-    /* "adios_mpi.pyx":1877
+    /* "adios_mpi.pyx":2105
  *         for key, val in extra_vars.iteritems():
  *             if self.is_noxml: val.define(self.gid)
  *             self.vars[key] = val             # <<<<<<<<<<<<<<
@@ -29564,61 +33245,61 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
  */
     if (unlikely(__pyx_v_self->vars == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1877, __pyx_L1_error)
+      __PYX_ERR(0, 2105, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_key, __pyx_v_val) < 0)) __PYX_ERR(0, 1877, __pyx_L1_error)
+    if (unlikely(PyDict_SetItem(__pyx_v_self->vars, __pyx_v_key, __pyx_v_val) < 0)) __PYX_ERR(0, 2105, __pyx_L1_error)
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1879
+  /* "adios_mpi.pyx":2107
  *             self.vars[key] = val
  * 
  *         for key, val in self.attrs.iteritems():             # <<<<<<<<<<<<<<
  *             if not isinstance(val, attrinfo):
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  */
-  __pyx_t_6 = 0;
+  __pyx_t_5 = 0;
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
-    __PYX_ERR(0, 1879, __pyx_L1_error)
+    __PYX_ERR(0, 2107, __pyx_L1_error)
   }
-  __pyx_t_10 = __Pyx_dict_iterator(__pyx_v_self->attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1879, __pyx_L1_error)
+  __pyx_t_10 = __Pyx_dict_iterator(__pyx_v_self->attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2107, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_10;
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_10;
   __pyx_t_10 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_10, &__pyx_t_4, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1879, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_6, &__pyx_t_5, &__pyx_t_10, &__pyx_t_2, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2107, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_10);
     __pyx_t_10 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1880
+    /* "adios_mpi.pyx":2108
  * 
  *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  *             else:
  */
-    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_9adios_mpi_attrinfo); 
-    __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-    if (__pyx_t_2) {
+    __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_val, __pyx_ptype_9adios_mpi_attrinfo); 
+    __pyx_t_1 = ((!(__pyx_t_9 != 0)) != 0);
+    if (__pyx_t_1) {
 
-      /* "adios_mpi.pyx":1881
+      /* "adios_mpi.pyx":2109
  *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)             # <<<<<<<<<<<<<<
  *             else:
  *                 if self.is_noxml: val.define(self.gid)
  */
-      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1881, __pyx_L1_error)
+      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2109, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1881, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2109, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __pyx_t_10 = NULL;
@@ -29632,41 +33313,41 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_val); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1881, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2109, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1881, __pyx_L1_error)
+        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2109, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_val);
         __Pyx_GIVEREF(__pyx_v_val);
         PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_val);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1881, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2109, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1881, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2109, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1881, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2109, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_v_key);
       __Pyx_GIVEREF(__pyx_v_key);
-      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_key);
+      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
       __Pyx_INCREF(__pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
-      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_val);
+      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_val);
       __Pyx_GIVEREF(__pyx_t_3);
-      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1881, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_attrinfo), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2109, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (unlikely(PyDict_SetItem(__pyx_v_extra_attrs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 1881, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(PyDict_SetItem(__pyx_v_extra_attrs, __pyx_v_key, __pyx_t_3) < 0)) __PYX_ERR(0, 2109, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "adios_mpi.pyx":1880
+      /* "adios_mpi.pyx":2108
  * 
  *         for key, val in self.attrs.iteritems():
  *             if not isinstance(val, attrinfo):             # <<<<<<<<<<<<<<
@@ -29676,7 +33357,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
       goto __pyx_L13;
     }
 
-    /* "adios_mpi.pyx":1883
+    /* "adios_mpi.pyx":2111
  *                 extra_attrs[key] = attrinfo(key, val, np.array(val).dtype)
  *             else:
  *                 if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
@@ -29684,81 +33365,81 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
  *         for key, val in extra_attrs.iteritems():
  */
     /*else*/ {
-      __pyx_t_2 = (__pyx_v_self->is_noxml != 0);
-      if (__pyx_t_2) {
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1883, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1883, __pyx_L1_error)
+      __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
+      if (__pyx_t_1) {
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2111, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_12 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2111, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_12);
         __pyx_t_10 = NULL;
-        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
+        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
+          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
           if (likely(__pyx_t_10)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
             __Pyx_INCREF(__pyx_t_10);
             __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __Pyx_DECREF_SET(__pyx_t_2, function);
           }
         }
         if (!__pyx_t_10) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1883, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2111, __pyx_L1_error)
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else {
-          __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1883, __pyx_L1_error)
+          __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2111, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
           __Pyx_GIVEREF(__pyx_t_12);
           PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_12);
           __pyx_t_12 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1883, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2111, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
     }
     __pyx_L13:;
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1885
+  /* "adios_mpi.pyx":2113
  *                 if self.is_noxml: val.define(self.gid)
  * 
  *         for key, val in extra_attrs.iteritems():             # <<<<<<<<<<<<<<
  *             if self.is_noxml: val.define(self.gid)
  * 
  */
-  __pyx_t_7 = 0;
-  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_extra_attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_6), (&__pyx_t_8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1885, __pyx_L1_error)
+  __pyx_t_6 = 0;
+  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_extra_attrs, 1, __pyx_n_s_iteritems, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2113, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_5);
-  __pyx_t_5 = __pyx_t_3;
+  __Pyx_XDECREF(__pyx_t_4);
+  __pyx_t_4 = __pyx_t_3;
   __pyx_t_3 = 0;
   while (1) {
-    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_6, &__pyx_t_7, &__pyx_t_3, &__pyx_t_4, NULL, __pyx_t_8);
-    if (unlikely(__pyx_t_9 == 0)) break;
-    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 1885, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_5, &__pyx_t_6, &__pyx_t_3, &__pyx_t_2, NULL, __pyx_t_7);
+    if (unlikely(__pyx_t_8 == 0)) break;
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_t_2);
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
     __pyx_t_3 = 0;
-    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_4);
-    __pyx_t_4 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_2);
+    __pyx_t_2 = 0;
 
-    /* "adios_mpi.pyx":1886
+    /* "adios_mpi.pyx":2114
  * 
  *         for key, val in extra_attrs.iteritems():
  *             if self.is_noxml: val.define(self.gid)             # <<<<<<<<<<<<<<
  * 
  *         """
  */
-    __pyx_t_2 = (__pyx_v_self->is_noxml != 0);
-    if (__pyx_t_2) {
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1886, __pyx_L1_error)
+    __pyx_t_1 = (__pyx_v_self->is_noxml != 0);
+    if (__pyx_t_1) {
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val, __pyx_n_s_define); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2114, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1886, __pyx_L1_error)
+      __pyx_t_11 = __Pyx_PyInt_From_int64_t(__pyx_v_self->gid); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2114, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_t_12 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -29771,27 +33452,27 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
         }
       }
       if (!__pyx_t_12) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2114, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1886, __pyx_L1_error)
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2114, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL;
         __Pyx_GIVEREF(__pyx_t_11);
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_11);
         __pyx_t_11 = 0;
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2114, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":1897
+  /* "adios_mpi.pyx":2125
  *         """
  * 
  *         for var in self.vars.values():             # <<<<<<<<<<<<<<
@@ -29800,63 +33481,63 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
-    __PYX_ERR(0, 1897, __pyx_L1_error)
+    __PYX_ERR(0, 2125, __pyx_L1_error)
   }
-  __pyx_t_5 = __Pyx_PyDict_Values(__pyx_v_self->vars); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1897, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
-    __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
+  __pyx_t_4 = __Pyx_PyDict_Values(__pyx_v_self->vars); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2125, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
+    __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
     __pyx_t_13 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1897, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1897, __pyx_L1_error)
+    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2125, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_13 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2125, __pyx_L1_error)
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
     if (likely(!__pyx_t_13)) {
-      if (likely(PyList_CheckExact(__pyx_t_4))) {
-        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
+      if (likely(PyList_CheckExact(__pyx_t_2))) {
+        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1897, __pyx_L1_error)
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2125, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1897, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2125, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
         #endif
       } else {
-        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
+        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1897, __pyx_L1_error)
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 2125, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1897, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2125, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
         #endif
       }
     } else {
-      __pyx_t_5 = __pyx_t_13(__pyx_t_4);
-      if (unlikely(!__pyx_t_5)) {
+      __pyx_t_4 = __pyx_t_13(__pyx_t_2);
+      if (unlikely(!__pyx_t_4)) {
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1897, __pyx_L1_error)
+          else __PYX_ERR(0, 2125, __pyx_L1_error)
         }
         break;
       }
-      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GOTREF(__pyx_t_4);
     }
-    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_5);
-    __pyx_t_5 = 0;
+    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_4);
+    __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":1898
+    /* "adios_mpi.pyx":2126
  * 
  *         for var in self.vars.values():
  *             var.write(fd)             # <<<<<<<<<<<<<<
  * 
  *         close(fd)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1898, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_10 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1898, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyInt_From_int64_t(__pyx_v_fd); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -29869,24 +33550,24 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
       }
     }
     if (!__pyx_t_11) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2126, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1898, __pyx_L1_error)
+      __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2126, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
       __Pyx_GIVEREF(__pyx_t_10);
       PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10);
       __pyx_t_10 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2126, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":1897
+    /* "adios_mpi.pyx":2125
  *         """
  * 
  *         for var in self.vars.values():             # <<<<<<<<<<<<<<
@@ -29894,9 +33575,9 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
  * 
  */
   }
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1900
+  /* "adios_mpi.pyx":2128
  *             var.write(fd)
  * 
  *         close(fd)             # <<<<<<<<<<<<<<
@@ -29905,7 +33586,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
  */
   __pyx_f_9adios_mpi_close(__pyx_v_fd, 0);
 
-  /* "adios_mpi.pyx":1855
+  /* "adios_mpi.pyx":2082
  *             raise KeyError(name)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
@@ -29917,9 +33598,9 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
   __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_10);
   __Pyx_XDECREF(__pyx_t_11);
   __Pyx_XDECREF(__pyx_t_12);
@@ -29937,7 +33618,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1902
+/* "adios_mpi.pyx":2130
  *         close(fd)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -29946,19 +33627,19 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_14close(struct __pyx_obj_9adios_mpi
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_17__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_9adios_mpi_6writer_17__repr__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_19__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_6writer_19__repr__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_16__repr__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_18__repr__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_18__repr__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -29966,7 +33647,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1903
+  /* "adios_mpi.pyx":2131
  * 
  *     def __repr__(self):
  *         return ("AdiosWriter (fname=%r, gname=%r, "             # <<<<<<<<<<<<<<
@@ -29975,7 +33656,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1909
+  /* "adios_mpi.pyx":2137
  *                  self.method,
  *                  self.method_params,
  *                  self.vars.keys(),             # <<<<<<<<<<<<<<
@@ -29984,12 +33665,12 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
  */
   if (unlikely(__pyx_v_self->vars == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    __PYX_ERR(0, 1909, __pyx_L1_error)
+    __PYX_ERR(0, 2137, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1909, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2137, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":1910
+  /* "adios_mpi.pyx":2138
  *                  self.method_params,
  *                  self.vars.keys(),
  *                  self.attrs.keys(),             # <<<<<<<<<<<<<<
@@ -29998,19 +33679,19 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
  */
   if (unlikely(__pyx_v_self->attrs == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "keys");
-    __PYX_ERR(0, 1910, __pyx_L1_error)
+    __PYX_ERR(0, 2138, __pyx_L1_error)
   }
-  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1910, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_self->attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2138, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios_mpi.pyx":1905
+  /* "adios_mpi.pyx":2133
  *         return ("AdiosWriter (fname=%r, gname=%r, "
  *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \
  *                 (self.fname,             # <<<<<<<<<<<<<<
  *                  self.gname,
  *                  self.method,
  */
-  __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1905, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2133, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_self->fname);
   __Pyx_GIVEREF(__pyx_v_self->fname);
@@ -30034,21 +33715,21 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":1904
+  /* "adios_mpi.pyx":2132
  *     def __repr__(self):
  *         return ("AdiosWriter (fname=%r, gname=%r, "
  *                 "method=%r, method_params=%r, vars=%r, attrs=%r, mode=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.fname,
  *                  self.gname,
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1904, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosWriter_fname_r_gname_r_meth, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2132, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1902
+  /* "adios_mpi.pyx":2130
  *         close(fd)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -30069,36 +33750,36 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_16__repr__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1913
+/* "adios_mpi.pyx":2141
  *                  self.mode)
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_19__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_18__enter__[] = "writer.__enter__(self)\n Enter for with statemetn ";
-static PyObject *__pyx_pw_9adios_mpi_6writer_19__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_20__enter__[] = "writer.__enter__(self)\n Enter for with statement ";
+static PyObject *__pyx_pw_9adios_mpi_6writer_21__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_18__enter__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_20__enter__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_18__enter__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_20__enter__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "adios_mpi.pyx":1915
+  /* "adios_mpi.pyx":2143
  *     def __enter__(self):
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self             # <<<<<<<<<<<<<<
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):
@@ -30108,11 +33789,11 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_18__enter__(struct __pyx_obj_9adios
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1913
+  /* "adios_mpi.pyx":2141
  *                  self.mode)
  * 
  *     def __enter__(self):             # <<<<<<<<<<<<<<
- *         """ Enter for with statemetn """
+ *         """ Enter for with statement """
  *         return self
  */
 
@@ -30123,7 +33804,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_18__enter__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1917
+/* "adios_mpi.pyx":2145
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -30132,9 +33813,9 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_18__enter__(struct __pyx_obj_9adios
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_6writer_21__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_6writer_20__exit__[] = "writer.__exit__(self, exception_type, exception_value, traceback)\n Close file on exit. ";
-static PyObject *__pyx_pw_9adios_mpi_6writer_21__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_6writer_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_6writer_22__exit__[] = "writer.__exit__(self, exception_type, exception_value, traceback)\n Close file on exit. ";
+static PyObject *__pyx_pw_9adios_mpi_6writer_23__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   CYTHON_UNUSED PyObject *__pyx_v_exception_type = 0;
   CYTHON_UNUSED PyObject *__pyx_v_exception_value = 0;
   CYTHON_UNUSED PyObject *__pyx_v_traceback = 0;
@@ -30162,16 +33843,16 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_21__exit__(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_exception_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 1917, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); __PYX_ERR(0, 2145, __pyx_L3_error)
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 1917, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); __PYX_ERR(0, 2145, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 1917, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) __PYX_ERR(0, 2145, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -30186,20 +33867,20 @@ static PyObject *__pyx_pw_9adios_mpi_6writer_21__exit__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1917, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2145, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.writer.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_6writer_20__exit__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback);
+  __pyx_r = __pyx_pf_9adios_mpi_6writer_22__exit__(((struct __pyx_obj_9adios_mpi_writer *)__pyx_v_self), __pyx_v_exception_type, __pyx_v_exception_value, __pyx_v_traceback);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_6writer_20__exit__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
+static PyObject *__pyx_pf_9adios_mpi_6writer_22__exit__(struct __pyx_obj_9adios_mpi_writer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exception_type, CYTHON_UNUSED PyObject *__pyx_v_exception_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
@@ -30207,14 +33888,14 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_20__exit__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "adios_mpi.pyx":1919
+  /* "adios_mpi.pyx":2147
  *     def __exit__(self, exception_type, exception_value, traceback):
  *         """ Close file on exit. """
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  * cdef class attrinfo(object):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1919, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2147, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -30227,16 +33908,16 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_20__exit__(struct __pyx_obj_9adios_
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1919, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2147, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1919, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2147, __pyx_L1_error)
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1917
+  /* "adios_mpi.pyx":2145
  *         return self
  * 
  *     def __exit__(self, exception_type, exception_value, traceback):             # <<<<<<<<<<<<<<
@@ -30259,7 +33940,7 @@ static PyObject *__pyx_pf_9adios_mpi_6writer_20__exit__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1928
+/* "adios_mpi.pyx":2156
  * 
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30285,7 +33966,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4name___get__(struct __pyx_obj_9a
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1929
+  /* "adios_mpi.pyx":2157
  *     property name:
  *         def __get__(self):
  *             return self.name             # <<<<<<<<<<<<<<
@@ -30297,7 +33978,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4name___get__(struct __pyx_obj_9a
   __pyx_r = __pyx_v_self->name;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1928
+  /* "adios_mpi.pyx":2156
  * 
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30312,7 +33993,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4name___get__(struct __pyx_obj_9a
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1932
+/* "adios_mpi.pyx":2160
  * 
  *     property is_static:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30339,7 +34020,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_9is_static___get__(struct __pyx_o
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1933
+  /* "adios_mpi.pyx":2161
  *     property is_static:
  *         def __get__(self):
  *             return self.is_static             # <<<<<<<<<<<<<<
@@ -30347,13 +34028,13 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_9is_static___get__(struct __pyx_o
  *     property dtype:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1933, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1932
+  /* "adios_mpi.pyx":2160
  * 
  *     property is_static:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30372,7 +34053,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_9is_static___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1936
+/* "adios_mpi.pyx":2164
  * 
  *     property dtype:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30398,7 +34079,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5dtype___get__(struct __pyx_obj_9
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1937
+  /* "adios_mpi.pyx":2165
  *     property dtype:
  *         def __get__(self):
  *             return self.dtype             # <<<<<<<<<<<<<<
@@ -30410,7 +34091,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5dtype___get__(struct __pyx_obj_9
   __pyx_r = __pyx_v_self->dtype;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1936
+  /* "adios_mpi.pyx":2164
  * 
  *     property dtype:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30425,7 +34106,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5dtype___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1940
+/* "adios_mpi.pyx":2168
  * 
  *     property value:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30451,7 +34132,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "adios_mpi.pyx":1941
+  /* "adios_mpi.pyx":2169
  *     property value:
  *         def __get__(self):
  *             return self.value             # <<<<<<<<<<<<<<
@@ -30463,7 +34144,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9
   __pyx_r = __pyx_v_self->value;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1940
+  /* "adios_mpi.pyx":2168
  * 
  *     property value:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -30478,7 +34159,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_5value___get__(struct __pyx_obj_9
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1943
+/* "adios_mpi.pyx":2171
  *             return self.value
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -30504,7 +34185,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "adios_mpi.pyx":1944
+  /* "adios_mpi.pyx":2172
  * 
  *         def __set__(self, value):
  *             self.value = value             # <<<<<<<<<<<<<<
@@ -30517,7 +34198,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
   __Pyx_DECREF(__pyx_v_self->value);
   __pyx_v_self->value = __pyx_v_value;
 
-  /* "adios_mpi.pyx":1943
+  /* "adios_mpi.pyx":2171
  *             return self.value
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -30531,7 +34212,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo_5value_2__set__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1946
+/* "adios_mpi.pyx":2174
  *             self.value = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
@@ -30553,7 +34234,7 @@ static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObj
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_value,&__pyx_n_s_dtype,&__pyx_n_s_is_static,0};
     PyObject* values[4] = {0,0,0,0};
 
-    /* "adios_mpi.pyx":1947
+    /* "adios_mpi.pyx":2175
  * 
  *     def __init__(self, str name,
  *                  value = None,             # <<<<<<<<<<<<<<
@@ -30562,7 +34243,7 @@ static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObj
  */
     values[1] = ((PyObject *)Py_None);
 
-    /* "adios_mpi.pyx":1948
+    /* "adios_mpi.pyx":2176
  *     def __init__(self, str name,
  *                  value = None,
  *                  dtype = None,             # <<<<<<<<<<<<<<
@@ -30603,7 +34284,7 @@ static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1946, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2174, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -30619,10 +34300,10 @@ static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObj
     __pyx_v_value = values[1];
     __pyx_v_dtype = values[2];
     if (values[3]) {
-      __pyx_v_is_static = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_is_static == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1949, __pyx_L3_error)
+      __pyx_v_is_static = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_is_static == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2177, __pyx_L3_error)
     } else {
 
-      /* "adios_mpi.pyx":1949
+      /* "adios_mpi.pyx":2177
  *                  value = None,
  *                  dtype = None,
  *                  bint is_static = True):             # <<<<<<<<<<<<<<
@@ -30634,16 +34315,16 @@ static int __pyx_pw_9adios_mpi_8attrinfo_1__init__(PyObject *__pyx_v_self, PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1946, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2174, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.attrinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1946, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 2174, __pyx_L1_error)
   __pyx_r = __pyx_pf_9adios_mpi_8attrinfo___init__(((struct __pyx_obj_9adios_mpi_attrinfo *)__pyx_v_self), __pyx_v_name, __pyx_v_value, __pyx_v_dtype, __pyx_v_is_static);
 
-  /* "adios_mpi.pyx":1946
+  /* "adios_mpi.pyx":2174
  *             self.value = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
@@ -30665,7 +34346,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_at
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1950
+  /* "adios_mpi.pyx":2178
  *                  dtype = None,
  *                  bint is_static = True):
  *         self.name = name             # <<<<<<<<<<<<<<
@@ -30678,7 +34359,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_at
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":1951
+  /* "adios_mpi.pyx":2179
  *                  bint is_static = True):
  *         self.name = name
  *         self.value = value             # <<<<<<<<<<<<<<
@@ -30691,7 +34372,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_at
   __Pyx_DECREF(__pyx_v_self->value);
   __pyx_v_self->value = __pyx_v_value;
 
-  /* "adios_mpi.pyx":1952
+  /* "adios_mpi.pyx":2180
  *         self.name = name
  *         self.value = value
  *         self.dtype = dtype             # <<<<<<<<<<<<<<
@@ -30704,7 +34385,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_at
   __Pyx_DECREF(__pyx_v_self->dtype);
   __pyx_v_self->dtype = __pyx_v_dtype;
 
-  /* "adios_mpi.pyx":1953
+  /* "adios_mpi.pyx":2181
  *         self.value = value
  *         self.dtype = dtype
  *         self.is_static = is_static             # <<<<<<<<<<<<<<
@@ -30713,7 +34394,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_at
  */
   __pyx_v_self->is_static = __pyx_v_is_static;
 
-  /* "adios_mpi.pyx":1946
+  /* "adios_mpi.pyx":2174
  *             self.value = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
@@ -30727,7 +34408,7 @@ static int __pyx_pf_9adios_mpi_8attrinfo___init__(struct __pyx_obj_9adios_mpi_at
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1955
+/* "adios_mpi.pyx":2183
  *         self.is_static = is_static
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
@@ -30744,7 +34425,7 @@ static PyObject *__pyx_pw_9adios_mpi_8attrinfo_3define(PyObject *__pyx_v_self, P
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define (wrapper)", 0);
   assert(__pyx_arg_gid); {
-    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1955, __pyx_L3_error)
+    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -30768,7 +34449,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("define", 0);
 
-  /* "adios_mpi.pyx":1956
+  /* "adios_mpi.pyx":2184
  * 
  *     def define(self, int64_t gid):
  *         if self.is_static:             # <<<<<<<<<<<<<<
@@ -30778,7 +34459,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
   __pyx_t_1 = (__pyx_v_self->is_static != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":1957
+    /* "adios_mpi.pyx":2185
  *     def define(self, int64_t gid):
  *         if self.is_static:
  *             if self.value is None:             # <<<<<<<<<<<<<<
@@ -30789,20 +34470,20 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "adios_mpi.pyx":1958
+      /* "adios_mpi.pyx":2186
  *         if self.is_static:
  *             if self.value is None:
  *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1958, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2186, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1958, __pyx_L1_error)
+      __PYX_ERR(0, 2186, __pyx_L1_error)
 
-      /* "adios_mpi.pyx":1957
+      /* "adios_mpi.pyx":2185
  *     def define(self, int64_t gid):
  *         if self.is_static:
  *             if self.value is None:             # <<<<<<<<<<<<<<
@@ -30811,7 +34492,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
  */
     }
 
-    /* "adios_mpi.pyx":1960
+    /* "adios_mpi.pyx":2188
  *                 raise TypeError("Value is none")
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)             # <<<<<<<<<<<<<<
@@ -30826,7 +34507,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "adios_mpi.pyx":1956
+    /* "adios_mpi.pyx":2184
  * 
  *     def define(self, int64_t gid):
  *         if self.is_static:             # <<<<<<<<<<<<<<
@@ -30836,7 +34517,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
     goto __pyx_L3;
   }
 
-  /* "adios_mpi.pyx":1965
+  /* "adios_mpi.pyx":2193
  *             ##define_attribute(gid, self.name, "",
  *             ##                 atype, "", str(self.value))
  *             raise NotImplementedError             # <<<<<<<<<<<<<<
@@ -30845,11 +34526,11 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(0, 1965, __pyx_L1_error)
+    __PYX_ERR(0, 2193, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "adios_mpi.pyx":1955
+  /* "adios_mpi.pyx":2183
  *         self.is_static = is_static
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
@@ -30871,7 +34552,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_2define(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1967
+/* "adios_mpi.pyx":2195
  *             raise NotImplementedError
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -30899,7 +34580,7 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":1968
+  /* "adios_mpi.pyx":2196
  * 
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
@@ -30908,24 +34589,24 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":1970
+  /* "adios_mpi.pyx":2198
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
  *                 (self.name,
  *                  self.is_static,             # <<<<<<<<<<<<<<
  *                  self.value,
  *                  self.dtype)
  */
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1970, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->is_static); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2198, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":1969
+  /* "adios_mpi.pyx":2197
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \
  *                 (self.name,             # <<<<<<<<<<<<<<
  *                  self.is_static,
  *                  self.value,
  */
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1969, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2197, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -30940,21 +34621,21 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
   PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_self->dtype);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1968
+  /* "adios_mpi.pyx":2196
  * 
  *     def __repr__(self):
  *         return ("AdiosAttrinfo (name=%r, is_static=%r, value=%r, dtype=%r)") % \             # <<<<<<<<<<<<<<
  *                 (self.name,
  *                  self.is_static,
  */
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1968, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_AdiosAttrinfo_name_r_is_static_r, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2196, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":1967
+  /* "adios_mpi.pyx":2195
  *             raise NotImplementedError
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -30974,8 +34655,131 @@ static PyObject *__pyx_pf_9adios_mpi_8attrinfo_4__repr__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1981
- *     cdef public value
+/* "adios_mpi.pyx":2212
+ *     property transform:
+ *         """ Transform method """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.fname
+ *         def __set__(self, value):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_9adios_mpi_7varinfo_9transform_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_9adios_mpi_7varinfo_9transform_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_7varinfo_9transform___get__(((struct __pyx_obj_9adios_mpi_varinfo *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_9adios_mpi_7varinfo_9transform___get__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "adios_mpi.pyx":2213
+ *         """ Transform method """
+ *         def __get__(self):
+ *             return self.fname             # <<<<<<<<<<<<<<
+ *         def __set__(self, value):
+ *             self.transform = value
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2213, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "adios_mpi.pyx":2212
+ *     property transform:
+ *         """ Transform method """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.fname
+ *         def __set__(self, value):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.varinfo.transform.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":2214
+ *         def __get__(self):
+ *             return self.fname
+ *         def __set__(self, value):             # <<<<<<<<<<<<<<
+ *             self.transform = value
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_9adios_mpi_7varinfo_9transform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_9adios_mpi_7varinfo_9transform_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_9adios_mpi_7varinfo_9transform_2__set__(((struct __pyx_obj_9adios_mpi_varinfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_9adios_mpi_7varinfo_9transform_2__set__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "adios_mpi.pyx":2215
+ *             return self.fname
+ *         def __set__(self, value):
+ *             self.transform = value             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, str name,
+ */
+  if (!(likely(PyString_CheckExact(__pyx_v_value))||((__pyx_v_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_value)->tp_name), 0))) __PYX_ERR(0, 2215, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_value;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->transform);
+  __Pyx_DECREF(__pyx_v_self->transform);
+  __pyx_v_self->transform = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":2214
+ *         def __get__(self):
+ *             return self.fname
+ *         def __set__(self, value):             # <<<<<<<<<<<<<<
+ *             self.transform = value
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.varinfo.transform.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "adios_mpi.pyx":2217
+ *             self.transform = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
@@ -30990,28 +34794,39 @@ static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObje
   PyObject *__pyx_v_gdim = 0;
   PyObject *__pyx_v_offset = 0;
   PyObject *__pyx_v_value = 0;
+  PyObject *__pyx_v_transform = 0;
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
   {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,&__pyx_n_s_value,0};
-    PyObject* values[5] = {0,0,0,0,0};
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_ldim,&__pyx_n_s_gdim,&__pyx_n_s_offset,&__pyx_n_s_value,&__pyx_n_s_transform,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
     values[1] = __pyx_k__59;
     values[2] = __pyx_k__60;
     values[3] = __pyx_k__61;
 
-    /* "adios_mpi.pyx":1985
+    /* "adios_mpi.pyx":2221
  *                  gdim = tuple(),
  *                  offset = tuple(),
- *                  value = None):             # <<<<<<<<<<<<<<
+ *                  value = None,             # <<<<<<<<<<<<<<
+ *                  transform = None):
  *         self.name = name
- *         self.ldim = ldim
  */
     values[4] = ((PyObject *)Py_None);
+
+    /* "adios_mpi.pyx":2222
+ *                  offset = tuple(),
+ *                  value = None,
+ *                  transform = None):             # <<<<<<<<<<<<<<
+ *         self.name = name
+ *         self.ldim = ldim
+ */
+    values[5] = ((PyObject *)Py_None);
     if (unlikely(__pyx_kwds)) {
       Py_ssize_t kw_args;
       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
       switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -31045,12 +34860,18 @@ static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObje
           PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value);
           if (value) { values[4] = value; kw_args--; }
         }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform);
+          if (value) { values[5] = value; kw_args--; }
+        }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1981, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2217, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
@@ -31065,20 +34886,21 @@ static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObje
     __pyx_v_gdim = values[2];
     __pyx_v_offset = values[3];
     __pyx_v_value = values[4];
+    __pyx_v_transform = values[5];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1981, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2217, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.varinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 1981, __pyx_L1_error)
-  __pyx_r = __pyx_pf_9adios_mpi_7varinfo___init__(((struct __pyx_obj_9adios_mpi_varinfo *)__pyx_v_self), __pyx_v_name, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset, __pyx_v_value);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 2217, __pyx_L1_error)
+  __pyx_r = __pyx_pf_9adios_mpi_7varinfo___init__(((struct __pyx_obj_9adios_mpi_varinfo *)__pyx_v_self), __pyx_v_name, __pyx_v_ldim, __pyx_v_gdim, __pyx_v_offset, __pyx_v_value, __pyx_v_transform);
 
-  /* "adios_mpi.pyx":1981
- *     cdef public value
+  /* "adios_mpi.pyx":2217
+ *             self.transform = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
@@ -31094,14 +34916,15 @@ static int __pyx_pw_9adios_mpi_7varinfo_1__init__(PyObject *__pyx_v_self, PyObje
   return __pyx_r;
 }
 
-static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value) {
+static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_varinfo *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_ldim, PyObject *__pyx_v_gdim, PyObject *__pyx_v_offset, PyObject *__pyx_v_value, PyObject *__pyx_v_transform) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "adios_mpi.pyx":1986
- *                  offset = tuple(),
- *                  value = None):
+  /* "adios_mpi.pyx":2223
+ *                  value = None,
+ *                  transform = None):
  *         self.name = name             # <<<<<<<<<<<<<<
  *         self.ldim = ldim
  *         self.gdim = gdim
@@ -31112,8 +34935,8 @@ static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_var
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "adios_mpi.pyx":1987
- *                  value = None):
+  /* "adios_mpi.pyx":2224
+ *                  transform = None):
  *         self.name = name
  *         self.ldim = ldim             # <<<<<<<<<<<<<<
  *         self.gdim = gdim
@@ -31125,7 +34948,7 @@ static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_var
   __Pyx_DECREF(__pyx_v_self->ldim);
   __pyx_v_self->ldim = __pyx_v_ldim;
 
-  /* "adios_mpi.pyx":1988
+  /* "adios_mpi.pyx":2225
  *         self.name = name
  *         self.ldim = ldim
  *         self.gdim = gdim             # <<<<<<<<<<<<<<
@@ -31138,12 +34961,12 @@ static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_var
   __Pyx_DECREF(__pyx_v_self->gdim);
   __pyx_v_self->gdim = __pyx_v_gdim;
 
-  /* "adios_mpi.pyx":1989
+  /* "adios_mpi.pyx":2226
  *         self.ldim = ldim
  *         self.gdim = gdim
  *         self.offset = offset             # <<<<<<<<<<<<<<
  *         self.value = value
- * 
+ *         self.transform = transform
  */
   __Pyx_INCREF(__pyx_v_offset);
   __Pyx_GIVEREF(__pyx_v_offset);
@@ -31151,12 +34974,12 @@ static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_var
   __Pyx_DECREF(__pyx_v_self->offset);
   __pyx_v_self->offset = __pyx_v_offset;
 
-  /* "adios_mpi.pyx":1990
+  /* "adios_mpi.pyx":2227
  *         self.gdim = gdim
  *         self.offset = offset
  *         self.value = value             # <<<<<<<<<<<<<<
+ *         self.transform = transform
  * 
- *     def define(self, int64_t gid):
  */
   __Pyx_INCREF(__pyx_v_value);
   __Pyx_GIVEREF(__pyx_v_value);
@@ -31164,8 +34987,24 @@ static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_var
   __Pyx_DECREF(__pyx_v_self->value);
   __pyx_v_self->value = __pyx_v_value;
 
-  /* "adios_mpi.pyx":1981
- *     cdef public value
+  /* "adios_mpi.pyx":2228
+ *         self.offset = offset
+ *         self.value = value
+ *         self.transform = transform             # <<<<<<<<<<<<<<
+ * 
+ *     def define(self, int64_t gid):
+ */
+  if (!(likely(PyString_CheckExact(__pyx_v_transform))||((__pyx_v_transform) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_transform)->tp_name), 0))) __PYX_ERR(0, 2228, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_transform;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->transform);
+  __Pyx_DECREF(__pyx_v_self->transform);
+  __pyx_v_self->transform = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "adios_mpi.pyx":2217
+ *             self.transform = value
  * 
  *     def __init__(self, str name,             # <<<<<<<<<<<<<<
  *                  ldim = tuple(),
@@ -31174,12 +35013,18 @@ static int __pyx_pf_9adios_mpi_7varinfo___init__(struct __pyx_obj_9adios_mpi_var
 
   /* function exit code */
   __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("adios_mpi.varinfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1992
- *         self.value = value
+/* "adios_mpi.pyx":2230
+ *         self.transform = transform
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
  *         if self.value is None:
@@ -31195,7 +35040,7 @@ static PyObject *__pyx_pw_9adios_mpi_7varinfo_3define(PyObject *__pyx_v_self, Py
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("define (wrapper)", 0);
   assert(__pyx_arg_gid); {
-    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1992, __pyx_L3_error)
+    __pyx_v_gid = __Pyx_PyInt_As_int64_t(__pyx_arg_gid); if (unlikely((__pyx_v_gid == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2230, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -31216,6 +35061,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   PyObject *__pyx_v_offset_ = NULL;
   PyObject *__pyx_v_val_ = NULL;
   PyObject *__pyx_v_atype = NULL;
+  int64_t __pyx_v_varid;
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   int __pyx_t_1;
@@ -31227,10 +35073,11 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   PyObject *__pyx_t_7 = NULL;
   int __pyx_t_8;
   PyObject *__pyx_t_9 = NULL;
-  struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_10;
+  int64_t __pyx_t_10;
+  struct __pyx_opt_args_9adios_mpi_define_var __pyx_t_11;
   __Pyx_RefNannySetupContext("define", 0);
 
-  /* "adios_mpi.pyx":1993
+  /* "adios_mpi.pyx":2231
  * 
  *     def define(self, int64_t gid):
  *         if self.value is None:             # <<<<<<<<<<<<<<
@@ -31241,20 +35088,20 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":1994
+    /* "adios_mpi.pyx":2232
  *     def define(self, int64_t gid):
  *         if self.value is None:
  *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *         ldim_ = self.ldim
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1994, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2232, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 1994, __pyx_L1_error)
+    __PYX_ERR(0, 2232, __pyx_L1_error)
 
-    /* "adios_mpi.pyx":1993
+    /* "adios_mpi.pyx":2231
  * 
  *     def define(self, int64_t gid):
  *         if self.value is None:             # <<<<<<<<<<<<<<
@@ -31263,7 +35110,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":1996
+  /* "adios_mpi.pyx":2234
  *             raise TypeError("Value is none")
  * 
  *         ldim_ = self.ldim             # <<<<<<<<<<<<<<
@@ -31275,7 +35122,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_v_ldim_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":1997
+  /* "adios_mpi.pyx":2235
  * 
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31302,19 +35149,19 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":1998
+    /* "adios_mpi.pyx":2236
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):
  *             ldim_ = tuple(self.ldim)             # <<<<<<<<<<<<<<
  * 
  *         gdim_ = self.gdim
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->ldim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1998, __pyx_L1_error)
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->ldim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2236, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_ldim_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":1997
+    /* "adios_mpi.pyx":2235
  * 
  *         ldim_ = self.ldim
  *         if isinstance(self.ldim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31323,7 +35170,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":2000
+  /* "adios_mpi.pyx":2238
  *             ldim_ = tuple(self.ldim)
  * 
  *         gdim_ = self.gdim             # <<<<<<<<<<<<<<
@@ -31335,7 +35182,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_v_gdim_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":2001
+  /* "adios_mpi.pyx":2239
  * 
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31362,19 +35209,19 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":2002
+    /* "adios_mpi.pyx":2240
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):
  *             gdim_ = tuple(self.gdim)             # <<<<<<<<<<<<<<
  * 
  *         offset_ = self.offset
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->gdim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2002, __pyx_L1_error)
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->gdim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2240, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_gdim_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":2001
+    /* "adios_mpi.pyx":2239
  * 
  *         gdim_ = self.gdim
  *         if isinstance(self.gdim, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31383,7 +35230,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":2004
+  /* "adios_mpi.pyx":2242
  *             gdim_ = tuple(self.gdim)
  * 
  *         offset_ = self.offset             # <<<<<<<<<<<<<<
@@ -31395,7 +35242,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_v_offset_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":2005
+  /* "adios_mpi.pyx":2243
  * 
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31422,19 +35269,19 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "adios_mpi.pyx":2006
+    /* "adios_mpi.pyx":2244
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):
  *             offset_ = tuple(self.offset)             # <<<<<<<<<<<<<<
  * 
  *         val_ = self.value
  */
-    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2006, __pyx_L1_error)
+    __pyx_t_3 = PySequence_Tuple(__pyx_v_self->offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2244, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_offset_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":2005
+    /* "adios_mpi.pyx":2243
  * 
  *         offset_ = self.offset
  *         if isinstance(self.offset, (tuple, list)):             # <<<<<<<<<<<<<<
@@ -31443,7 +35290,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":2008
+  /* "adios_mpi.pyx":2246
  *             offset_ = tuple(self.offset)
  * 
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -31455,7 +35302,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_v_val_ = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":2009
+  /* "adios_mpi.pyx":2247
  * 
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31469,16 +35316,16 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "adios_mpi.pyx":2010
+    /* "adios_mpi.pyx":2248
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):
  *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
  * 
  *         atype = np2adiostype(val_.dtype)
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2010, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2248, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2010, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2248, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = NULL;
@@ -31492,16 +35339,16 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2010, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_self->value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2248, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2010, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2248, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_self->value);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2010, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2248, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
@@ -31509,7 +35356,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "adios_mpi.pyx":2009
+    /* "adios_mpi.pyx":2247
  * 
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31518,139 +35365,181 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
  */
   }
 
-  /* "adios_mpi.pyx":2012
+  /* "adios_mpi.pyx":2250
  *             val_ = np.array(self.value)
  * 
  *         atype = np2adiostype(val_.dtype)             # <<<<<<<<<<<<<<
  *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
+ *         cdef int64_t varid = 0;
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2012, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2250, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 2012, __pyx_L1_error)
-  __pyx_t_6 = __pyx_f_9adios_mpi_np2adiostype(((PyArray_Descr *)__pyx_t_3), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2012, __pyx_L1_error)
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 2250, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_9adios_mpi_np2adiostype(((PyArray_Descr *)__pyx_t_3), 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2250, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_atype = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "adios_mpi.pyx":2014
+  /* "adios_mpi.pyx":2252
  *         atype = np2adiostype(val_.dtype)
  *         ## No space allowed
- *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
+ *         cdef int64_t varid = 0;             # <<<<<<<<<<<<<<
+ *         varid = define_var(gid, self.name, "", atype,
+ *                    str(ldim_).replace(' ', '').strip('(,)'),
+ */
+  __pyx_v_varid = 0;
+
+  /* "adios_mpi.pyx":2253
+ *         ## No space allowed
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  */
   __pyx_t_6 = __pyx_v_self->name;
   __Pyx_INCREF(__pyx_t_6);
-  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_atype); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2014, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_atype); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2253, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2015
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
+  /* "adios_mpi.pyx":2254
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_ldim_);
   __Pyx_GIVEREF(__pyx_v_ldim_);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_ldim_);
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 2015, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(0, 2254, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2016
- *         define_var(gid, self.name, "", atype,
+  /* "adios_mpi.pyx":2255
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_gdim_);
   __Pyx_GIVEREF(__pyx_v_gdim_);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_gdim_);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 2016, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 2255, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2017
+  /* "adios_mpi.pyx":2256
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
- *     def bytes(self):
+ *         if (self.transform is not None):
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_offset_);
   __Pyx_GIVEREF(__pyx_v_offset_);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_offset_);
-  __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_replace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_strip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(PyString_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_9)->tp_name), 0))) __PYX_ERR(0, 2017, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_9)->tp_name), 0))) __PYX_ERR(0, 2256, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2014
- *         atype = np2adiostype(val_.dtype)
+  /* "adios_mpi.pyx":2253
  *         ## No space allowed
- *         define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,             # <<<<<<<<<<<<<<
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  */
-  __pyx_t_10.__pyx_n = 3;
-  __pyx_t_10.dimensions = ((PyObject*)__pyx_t_7);
-  __pyx_t_10.global_dimensions = ((PyObject*)__pyx_t_5);
-  __pyx_t_10.local_offsets = ((PyObject*)__pyx_t_9);
-  __pyx_f_9adios_mpi_define_var(__pyx_v_gid, ((PyObject*)__pyx_t_6), __pyx_kp_s__10, __pyx_t_8, 0, &__pyx_t_10); 
+  __pyx_t_11.__pyx_n = 3;
+  __pyx_t_11.dimensions = ((PyObject*)__pyx_t_7);
+  __pyx_t_11.global_dimensions = ((PyObject*)__pyx_t_5);
+  __pyx_t_11.local_offsets = ((PyObject*)__pyx_t_9);
+  __pyx_t_10 = __pyx_f_9adios_mpi_define_var(__pyx_v_gid, ((PyObject*)__pyx_t_6), __pyx_kp_s__10, __pyx_t_8, 0, &__pyx_t_11); 
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_v_varid = __pyx_t_10;
 
-  /* "adios_mpi.pyx":1992
- *         self.value = value
+  /* "adios_mpi.pyx":2258
+ *                    str(offset_).replace(' ', '').strip('(,)'))
+ * 
+ *         if (self.transform is not None):             # <<<<<<<<<<<<<<
+ *             set_transform(varid, self.transform)
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_self->transform != ((PyObject*)Py_None));
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+
+    /* "adios_mpi.pyx":2259
+ * 
+ *         if (self.transform is not None):
+ *             set_transform(varid, self.transform)             # <<<<<<<<<<<<<<
+ * 
+ *     def bytes(self):
+ */
+    __pyx_t_9 = __pyx_v_self->transform;
+    __Pyx_INCREF(__pyx_t_9);
+    __pyx_f_9adios_mpi_set_transform(__pyx_v_varid, ((PyObject*)__pyx_t_9), 0);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "adios_mpi.pyx":2258
+ *                    str(offset_).replace(' ', '').strip('(,)'))
+ * 
+ *         if (self.transform is not None):             # <<<<<<<<<<<<<<
+ *             set_transform(varid, self.transform)
+ * 
+ */
+  }
+
+  /* "adios_mpi.pyx":2230
+ *         self.transform = transform
  * 
  *     def define(self, int64_t gid):             # <<<<<<<<<<<<<<
  *         if self.value is None:
@@ -31679,8 +35568,8 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_2define(struct __pyx_obj_9adios_mp
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":2019
- *                    str(offset_).replace(' ', '').strip('(,)'))
+/* "adios_mpi.pyx":2261
+ *             set_transform(varid, self.transform)
  * 
  *     def bytes(self):             # <<<<<<<<<<<<<<
  *         val_ = self.value
@@ -31713,7 +35602,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("bytes", 0);
 
-  /* "adios_mpi.pyx":2020
+  /* "adios_mpi.pyx":2262
  * 
  *     def bytes(self):
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -31725,7 +35614,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   __pyx_v_val_ = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":2021
+  /* "adios_mpi.pyx":2263
  *     def bytes(self):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31739,16 +35628,16 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":2022
+    /* "adios_mpi.pyx":2264
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):
  *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
  * 
  *         return val_.size * val_.itemsize
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2022, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2264, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2022, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2264, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -31762,16 +35651,16 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2022, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2264, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2022, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2264, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2022, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2264, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -31779,7 +35668,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":2021
+    /* "adios_mpi.pyx":2263
  *     def bytes(self):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31788,7 +35677,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":2024
+  /* "adios_mpi.pyx":2266
  *             val_ = np.array(self.value)
  * 
  *         return val_.size * val_.itemsize             # <<<<<<<<<<<<<<
@@ -31796,11 +35685,11 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
  *     def write(self, int64_t fd):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2024, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2024, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_val_, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2024, __pyx_L1_error)
+  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2266, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -31808,8 +35697,8 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":2019
- *                    str(offset_).replace(' ', '').strip('(,)'))
+  /* "adios_mpi.pyx":2261
+ *             set_transform(varid, self.transform)
  * 
  *     def bytes(self):             # <<<<<<<<<<<<<<
  *         val_ = self.value
@@ -31831,7 +35720,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_4bytes(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":2026
+/* "adios_mpi.pyx":2268
  *         return val_.size * val_.itemsize
  * 
  *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
@@ -31848,7 +35737,7 @@ static PyObject *__pyx_pw_9adios_mpi_7varinfo_7write(PyObject *__pyx_v_self, PyO
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("write (wrapper)", 0);
   assert(__pyx_arg_fd); {
-    __pyx_v_fd = __Pyx_PyInt_As_int64_t(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2026, __pyx_L3_error)
+    __pyx_v_fd = __Pyx_PyInt_As_int64_t(__pyx_arg_fd); if (unlikely((__pyx_v_fd == (int64_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2268, __pyx_L3_error)
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L3_error:;
@@ -31875,7 +35764,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("write", 0);
 
-  /* "adios_mpi.pyx":2027
+  /* "adios_mpi.pyx":2269
  * 
  *     def write(self, int64_t fd):
  *         val_ = self.value             # <<<<<<<<<<<<<<
@@ -31887,7 +35776,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   __pyx_v_val_ = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":2028
+  /* "adios_mpi.pyx":2270
  *     def write(self, int64_t fd):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31901,16 +35790,16 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   __pyx_t_3 = ((!(__pyx_t_2 != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "adios_mpi.pyx":2029
+    /* "adios_mpi.pyx":2271
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):
  *             val_ = np.array(self.value)             # <<<<<<<<<<<<<<
  * 
  *         write(fd, self.name, val_)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2029, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2271, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2029, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2271, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -31924,16 +35813,16 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2029, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2029, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_self->value);
       __Pyx_GIVEREF(__pyx_v_self->value);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_self->value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2029, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -31941,7 +35830,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
     __Pyx_DECREF_SET(__pyx_v_val_, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "adios_mpi.pyx":2028
+    /* "adios_mpi.pyx":2270
  *     def write(self, int64_t fd):
  *         val_ = self.value
  *         if not isinstance(self.value, (np.ndarray)):             # <<<<<<<<<<<<<<
@@ -31950,7 +35839,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
  */
   }
 
-  /* "adios_mpi.pyx":2031
+  /* "adios_mpi.pyx":2273
  *             val_ = np.array(self.value)
  * 
  *         write(fd, self.name, val_)             # <<<<<<<<<<<<<<
@@ -31962,7 +35851,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   __pyx_f_9adios_mpi_write(__pyx_v_fd, ((PyObject*)__pyx_t_1), __pyx_v_val_, 0, NULL);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":2026
+  /* "adios_mpi.pyx":2268
  *         return val_.size * val_.itemsize
  * 
  *     def write(self, int64_t fd):             # <<<<<<<<<<<<<<
@@ -31987,12 +35876,12 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_6write(struct __pyx_obj_9adios_mpi
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":2033
+/* "adios_mpi.pyx":2275
  *         write(fd, self.name, val_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  */
 
 /* Python wrapper */
@@ -32015,23 +35904,23 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "adios_mpi.pyx":2034
+  /* "adios_mpi.pyx":2276
  * 
  *     def __repr__(self):
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  * 
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "adios_mpi.pyx":2035
+  /* "adios_mpi.pyx":2277
  *     def __repr__(self):
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)             # <<<<<<<<<<<<<<
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)             # <<<<<<<<<<<<<<
  * 
  * ## Aliases
  */
-  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2035, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2277, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -32045,30 +35934,33 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_
   __Pyx_INCREF(__pyx_v_self->offset);
   __Pyx_GIVEREF(__pyx_v_self->offset);
   PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->offset);
+  __Pyx_INCREF(__pyx_v_self->transform);
+  __Pyx_GIVEREF(__pyx_v_self->transform);
+  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->transform);
   __Pyx_INCREF(__pyx_v_self->value);
   __Pyx_GIVEREF(__pyx_v_self->value);
-  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->value);
+  PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_v_self->value);
 
-  /* "adios_mpi.pyx":2034
+  /* "adios_mpi.pyx":2276
  * 
  *     def __repr__(self):
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \             # <<<<<<<<<<<<<<
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \             # <<<<<<<<<<<<<<
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2034, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_AdiosVarinfo_name_r_ldim_r_gdim, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2276, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":2033
+  /* "adios_mpi.pyx":2275
  *         write(fd, self.name, val_)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
- *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
- *                 (self.name, self.ldim, self.gdim, self.offset, self.value)
+ *         return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+ *                 (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
  */
 
   /* function exit code */
@@ -32083,7 +35975,7 @@ static PyObject *__pyx_pf_9adios_mpi_7varinfo_8__repr__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1976
+/* "adios_mpi.pyx":2204
  * cdef class varinfo(object):
  *     cdef str name
  *     cdef public ldim             # <<<<<<<<<<<<<<
@@ -32178,7 +36070,7 @@ static int __pyx_pf_9adios_mpi_7varinfo_4ldim_4__del__(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1977
+/* "adios_mpi.pyx":2205
  *     cdef str name
  *     cdef public ldim
  *     cdef public gdim             # <<<<<<<<<<<<<<
@@ -32273,12 +36165,12 @@ static int __pyx_pf_9adios_mpi_7varinfo_4gdim_4__del__(struct __pyx_obj_9adios_m
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1978
+/* "adios_mpi.pyx":2206
  *     cdef public ldim
  *     cdef public gdim
  *     cdef public offset             # <<<<<<<<<<<<<<
  *     cdef public value
- * 
+ *     cdef str transform
  */
 
 /* Python wrapper */
@@ -32368,12 +36260,12 @@ static int __pyx_pf_9adios_mpi_7varinfo_6offset_4__del__(struct __pyx_obj_9adios
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":1979
+/* "adios_mpi.pyx":2207
  *     cdef public gdim
  *     cdef public offset
  *     cdef public value             # <<<<<<<<<<<<<<
+ *     cdef str transform
  * 
- *     def __init__(self, str name,
  */
 
 /* Python wrapper */
@@ -32463,7 +36355,7 @@ static int __pyx_pf_9adios_mpi_7varinfo_5value_4__del__(struct __pyx_obj_9adios_
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":2049
+/* "adios_mpi.pyx":2291
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
@@ -32472,10 +36364,10 @@ static int __pyx_pf_9adios_mpi_7varinfo_5value_4__del__(struct __pyx_obj_9adios_
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_57readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_9adios_mpi_56readvar[] = "readvar(fname, varname)\n Retrieve a variable value from an Adios file.\n\n    Args:\n        fname (str): Adios file name\n        varname (str): Variable name to retrieve\n\n    Returns:\n        NumPy ndarray: variable value\n    ";
-static PyMethodDef __pyx_mdef_9adios_mpi_57readvar = {"readvar", (PyCFunction)__pyx_pw_9adios_mpi_57readvar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_56readvar};
-static PyObject *__pyx_pw_9adios_mpi_57readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+static PyObject *__pyx_pw_9adios_mpi_93readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_9adios_mpi_92readvar[] = "readvar(fname, varname)\n Retrieve a variable value from an Adios file.\n\n    Args:\n        fname (str): Adios file name\n        varname (str): Variable name to retrieve\n\n    Returns:\n        NumPy ndarray: variable value\n    ";
+static PyMethodDef __pyx_mdef_9adios_mpi_93readvar = {"readvar", (PyCFunction)__pyx_pw_9adios_mpi_93readvar, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_92readvar};
+static PyObject *__pyx_pw_9adios_mpi_93readvar(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_fname = 0;
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_r = 0;
@@ -32501,11 +36393,11 @@ static PyObject *__pyx_pw_9adios_mpi_57readvar(PyObject *__pyx_self, PyObject *_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, 1); __PYX_ERR(0, 2049, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, 1); __PYX_ERR(0, 2291, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) __PYX_ERR(0, 2049, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readvar") < 0)) __PYX_ERR(0, 2291, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -32518,20 +36410,20 @@ static PyObject *__pyx_pw_9adios_mpi_57readvar(PyObject *__pyx_self, PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2049, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("readvar", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2291, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("adios_mpi.readvar", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_9adios_mpi_56readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
+  __pyx_r = __pyx_pf_9adios_mpi_92readvar(__pyx_self, __pyx_v_fname, __pyx_v_varname);
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname) {
+static PyObject *__pyx_pf_9adios_mpi_92readvar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname, PyObject *__pyx_v_varname) {
   struct __pyx_obj_9adios_mpi_file *__pyx_v_f = NULL;
   PyObject *__pyx_v_v = NULL;
   PyObject *__pyx_r = NULL;
@@ -32542,47 +36434,47 @@ static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_sel
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("readvar", 0);
 
-  /* "adios_mpi.pyx":2059
+  /* "adios_mpi.pyx":2301
  *         NumPy ndarray: variable value
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)             # <<<<<<<<<<<<<<
  *     v = f[varname]
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2059, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_fname);
   __Pyx_GIVEREF(__pyx_v_fname);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2059, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2059, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2059, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_4) < 0) __PYX_ERR(0, 2059, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_4) < 0) __PYX_ERR(0, 2301, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2059, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2301, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_f = ((struct __pyx_obj_9adios_mpi_file *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":2060
+  /* "adios_mpi.pyx":2302
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)
  *     v = f[varname]             # <<<<<<<<<<<<<<
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  */
-  __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_f), __pyx_v_varname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2060, __pyx_L1_error)
+  __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_f), __pyx_v_varname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2302, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_v = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":2061
+  /* "adios_mpi.pyx":2303
  *     f = file(fname, comm=MPI.COMM_SELF)
  *     v = f[varname]
  *     return v.read(from_steps=0, nsteps=v.nsteps)             # <<<<<<<<<<<<<<
@@ -32590,16 +36482,16 @@ static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_sel
  * def bpls(fname):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_read); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2061, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_read); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2303, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2061, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2303, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_steps, __pyx_int_0) < 0) __PYX_ERR(0, 2061, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2061, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_from_steps, __pyx_int_0) < 0) __PYX_ERR(0, 2303, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_nsteps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2303, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) __PYX_ERR(0, 2061, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nsteps, __pyx_t_1) < 0) __PYX_ERR(0, 2303, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2061, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2303, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -32607,7 +36499,7 @@ static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_sel
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":2049
+  /* "adios_mpi.pyx":2291
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
@@ -32631,7 +36523,7 @@ static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_sel
   return __pyx_r;
 }
 
-/* "adios_mpi.pyx":2063
+/* "adios_mpi.pyx":2305
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
@@ -32640,21 +36532,21 @@ static PyObject *__pyx_pf_9adios_mpi_56readvar(CYTHON_UNUSED PyObject *__pyx_sel
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_9adios_mpi_59bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname); /*proto*/
-static char __pyx_doc_9adios_mpi_58bpls[] = "bpls(fname)\n Return meta data of an Adios file as a Python dictionary object.\n\n    Args:\n        fname (str): Adios file name\n\n    Returns:\n        dict: Adios file meta data\n    ";
-static PyMethodDef __pyx_mdef_9adios_mpi_59bpls = {"bpls", (PyCFunction)__pyx_pw_9adios_mpi_59bpls, METH_O, __pyx_doc_9adios_mpi_58bpls};
-static PyObject *__pyx_pw_9adios_mpi_59bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname) {
+static PyObject *__pyx_pw_9adios_mpi_95bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname); /*proto*/
+static char __pyx_doc_9adios_mpi_94bpls[] = "bpls(fname)\n Return meta data of an Adios file as a Python dictionary object.\n\n    Args:\n        fname (str): Adios file name\n\n    Returns:\n        dict: Adios file meta data\n    ";
+static PyMethodDef __pyx_mdef_9adios_mpi_95bpls = {"bpls", (PyCFunction)__pyx_pw_9adios_mpi_95bpls, METH_O, __pyx_doc_9adios_mpi_94bpls};
+static PyObject *__pyx_pw_9adios_mpi_95bpls(PyObject *__pyx_self, PyObject *__pyx_v_fname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("bpls (wrapper)", 0);
-  __pyx_r = __pyx_pf_9adios_mpi_58bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
+  __pyx_r = __pyx_pf_9adios_mpi_94bpls(__pyx_self, ((PyObject *)__pyx_v_fname));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname) {
+static PyObject *__pyx_pf_9adios_mpi_94bpls(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fname) {
   struct __pyx_obj_9adios_mpi_file *__pyx_v_f = NULL;
   PyObject *__pyx_v_k = NULL;
   PyObject *__pyx_r = NULL;
@@ -32669,35 +36561,35 @@ static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self,
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("bpls", 0);
 
-  /* "adios_mpi.pyx":2072
+  /* "adios_mpi.pyx":2314
  *         dict: Adios file meta data
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)             # <<<<<<<<<<<<<<
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2072, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_fname);
   __Pyx_GIVEREF(__pyx_v_fname);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2072, __pyx_L1_error)
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2072, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2072, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_4) < 0) __PYX_ERR(0, 2072, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_comm, __pyx_t_4) < 0) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2072, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_9adios_mpi_file), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_f = ((struct __pyx_obj_9adios_mpi_file *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "adios_mpi.pyx":2073
+  /* "adios_mpi.pyx":2315
  *     """
  *     f = file(fname, comm=MPI.COMM_SELF)
  *     return {'nvars': f.nvars,             # <<<<<<<<<<<<<<
@@ -32705,40 +36597,40 @@ static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self,
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2073, __pyx_L1_error)
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2073, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nvars, __pyx_t_2) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nvars, __pyx_t_2) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":2074
+  /* "adios_mpi.pyx":2316
  *     f = file(fname, comm=MPI.COMM_SELF)
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,             # <<<<<<<<<<<<<<
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2074, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->nattrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2316, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nattrs, __pyx_t_2) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nattrs, __pyx_t_2) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":2075
+  /* "adios_mpi.pyx":2317
  *     return {'nvars': f.nvars,
  *             'nattrs': f.nattrs,
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),             # <<<<<<<<<<<<<<
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  *             'time_steps': (f.current_step, f.last_step),
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2075, __pyx_L1_error)
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_5 = 0;
   if (unlikely(((PyObject *)__pyx_v_f->vars) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    __PYX_ERR(0, 2075, __pyx_L1_error)
+    __PYX_ERR(0, 2317, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->vars), 0, __pyx_n_s_iterkeys, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2075, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->vars), 0, __pyx_n_s_iterkeys, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_1);
   __pyx_t_1 = __pyx_t_3;
@@ -32746,34 +36638,34 @@ static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self,
   while (1) {
     __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, NULL, NULL, __pyx_t_7);
     if (unlikely(__pyx_t_8 == 0)) break;
-    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2075, __pyx_L1_error)
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2317, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3);
     __pyx_t_3 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2075, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2317, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2075, __pyx_L1_error)
+  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_vars, __pyx_t_1) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_vars, __pyx_t_1) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":2076
+  /* "adios_mpi.pyx":2318
  *             'nattrs': f.nattrs,
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),             # <<<<<<<<<<<<<<
  *             'time_steps': (f.current_step, f.last_step),
  *             'file_size': f.file_size}
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2076, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_6 = 0;
   if (unlikely(((PyObject *)__pyx_v_f->attrs) == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iterkeys");
-    __PYX_ERR(0, 2076, __pyx_L1_error)
+    __PYX_ERR(0, 2318, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->attrs), 0, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2076, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_dict_iterator(((PyObject *)__pyx_v_f->attrs), 0, __pyx_n_s_iterkeys, (&__pyx_t_5), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_2);
   __pyx_t_2 = __pyx_t_3;
@@ -32781,30 +36673,30 @@ static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self,
   while (1) {
     __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_5, &__pyx_t_6, &__pyx_t_3, NULL, NULL, __pyx_t_7);
     if (unlikely(__pyx_t_8 == 0)) break;
-    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2076, __pyx_L1_error)
+    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 2318, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3);
     __pyx_t_3 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2076, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_k))) __PYX_ERR(0, 2318, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2076, __pyx_L1_error)
+  __pyx_t_2 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2318, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attrs, __pyx_t_2) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attrs, __pyx_t_2) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":2077
+  /* "adios_mpi.pyx":2319
  *             'vars': tuple([ k for k in f.vars.iterkeys() ]),
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  *             'time_steps': (f.current_step, f.last_step),             # <<<<<<<<<<<<<<
  *             'file_size': f.file_size}
  */
-  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2077, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_f->current_step); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2077, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_f->last_step); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2077, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2319, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
@@ -32812,23 +36704,23 @@ static PyObject *__pyx_pf_9adios_mpi_58bpls(CYTHON_UNUSED PyObject *__pyx_self,
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
   __pyx_t_2 = 0;
   __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_time_steps, __pyx_t_3) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_time_steps, __pyx_t_3) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "adios_mpi.pyx":2078
+  /* "adios_mpi.pyx":2320
  *             'attrs': tuple([ k for k in f.attrs.iterkeys() ]),
  *             'time_steps': (f.current_step, f.last_step),
  *             'file_size': f.file_size}             # <<<<<<<<<<<<<<
  */
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_f->file_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2078, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_f->file_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2320, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_file_size, __pyx_t_3) < 0) __PYX_ERR(0, 2073, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_file_size, __pyx_t_3) < 0) __PYX_ERR(0, 2315, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "adios_mpi.pyx":2063
+  /* "adios_mpi.pyx":2305
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
@@ -36379,7 +40271,7 @@ static PyObject *__pyx_sq_item_9adios_mpi_writer(PyObject *o, Py_ssize_t i) {
 
 static int __pyx_mp_ass_subscript_9adios_mpi_writer(PyObject *o, PyObject *i, PyObject *v) {
   if (v) {
-    return __pyx_pw_9adios_mpi_6writer_11__setitem__(o, i, v);
+    return __pyx_pw_9adios_mpi_6writer_13__setitem__(o, i, v);
   }
   else {
     PyErr_Format(PyExc_NotImplementedError,
@@ -36412,14 +40304,19 @@ static PyObject *__pyx_getprop_9adios_mpi_6writer_attrs(PyObject *o, CYTHON_UNUS
   return __pyx_pw_9adios_mpi_6writer_5attrs_1__get__(o);
 }
 
+static PyObject *__pyx_getprop_9adios_mpi_6writer_timeaggregation_buffersize(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_6writer_26timeaggregation_buffersize_1__get__(o);
+}
+
 static PyMethodDef __pyx_methods_9adios_mpi_writer[] = {
   {"declare_group", (PyCFunction)__pyx_pw_9adios_mpi_6writer_3declare_group, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_2declare_group},
-  {"define_var", (PyCFunction)__pyx_pw_9adios_mpi_6writer_5define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_4define_var},
-  {"define_attr", (PyCFunction)__pyx_pw_9adios_mpi_6writer_7define_attr, METH_O, __pyx_doc_9adios_mpi_6writer_6define_attr},
-  {"define_dynamic_attr", (PyCFunction)__pyx_pw_9adios_mpi_6writer_9define_dynamic_attr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_8define_dynamic_attr},
-  {"close", (PyCFunction)__pyx_pw_9adios_mpi_6writer_15close, METH_NOARGS, __pyx_doc_9adios_mpi_6writer_14close},
-  {"__enter__", (PyCFunction)__pyx_pw_9adios_mpi_6writer_19__enter__, METH_NOARGS, __pyx_doc_9adios_mpi_6writer_18__enter__},
-  {"__exit__", (PyCFunction)__pyx_pw_9adios_mpi_6writer_21__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_20__exit__},
+  {"set_time_aggregation", (PyCFunction)__pyx_pw_9adios_mpi_6writer_5set_time_aggregation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_4set_time_aggregation},
+  {"define_var", (PyCFunction)__pyx_pw_9adios_mpi_6writer_7define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_6define_var},
+  {"define_attr", (PyCFunction)__pyx_pw_9adios_mpi_6writer_9define_attr, METH_O, __pyx_doc_9adios_mpi_6writer_8define_attr},
+  {"define_dynamic_attr", (PyCFunction)__pyx_pw_9adios_mpi_6writer_11define_dynamic_attr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_10define_dynamic_attr},
+  {"close", (PyCFunction)__pyx_pw_9adios_mpi_6writer_17close, METH_NOARGS, __pyx_doc_9adios_mpi_6writer_16close},
+  {"__enter__", (PyCFunction)__pyx_pw_9adios_mpi_6writer_21__enter__, METH_NOARGS, __pyx_doc_9adios_mpi_6writer_20__enter__},
+  {"__exit__", (PyCFunction)__pyx_pw_9adios_mpi_6writer_23__exit__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_6writer_22__exit__},
   {0, 0, 0, 0}
 };
 
@@ -36430,6 +40327,7 @@ static struct PyGetSetDef __pyx_getsets_9adios_mpi_writer[] = {
   {(char *)"mode", __pyx_getprop_9adios_mpi_6writer_mode, 0, (char *)" Writing mode: overwrite or append. ", 0},
   {(char *)"vars", __pyx_getprop_9adios_mpi_6writer_vars, 0, (char *)" Dictionary of variables to write. ", 0},
   {(char *)"attrs", __pyx_getprop_9adios_mpi_6writer_attrs, 0, (char *)" Dictionary of attributes to write. ", 0},
+  {(char *)"timeaggregation_buffersize", __pyx_getprop_9adios_mpi_6writer_timeaggregation_buffersize, 0, (char *)" Get time-aggregation buffersize. ", 0},
   {0, 0, 0, 0, 0}
 };
 
@@ -36448,7 +40346,7 @@ static PySequenceMethods __pyx_tp_as_sequence_writer = {
 
 static PyMappingMethods __pyx_tp_as_mapping_writer = {
   0, /*mp_length*/
-  __pyx_pw_9adios_mpi_6writer_13__getitem__, /*mp_subscript*/
+  __pyx_pw_9adios_mpi_6writer_15__getitem__, /*mp_subscript*/
   __pyx_mp_ass_subscript_9adios_mpi_writer, /*mp_ass_subscript*/
 };
 
@@ -36467,7 +40365,7 @@ static PyTypeObject __pyx_type_9adios_mpi_writer = {
   #if PY_MAJOR_VERSION >= 3
   0, /*tp_as_async*/
   #endif
-  __pyx_pw_9adios_mpi_6writer_17__repr__, /*tp_repr*/
+  __pyx_pw_9adios_mpi_6writer_19__repr__, /*tp_repr*/
   0, /*tp_as_number*/
   &__pyx_tp_as_sequence_writer, /*tp_as_sequence*/
   &__pyx_tp_as_mapping_writer, /*tp_as_mapping*/
@@ -36676,6 +40574,7 @@ static PyObject *__pyx_tp_new_9adios_mpi_varinfo(PyTypeObject *t, CYTHON_UNUSED
   p->gdim = Py_None; Py_INCREF(Py_None);
   p->offset = Py_None; Py_INCREF(Py_None);
   p->value = Py_None; Py_INCREF(Py_None);
+  p->transform = ((PyObject*)Py_None); Py_INCREF(Py_None);
   return o;
 }
 
@@ -36692,6 +40591,7 @@ static void __pyx_tp_dealloc_9adios_mpi_varinfo(PyObject *o) {
   Py_CLEAR(p->gdim);
   Py_CLEAR(p->offset);
   Py_CLEAR(p->value);
+  Py_CLEAR(p->transform);
   (*Py_TYPE(o)->tp_free)(o);
 }
 
@@ -36731,6 +40631,20 @@ static int __pyx_tp_clear_9adios_mpi_varinfo(PyObject *o) {
   return 0;
 }
 
+static PyObject *__pyx_getprop_9adios_mpi_7varinfo_transform(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_9adios_mpi_7varinfo_9transform_1__get__(o);
+}
+
+static int __pyx_setprop_9adios_mpi_7varinfo_transform(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_9adios_mpi_7varinfo_9transform_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
 static PyObject *__pyx_getprop_9adios_mpi_7varinfo_ldim(PyObject *o, CYTHON_UNUSED void *x) {
   return __pyx_pw_9adios_mpi_7varinfo_4ldim_1__get__(o);
 }
@@ -36791,6 +40705,7 @@ static PyMethodDef __pyx_methods_9adios_mpi_varinfo[] = {
 };
 
 static struct PyGetSetDef __pyx_getsets_9adios_mpi_varinfo[] = {
+  {(char *)"transform", __pyx_getprop_9adios_mpi_7varinfo_transform, __pyx_setprop_9adios_mpi_7varinfo_transform, (char *)" Transform method ", 0},
   {(char *)"ldim", __pyx_getprop_9adios_mpi_7varinfo_ldim, __pyx_setprop_9adios_mpi_7varinfo_ldim, (char *)"ldim: object", 0},
   {(char *)"gdim", __pyx_getprop_9adios_mpi_7varinfo_gdim, __pyx_setprop_9adios_mpi_7varinfo_gdim, (char *)"gdim: object", 0},
   {(char *)"offset", __pyx_getprop_9adios_mpi_7varinfo_offset, __pyx_setprop_9adios_mpi_7varinfo_offset, (char *)"offset: object", 0},
@@ -36824,7 +40739,7 @@ static PyTypeObject __pyx_type_9adios_mpi_varinfo = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "varinfo(str name, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>, value=None)", /*tp_doc*/
+  "varinfo(str name, ldim=<\077\077?>, gdim=<\077\077?>, offset=<\077\077?>, value=None, transform=None)", /*tp_doc*/
   __pyx_tp_traverse_9adios_mpi_varinfo, /*tp_traverse*/
   __pyx_tp_clear_9adios_mpi_varinfo, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -36876,14 +40791,32 @@ static PyMethodDef __pyx_methods[] = {
   {"allocate_buffer", (PyCFunction)__pyx_pw_9adios_mpi_35allocate_buffer, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_34allocate_buffer},
   {"declare_group", (PyCFunction)__pyx_pw_9adios_mpi_37declare_group, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_36declare_group},
   {"define_var", (PyCFunction)__pyx_pw_9adios_mpi_39define_var, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_38define_var},
-  {"define_attribute", (PyCFunction)__pyx_pw_9adios_mpi_41define_attribute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_40define_attribute},
-  {"define_attribute_byvalue", (PyCFunction)__pyx_pw_9adios_mpi_43define_attribute_byvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_42define_attribute_byvalue},
-  {"select_method", (PyCFunction)__pyx_pw_9adios_mpi_45select_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_44select_method},
-  {"adios2npdtype", (PyCFunction)__pyx_pw_9adios_mpi_47adios2npdtype, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_46adios2npdtype},
-  {"np2adiostype", (PyCFunction)__pyx_pw_9adios_mpi_49np2adiostype, METH_O, __pyx_doc_9adios_mpi_48np2adiostype},
-  {"adiostype2string", (PyCFunction)__pyx_pw_9adios_mpi_51adiostype2string, METH_O, __pyx_doc_9adios_mpi_50adiostype2string},
-  {"read_init", (PyCFunction)__pyx_pw_9adios_mpi_53read_init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_52read_init},
-  {"read_finalize", (PyCFunction)__pyx_pw_9adios_mpi_55read_finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_54read_finalize},
+  {"define_schema_version", (PyCFunction)__pyx_pw_9adios_mpi_41define_schema_version, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_40define_schema_version},
+  {"define_var_mesh", (PyCFunction)__pyx_pw_9adios_mpi_43define_var_mesh, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_42define_var_mesh},
+  {"define_var_centering", (PyCFunction)__pyx_pw_9adios_mpi_45define_var_centering, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_44define_var_centering},
+  {"define_var_timesteps", (PyCFunction)__pyx_pw_9adios_mpi_47define_var_timesteps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_46define_var_timesteps},
+  {"define_var_timescale", (PyCFunction)__pyx_pw_9adios_mpi_49define_var_timescale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_48define_var_timescale},
+  {"define_var_timeseriesformat", (PyCFunction)__pyx_pw_9adios_mpi_51define_var_timeseriesformat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_50define_var_timeseriesformat},
+  {"define_var_hyperslab", (PyCFunction)__pyx_pw_9adios_mpi_53define_var_hyperslab, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_52define_var_hyperslab},
+  {"define_mesh_timevarying", (PyCFunction)__pyx_pw_9adios_mpi_55define_mesh_timevarying, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_54define_mesh_timevarying},
+  {"define_mesh_timesteps", (PyCFunction)__pyx_pw_9adios_mpi_57define_mesh_timesteps, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_56define_mesh_timesteps},
+  {"define_mesh_timescale", (PyCFunction)__pyx_pw_9adios_mpi_59define_mesh_timescale, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_58define_mesh_timescale},
+  {"define_mesh_timeseriesformat", (PyCFunction)__pyx_pw_9adios_mpi_61define_mesh_timeseriesformat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_60define_mesh_timeseriesformat},
+  {"define_mesh_uniform", (PyCFunction)__pyx_pw_9adios_mpi_63define_mesh_uniform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_62define_mesh_uniform},
+  {"define_mesh_rectilinear", (PyCFunction)__pyx_pw_9adios_mpi_65define_mesh_rectilinear, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_64define_mesh_rectilinear},
+  {"define_mesh_structured", (PyCFunction)__pyx_pw_9adios_mpi_67define_mesh_structured, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_66define_mesh_structured},
+  {"define_mesh_unstructured", (PyCFunction)__pyx_pw_9adios_mpi_69define_mesh_unstructured, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_68define_mesh_unstructured},
+  {"define_attribute", (PyCFunction)__pyx_pw_9adios_mpi_71define_attribute, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_70define_attribute},
+  {"define_attribute_byvalue", (PyCFunction)__pyx_pw_9adios_mpi_73define_attribute_byvalue, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_72define_attribute_byvalue},
+  {"select_method", (PyCFunction)__pyx_pw_9adios_mpi_75select_method, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_74select_method},
+  {"set_transform", (PyCFunction)__pyx_pw_9adios_mpi_77set_transform, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_76set_transform},
+  {"set_max_buffer_size", (PyCFunction)__pyx_pw_9adios_mpi_79set_max_buffer_size, METH_O, __pyx_doc_9adios_mpi_78set_max_buffer_size},
+  {"set_time_aggregation", (PyCFunction)__pyx_pw_9adios_mpi_81set_time_aggregation, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_80set_time_aggregation},
+  {"adios2npdtype", (PyCFunction)__pyx_pw_9adios_mpi_83adios2npdtype, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_82adios2npdtype},
+  {"np2adiostype", (PyCFunction)__pyx_pw_9adios_mpi_85np2adiostype, METH_O, __pyx_doc_9adios_mpi_84np2adiostype},
+  {"adiostype2string", (PyCFunction)__pyx_pw_9adios_mpi_87adiostype2string, METH_O, __pyx_doc_9adios_mpi_86adiostype2string},
+  {"read_init", (PyCFunction)__pyx_pw_9adios_mpi_89read_init, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_88read_init},
+  {"read_finalize", (PyCFunction)__pyx_pw_9adios_mpi_91read_finalize, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9adios_mpi_90read_finalize},
   {0, 0, 0, 0}
 };
 
@@ -37008,8 +40941,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1},
   {&__pyx_n_s_bpls, __pyx_k_bpls, sizeof(__pyx_k_bpls), 0, 0, 1, 1},
   {&__pyx_n_s_buffer_size, __pyx_k_buffer_size, sizeof(__pyx_k_buffer_size), 0, 0, 1, 1},
+  {&__pyx_n_s_buffersize, __pyx_k_buffersize, sizeof(__pyx_k_buffersize), 0, 0, 1, 1},
   {&__pyx_n_s_byte, __pyx_k_byte, sizeof(__pyx_k_byte), 0, 0, 1, 1},
   {&__pyx_kp_s_bytes, __pyx_k_bytes, sizeof(__pyx_k_bytes), 0, 0, 1, 0},
+  {&__pyx_n_s_cell_type, __pyx_k_cell_type, sizeof(__pyx_k_cell_type), 0, 0, 1, 1},
+  {&__pyx_n_s_centering, __pyx_k_centering, sizeof(__pyx_k_centering), 0, 0, 1, 1},
   {&__pyx_n_s_char, __pyx_k_char, sizeof(__pyx_k_char), 0, 0, 1, 1},
   {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
   {&__pyx_n_s_comm, __pyx_k_comm, sizeof(__pyx_k_comm), 0, 0, 1, 1},
@@ -37020,9 +40956,11 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_concatenate, __pyx_k_concatenate, sizeof(__pyx_k_concatenate), 0, 0, 1, 1},
   {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1},
   {&__pyx_n_s_contiguous, __pyx_k_contiguous, sizeof(__pyx_k_contiguous), 0, 0, 1, 1},
+  {&__pyx_n_s_coordinates, __pyx_k_coordinates, sizeof(__pyx_k_coordinates), 0, 0, 1, 1},
   {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
   {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
   {&__pyx_n_s_current_step, __pyx_k_current_step, sizeof(__pyx_k_current_step), 0, 0, 1, 1},
+  {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
   {&__pyx_n_s_data_size, __pyx_k_data_size, sizeof(__pyx_k_data_size), 0, 0, 1, 1},
   {&__pyx_n_s_declare_group, __pyx_k_declare_group, sizeof(__pyx_k_declare_group), 0, 0, 1, 1},
   {&__pyx_n_s_define, __pyx_k_define, sizeof(__pyx_k_define), 0, 0, 1, 1},
@@ -37062,7 +41000,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_group, __pyx_k_group, sizeof(__pyx_k_group), 0, 0, 1, 1},
   {&__pyx_n_s_group_id, __pyx_k_group_id, sizeof(__pyx_k_group_id), 0, 0, 1, 1},
   {&__pyx_n_s_group_name, __pyx_k_group_name, sizeof(__pyx_k_group_name), 0, 0, 1, 1},
+  {&__pyx_n_s_groupid, __pyx_k_groupid, sizeof(__pyx_k_groupid), 0, 0, 1, 1},
   {&__pyx_n_s_hl, __pyx_k_hl, sizeof(__pyx_k_hl), 0, 0, 1, 1},
+  {&__pyx_n_s_hyperslab, __pyx_k_hyperslab, sizeof(__pyx_k_hyperslab), 0, 0, 1, 1},
   {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
   {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
   {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
@@ -37090,6 +41030,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_long, __pyx_k_long, sizeof(__pyx_k_long), 0, 0, 1, 1},
   {&__pyx_n_s_long_double, __pyx_k_long_double, sizeof(__pyx_k_long_double), 0, 0, 1, 1},
   {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
+  {&__pyx_n_s_maximum, __pyx_k_maximum, sizeof(__pyx_k_maximum), 0, 0, 1, 1},
+  {&__pyx_n_s_meshname, __pyx_k_meshname, sizeof(__pyx_k_meshname), 0, 0, 1, 1},
   {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
   {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1},
   {&__pyx_n_s_method_name, __pyx_k_method_name, sizeof(__pyx_k_method_name), 0, 0, 1, 1},
@@ -37107,11 +41049,14 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1},
   {&__pyx_n_s_normalize_key, __pyx_k_normalize_key, sizeof(__pyx_k_normalize_key), 0, 0, 1, 1},
   {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
+  {&__pyx_n_s_npoints, __pyx_k_npoints, sizeof(__pyx_k_npoints), 0, 0, 1, 1},
+  {&__pyx_n_s_nspace, __pyx_k_nspace, sizeof(__pyx_k_nspace), 0, 0, 1, 1},
   {&__pyx_n_s_nsteps, __pyx_k_nsteps, sizeof(__pyx_k_nsteps), 0, 0, 1, 1},
   {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
   {&__pyx_n_s_nvars, __pyx_k_nvars, sizeof(__pyx_k_nvars), 0, 0, 1, 1},
   {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1},
   {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1},
+  {&__pyx_n_s_origin, __pyx_k_origin, sizeof(__pyx_k_origin), 0, 0, 1, 1},
   {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
   {&__pyx_n_s_parameters, __pyx_k_parameters, sizeof(__pyx_k_parameters), 0, 0, 1, 1},
   {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
@@ -37137,13 +41082,16 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1},
   {&__pyx_n_s_rstrip, __pyx_k_rstrip, sizeof(__pyx_k_rstrip), 0, 0, 1, 1},
   {&__pyx_n_s_scalar, __pyx_k_scalar, sizeof(__pyx_k_scalar), 0, 0, 1, 1},
+  {&__pyx_n_s_schema_version, __pyx_k_schema_version, sizeof(__pyx_k_schema_version), 0, 0, 1, 1},
   {&__pyx_n_s_sel, __pyx_k_sel, sizeof(__pyx_k_sel), 0, 0, 1, 1},
   {&__pyx_n_s_select, __pyx_k_select, sizeof(__pyx_k_select), 0, 0, 1, 1},
   {&__pyx_n_s_selections, __pyx_k_selections, sizeof(__pyx_k_selections), 0, 0, 1, 1},
+  {&__pyx_n_s_set_time_aggregation, __pyx_k_set_time_aggregation, sizeof(__pyx_k_set_time_aggregation), 0, 0, 1, 1},
   {&__pyx_n_s_setitem, __pyx_k_setitem, sizeof(__pyx_k_setitem), 0, 0, 1, 1},
   {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
   {&__pyx_n_s_short, __pyx_k_short, sizeof(__pyx_k_short), 0, 0, 1, 1},
   {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
+  {&__pyx_n_s_spacing, __pyx_k_spacing, sizeof(__pyx_k_spacing), 0, 0, 1, 1},
   {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},
   {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
   {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1},
@@ -37154,13 +41102,20 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_string_array, __pyx_k_string_array, sizeof(__pyx_k_string_array), 0, 0, 1, 1},
   {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1},
   {&__pyx_n_s_strlen, __pyx_k_strlen, sizeof(__pyx_k_strlen), 0, 0, 1, 1},
+  {&__pyx_n_s_syncgroupid, __pyx_k_syncgroupid, sizeof(__pyx_k_syncgroupid), 0, 0, 1, 1},
   {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
   {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
   {&__pyx_n_s_time_index, __pyx_k_time_index, sizeof(__pyx_k_time_index), 0, 0, 1, 1},
   {&__pyx_n_s_time_steps, __pyx_k_time_steps, sizeof(__pyx_k_time_steps), 0, 0, 1, 1},
   {&__pyx_n_s_timeout_sec, __pyx_k_timeout_sec, sizeof(__pyx_k_timeout_sec), 0, 0, 1, 1},
+  {&__pyx_n_s_timescale, __pyx_k_timescale, sizeof(__pyx_k_timescale), 0, 0, 1, 1},
+  {&__pyx_n_s_timeseries, __pyx_k_timeseries, sizeof(__pyx_k_timeseries), 0, 0, 1, 1},
+  {&__pyx_n_s_timesteps, __pyx_k_timesteps, sizeof(__pyx_k_timesteps), 0, 0, 1, 1},
+  {&__pyx_n_s_timevarying, __pyx_k_timevarying, sizeof(__pyx_k_timevarying), 0, 0, 1, 1},
   {&__pyx_n_s_tostring, __pyx_k_tostring, sizeof(__pyx_k_tostring), 0, 0, 1, 1},
   {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
+  {&__pyx_n_s_transform, __pyx_k_transform, sizeof(__pyx_k_transform), 0, 0, 1, 1},
+  {&__pyx_n_s_transform_type_str, __pyx_k_transform_type_str, sizeof(__pyx_k_transform_type_str), 0, 0, 1, 1},
   {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
   {&__pyx_n_s_uint16, __pyx_k_uint16, sizeof(__pyx_k_uint16), 0, 0, 1, 1},
   {&__pyx_n_s_uint32, __pyx_k_uint32, sizeof(__pyx_k_uint32), 0, 0, 1, 1},
@@ -37177,8 +41132,9 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
   {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
   {&__pyx_n_s_var, __pyx_k_var, sizeof(__pyx_k_var), 0, 0, 1, 1},
+  {&__pyx_n_s_var_id, __pyx_k_var_id, sizeof(__pyx_k_var_id), 0, 0, 1, 1},
   {&__pyx_n_s_var_namelist, __pyx_k_var_namelist, sizeof(__pyx_k_var_namelist), 0, 0, 1, 1},
-  {&__pyx_kp_u_var_read_line_1264, __pyx_k_var_read_line_1264, sizeof(__pyx_k_var_read_line_1264), 0, 1, 0, 0},
+  {&__pyx_kp_u_var_read_line_1456, __pyx_k_var_read_line_1456, sizeof(__pyx_k_var_read_line_1456), 0, 1, 0, 0},
   {&__pyx_n_s_varid, __pyx_k_varid, sizeof(__pyx_k_varid), 0, 0, 1, 1},
   {&__pyx_n_s_varname, __pyx_k_varname, sizeof(__pyx_k_varname), 0, 0, 1, 1},
   {&__pyx_n_s_vars, __pyx_k_vars, sizeof(__pyx_k_vars), 0, 0, 1, 1},
@@ -37187,8 +41143,8 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
   {&__pyx_n_s_when, __pyx_k_when, sizeof(__pyx_k_when), 0, 0, 1, 1},
   {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
-  {&__pyx_kp_u_writer_declare_group_line_1781, __pyx_k_writer_declare_group_line_1781, sizeof(__pyx_k_writer_declare_group_line_1781), 0, 1, 0, 0},
-  {&__pyx_kp_u_writer_define_var_line_1803, __pyx_k_writer_define_var_line_1803, sizeof(__pyx_k_writer_define_var_line_1803), 0, 1, 0, 0},
+  {&__pyx_kp_u_writer_declare_group_line_1982, __pyx_k_writer_declare_group_line_1982, sizeof(__pyx_k_writer_declare_group_line_1982), 0, 1, 0, 0},
+  {&__pyx_kp_u_writer_define_var_line_2019, __pyx_k_writer_define_var_line_2019, sizeof(__pyx_k_writer_define_var_line_2019), 0, 1, 0, 0},
   {&__pyx_n_s_xrange, __pyx_k_xrange, sizeof(__pyx_k_xrange), 0, 0, 1, 1},
   {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
   {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
@@ -37201,15 +41157,15 @@ static int __Pyx_InitCachedBuiltins(void) {
   #else
   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) __PYX_ERR(0, 71, __pyx_L1_error)
   #endif
-  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(0, 357, __pyx_L1_error)
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 593, __pyx_L1_error)
-  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 703, __pyx_L1_error)
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 707, __pyx_L1_error)
-  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 1192, __pyx_L1_error)
-  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 1199, __pyx_L1_error)
-  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 1356, __pyx_L1_error)
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1447, __pyx_L1_error)
-  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 1469, __pyx_L1_error)
+  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(0, 441, __pyx_L1_error)
+  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 785, __pyx_L1_error)
+  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 895, __pyx_L1_error)
+  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 899, __pyx_L1_error)
+  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 1384, __pyx_L1_error)
+  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) __PYX_ERR(0, 1391, __pyx_L1_error)
+  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 1548, __pyx_L1_error)
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1639, __pyx_L1_error)
+  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(0, 1661, __pyx_L1_error)
   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 218, __pyx_L1_error)
   __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(1, 799, __pyx_L1_error)
   return 0;
@@ -37243,506 +41199,495 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_slice__3);
   __Pyx_GIVEREF(__pyx_slice__3);
 
-  /* "adios_mpi.pyx":358
+  /* "adios_mpi.pyx":442
  *     for slice_ in index:
  *         if slice_ is Ellipsis:
  *             fixed.extend([slice(None)] * (ndim-length-len(fixed)+1))             # <<<<<<<<<<<<<<
  *         elif isinstance(slice_, (int, long)):
  *             fixed.append(slice(slice_, slice_+1, None))
  */
-  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 358, __pyx_L1_error)
+  __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 442, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_slice__4);
   __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "adios_mpi.pyx":369
+  /* "adios_mpi.pyx":453
  *     index = tuple(fixed)
  *     if len(index) < ndim:
  *         index += (slice(None),) * (ndim-len(index))             # <<<<<<<<<<<<<<
  * 
  *     return index
  */
-  __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __pyx_slice__5 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 453, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_slice__5);
   __Pyx_GIVEREF(__pyx_slice__5);
-  __pyx_tuple__6 = PyTuple_New(1); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __pyx_tuple__6 = PyTuple_New(1); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 453, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__6);
   __Pyx_INCREF(__pyx_slice__5);
   __Pyx_GIVEREF(__pyx_slice__5);
   PyTuple_SET_ITEM(__pyx_tuple__6, 0, __pyx_slice__5);
   __Pyx_GIVEREF(__pyx_tuple__6);
 
-  /* "adios_mpi.pyx":707
+  /* "adios_mpi.pyx":899
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 707, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__12);
-  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 899, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__13);
+  __Pyx_GIVEREF(__pyx_tuple__13);
 
-  /* "adios_mpi.pyx":709
+  /* "adios_mpi.pyx":901
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 709, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__13);
-  __Pyx_GIVEREF(__pyx_tuple__13);
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 901, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
 
-  /* "adios_mpi.pyx":710
+  /* "adios_mpi.pyx":902
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in dict.keys(self):
  */
-  __pyx_slice__14 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__14)) __PYX_ERR(0, 710, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__14);
-  __Pyx_GIVEREF(__pyx_slice__14);
+  __pyx_slice__15 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__15)) __PYX_ERR(0, 902, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__15);
+  __Pyx_GIVEREF(__pyx_slice__15);
 
-  /* "adios_mpi.pyx":822
+  /* "adios_mpi.pyx":1014
  *         assert self.fp != NULL, 'Not an open file'
  * 
  *         self.name = fname.split('/')[-1]  ## basename             # <<<<<<<<<<<<<<
  *         self.nvars = self.fp.nvars
  *         self.nattrs = self.fp.nattrs
  */
-  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 822, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__17);
-  __Pyx_GIVEREF(__pyx_tuple__17);
+  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1014, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__18);
+  __Pyx_GIVEREF(__pyx_tuple__18);
 
-  /* "adios_mpi.pyx":861
+  /* "adios_mpi.pyx":1053
  *         """ Print native ADIOS_FILE structure. """
  *         assert self.fp != NULL, 'Not an open file'
  *         print ('=== AdiosFile ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.fp))
  *         printfile(self.fp)
  */
-  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_AdiosFile); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 861, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__18);
-  __Pyx_GIVEREF(__pyx_tuple__18);
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_AdiosFile); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1053, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
 
-  /* "adios_mpi.pyx":909
+  /* "adios_mpi.pyx":1101
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 909, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__19);
-  __Pyx_GIVEREF(__pyx_tuple__19);
+  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__20);
+  __Pyx_GIVEREF(__pyx_tuple__20);
 
-  /* "adios_mpi.pyx":911
+  /* "adios_mpi.pyx":1103
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 911, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__20);
-  __Pyx_GIVEREF(__pyx_tuple__20);
+  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
 
-  /* "adios_mpi.pyx":912
+  /* "adios_mpi.pyx":1104
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-  __pyx_slice__21 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__21)) __PYX_ERR(0, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__21);
-  __Pyx_GIVEREF(__pyx_slice__21);
+  __pyx_slice__22 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) __PYX_ERR(0, 1104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__22);
+  __Pyx_GIVEREF(__pyx_slice__22);
 
-  /* "adios_mpi.pyx":986
+  /* "adios_mpi.pyx":1178
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 986, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__22);
-  __Pyx_GIVEREF(__pyx_tuple__22);
-  __pyx_slice__23 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) __PYX_ERR(0, 986, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__23);
-  __Pyx_GIVEREF(__pyx_slice__23);
+  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__23);
+  __Pyx_GIVEREF(__pyx_tuple__23);
+  __pyx_slice__24 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__24)) __PYX_ERR(0, 1178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__24);
+  __Pyx_GIVEREF(__pyx_slice__24);
 
-  /* "adios_mpi.pyx":987
+  /* "adios_mpi.pyx":1179
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 987, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__24);
-  __Pyx_GIVEREF(__pyx_tuple__24);
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 1179, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__25);
+  __Pyx_GIVEREF(__pyx_tuple__25);
 
-  /* "adios_mpi.pyx":989
+  /* "adios_mpi.pyx":1181
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 989, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__25);
-  __Pyx_GIVEREF(__pyx_tuple__25);
-  __pyx_slice__26 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) __PYX_ERR(0, 989, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__26);
-  __Pyx_GIVEREF(__pyx_slice__26);
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 1181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
+  __pyx_slice__27 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__27)) __PYX_ERR(0, 1181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__27);
+  __Pyx_GIVEREF(__pyx_slice__27);
 
-  /* "adios_mpi.pyx":990
+  /* "adios_mpi.pyx":1182
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 990, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__27);
-  __Pyx_GIVEREF(__pyx_tuple__27);
+  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__28);
+  __Pyx_GIVEREF(__pyx_tuple__28);
 
-  /* "adios_mpi.pyx":1331
+  /* "adios_mpi.pyx":1523
  *         if len(offset) == 0:
  *             npoffset = npshape.copy()
  *             npoffset.fill(0)             # <<<<<<<<<<<<<<
  *         else:
  *             npoffset = np.array(offset, dtype=np.int64)
  */
-  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1331, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__28);
-  __Pyx_GIVEREF(__pyx_tuple__28);
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1523, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
 
-  /* "adios_mpi.pyx":1342
+  /* "adios_mpi.pyx":1534
  * 
  *         if len(scalar) == 0:
  *             scalar = tuple((False,) * len(npshape))             # <<<<<<<<<<<<<<
  * 
  *         if len(npshape) != len(npoffset):
  */
-  __pyx_tuple__29 = PyTuple_New(1); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__29);
+  __pyx_tuple__30 = PyTuple_New(1); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1534, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
   __Pyx_INCREF(Py_False);
   __Pyx_GIVEREF(Py_False);
-  PyTuple_SET_ITEM(__pyx_tuple__29, 0, Py_False);
-  __Pyx_GIVEREF(__pyx_tuple__29);
+  PyTuple_SET_ITEM(__pyx_tuple__30, 0, Py_False);
+  __Pyx_GIVEREF(__pyx_tuple__30);
 
-  /* "adios_mpi.pyx":1354
+  /* "adios_mpi.pyx":1546
  * 
  *         if (npshape < npcount + npoffset).any():
  *             raise IndexError('Requested is larger than the shape.')             # <<<<<<<<<<<<<<
  * 
  *         shape = [x for x, y in zip(npcount, scalar) if not y]
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Requested_is_larger_than_the_sha); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1354, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__30);
-  __Pyx_GIVEREF(__pyx_tuple__30);
+  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Requested_is_larger_than_the_sha); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 1546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__31);
+  __Pyx_GIVEREF(__pyx_tuple__31);
 
-  /* "adios_mpi.pyx":1362
+  /* "adios_mpi.pyx":1554
  * 
  *         if len(shape) > 0:
  *             var[:] = fill             # <<<<<<<<<<<<<<
  * 
  *         cdef ADIOS_SELECTION * sel
  */
-  __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) __PYX_ERR(0, 1362, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__31);
-  __Pyx_GIVEREF(__pyx_slice__31);
+  __pyx_slice__32 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__32)) __PYX_ERR(0, 1554, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__32);
+  __Pyx_GIVEREF(__pyx_slice__32);
 
-  /* "adios_mpi.pyx":1382
+  /* "adios_mpi.pyx":1574
  *         """ Print native ADIOS_VARINFO structure. """
  *         assert self.vp != NULL, 'Not an open variable'
  *         print ('=== AdiosVariable ===')             # <<<<<<<<<<<<<<
  *         print ('%15s : %lu' % ('vp', <unsigned long> self.vp))
  *         print ('%15s : %lu' % ('fp', <unsigned long> self.file.fp))
  */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_AdiosVariable); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1382, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__32);
-  __Pyx_GIVEREF(__pyx_tuple__32);
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_AdiosVariable); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 1574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
 
-  /* "adios_mpi.pyx":1406
+  /* "adios_mpi.pyx":1598
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 1406, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__33);
-  __Pyx_GIVEREF(__pyx_tuple__33);
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1598, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__34);
+  __Pyx_GIVEREF(__pyx_tuple__34);
 
-  /* "adios_mpi.pyx":1408
+  /* "adios_mpi.pyx":1600
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1408, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__34);
-  __Pyx_GIVEREF(__pyx_tuple__34);
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 1600, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__35);
+  __Pyx_GIVEREF(__pyx_tuple__35);
 
-  /* "adios_mpi.pyx":1409
+  /* "adios_mpi.pyx":1601
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.attrs.keys():
  */
-  __pyx_slice__35 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__35)) __PYX_ERR(0, 1409, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__35);
-  __Pyx_GIVEREF(__pyx_slice__35);
+  __pyx_slice__36 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) __PYX_ERR(0, 1601, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__36);
+  __Pyx_GIVEREF(__pyx_slice__36);
 
-  /* "adios_mpi.pyx":1430
+  /* "adios_mpi.pyx":1622
  *         if isinstance(asel, sel.SimpleSelection):
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],             # <<<<<<<<<<<<<<
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],
  */
-  __pyx_slice__36 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) __PYX_ERR(0, 1430, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__36);
-  __Pyx_GIVEREF(__pyx_slice__36);
+  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 1622, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__37);
+  __Pyx_GIVEREF(__pyx_slice__37);
 
-  /* "adios_mpi.pyx":1431
+  /* "adios_mpi.pyx":1623
  *             if (self.nsteps) > 1:
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],             # <<<<<<<<<<<<<<
  *                                  scalar=asel.sel[3][1:],
  *                                  from_steps=asel.sel[0][0],
  */
-  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(0, 1431, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__37);
-  __Pyx_GIVEREF(__pyx_slice__37);
+  __pyx_slice__38 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__38)) __PYX_ERR(0, 1623, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__38);
+  __Pyx_GIVEREF(__pyx_slice__38);
 
-  /* "adios_mpi.pyx":1432
+  /* "adios_mpi.pyx":1624
  *                 return self.read(offset=asel.sel[0][1:],
  *                                  count=asel.sel[1][1:],
  *                                  scalar=asel.sel[3][1:],             # <<<<<<<<<<<<<<
  *                                  from_steps=asel.sel[0][0],
  *                                  nsteps=asel.sel[1][0],
  */
-  __pyx_slice__38 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__38)) __PYX_ERR(0, 1432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__38);
-  __Pyx_GIVEREF(__pyx_slice__38);
+  __pyx_slice__39 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 1624, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__39);
+  __Pyx_GIVEREF(__pyx_slice__39);
 
-  /* "adios_mpi.pyx":1449
+  /* "adios_mpi.pyx":1641
  *             for idx, obj in enumerate(asel.sel):
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],             # <<<<<<<<<<<<<<
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],
  */
-  __pyx_slice__39 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 1449, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__39);
-  __Pyx_GIVEREF(__pyx_slice__39);
+  __pyx_slice__40 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(0, 1641, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__40);
+  __Pyx_GIVEREF(__pyx_slice__40);
 
-  /* "adios_mpi.pyx":1450
+  /* "adios_mpi.pyx":1642
  *                 if (self.nsteps) > 1:
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],             # <<<<<<<<<<<<<<
  *                                   scalar=obj[3][1:],
  *                                   from_steps=obj[0][0],
  */
-  __pyx_slice__40 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__40)) __PYX_ERR(0, 1450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__40);
-  __Pyx_GIVEREF(__pyx_slice__40);
+  __pyx_slice__41 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(0, 1642, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__41);
+  __Pyx_GIVEREF(__pyx_slice__41);
 
-  /* "adios_mpi.pyx":1451
+  /* "adios_mpi.pyx":1643
  *                     v = self.read(offset=obj[0][1:],
  *                                   count=obj[1][1:],
  *                                   scalar=obj[3][1:],             # <<<<<<<<<<<<<<
  *                                   from_steps=obj[0][0],
  *                                   nsteps=obj[1][0],
  */
-  __pyx_slice__41 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__41)) __PYX_ERR(0, 1451, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__41);
-  __Pyx_GIVEREF(__pyx_slice__41);
+  __pyx_slice__42 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) __PYX_ERR(0, 1643, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__42);
+  __Pyx_GIVEREF(__pyx_slice__42);
 
-  /* "adios_mpi.pyx":1469
+  /* "adios_mpi.pyx":1661
  * 
  *         else:
  *             raise NotImplementedError("Not implemented yet")             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, args):
  */
-  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_Not_implemented_yet); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1469, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__42);
-  __Pyx_GIVEREF(__pyx_tuple__42);
+  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_Not_implemented_yet); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1661, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__43);
+  __Pyx_GIVEREF(__pyx_tuple__43);
 
-  /* "adios_mpi.pyx":1595
+  /* "adios_mpi.pyx":1787
  *     def __init__(self, file file, str name):
  *         self.file = file
  *         self.name = name.rstrip('/')             # <<<<<<<<<<<<<<
  * 
  *         self.vars = softdict()
  */
-  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 1595, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__43);
-  __Pyx_GIVEREF(__pyx_tuple__43);
+  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1787, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__44);
+  __Pyx_GIVEREF(__pyx_tuple__44);
 
-  /* "adios_mpi.pyx":1630
+  /* "adios_mpi.pyx":1822
  *         for key_ in varname:
  *             if not isinstance(key_, str):
  *                 raise TypeError("Unhashable type")             # <<<<<<<<<<<<<<
  * 
  *             if key_.startswith('/'):
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1630, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__44);
-  __Pyx_GIVEREF(__pyx_tuple__44);
+  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_Unhashable_type); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1822, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__45);
+  __Pyx_GIVEREF(__pyx_tuple__45);
 
-  /* "adios_mpi.pyx":1632
+  /* "adios_mpi.pyx":1824
  *                 raise TypeError("Unhashable type")
  * 
  *             if key_.startswith('/'):             # <<<<<<<<<<<<<<
  *                 key_ = key_[1:]
  * 
  */
-  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1632, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__45);
-  __Pyx_GIVEREF(__pyx_tuple__45);
+  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 1824, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__46);
+  __Pyx_GIVEREF(__pyx_tuple__46);
 
-  /* "adios_mpi.pyx":1633
+  /* "adios_mpi.pyx":1825
  * 
  *             if key_.startswith('/'):
  *                 key_ = key_[1:]             # <<<<<<<<<<<<<<
  * 
  *             if key_ in self.vars.keys():
  */
-  __pyx_slice__46 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__46)) __PYX_ERR(0, 1633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__46);
-  __Pyx_GIVEREF(__pyx_slice__46);
+  __pyx_slice__47 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__47)) __PYX_ERR(0, 1825, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__47);
+  __Pyx_GIVEREF(__pyx_slice__47);
 
-  /* "adios_mpi.pyx":1683
+  /* "adios_mpi.pyx":1875
  *         s = set()
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  */
-  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 1683, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__47);
-  __Pyx_GIVEREF(__pyx_tuple__47);
-  __pyx_slice__48 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__48)) __PYX_ERR(0, 1683, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__48);
-  __Pyx_GIVEREF(__pyx_slice__48);
+  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 1875, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__48);
+  __Pyx_GIVEREF(__pyx_tuple__48);
+  __pyx_slice__49 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__49)) __PYX_ERR(0, 1875, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__49);
+  __Pyx_GIVEREF(__pyx_slice__49);
 
-  /* "adios_mpi.pyx":1684
+  /* "adios_mpi.pyx":1876
  *         for k in self.vars.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  */
-  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 1684, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__49);
-  __Pyx_GIVEREF(__pyx_tuple__49);
+  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1876, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__50);
+  __Pyx_GIVEREF(__pyx_tuple__50);
 
-  /* "adios_mpi.pyx":1686
+  /* "adios_mpi.pyx":1878
  *             s.add(os.path.dirname(k).split('/')[0])
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]             # <<<<<<<<<<<<<<
  *             s.add(os.path.dirname(k).split('/')[0])
  *         return list(s-set(['']))
  */
-  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__50);
-  __Pyx_GIVEREF(__pyx_tuple__50);
-  __pyx_slice__51 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__51)) __PYX_ERR(0, 1686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__51);
-  __Pyx_GIVEREF(__pyx_slice__51);
+  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 1878, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__51);
+  __Pyx_GIVEREF(__pyx_tuple__51);
+  __pyx_slice__52 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__52)) __PYX_ERR(0, 1878, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__52);
+  __Pyx_GIVEREF(__pyx_slice__52);
 
-  /* "adios_mpi.pyx":1687
+  /* "adios_mpi.pyx":1879
  *         for k in self.attrs.keys():
  *             if k.startswith('/'): k = k[1:]
  *             s.add(os.path.dirname(k).split('/')[0])             # <<<<<<<<<<<<<<
  *         return list(s-set(['']))
  * 
  */
-  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 1687, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__52);
-  __Pyx_GIVEREF(__pyx_tuple__52);
-
-  /* "adios_mpi.pyx":1860
- *         """
- *         if self.gname is None:
- *             self.declare_group("group")             # <<<<<<<<<<<<<<
- * 
- *         fd = open(self.gname, self.fname, self.mode)
- */
-  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_n_s_group); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 1860, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__57);
-  __Pyx_GIVEREF(__pyx_tuple__57);
+  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 1879, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__53);
+  __Pyx_GIVEREF(__pyx_tuple__53);
 
-  /* "adios_mpi.pyx":1958
+  /* "adios_mpi.pyx":2186
  *         if self.is_static:
  *             if self.value is None:
  *                 raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *             define_attribute_byvalue(gid, self.name, "", self.value)
  */
-  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 1958, __pyx_L1_error)
+  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 2186, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__58);
   __Pyx_GIVEREF(__pyx_tuple__58);
 
-  /* "adios_mpi.pyx":1994
+  /* "adios_mpi.pyx":2232
  *     def define(self, int64_t gid):
  *         if self.value is None:
  *             raise TypeError("Value is none")             # <<<<<<<<<<<<<<
  * 
  *         ldim_ = self.ldim
  */
-  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 1994, __pyx_L1_error)
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Value_is_none); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 2232, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__62);
   __Pyx_GIVEREF(__pyx_tuple__62);
 
-  /* "adios_mpi.pyx":2015
- *         ## No space allowed
- *         define_var(gid, self.name, "", atype,
+  /* "adios_mpi.pyx":2254
+ *         cdef int64_t varid = 0;
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))
  */
-  __pyx_tuple__64 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_tuple__64 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__64);
   __Pyx_GIVEREF(__pyx_tuple__64);
-  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 2015, __pyx_L1_error)
+  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 2254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__66);
   __Pyx_GIVEREF(__pyx_tuple__66);
 
-  /* "adios_mpi.pyx":2016
- *         define_var(gid, self.name, "", atype,
+  /* "adios_mpi.pyx":2255
+ *         varid = define_var(gid, self.name, "", atype,
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),             # <<<<<<<<<<<<<<
  *                    str(offset_).replace(' ', '').strip('(,)'))
  * 
  */
-  __pyx_tuple__67 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_tuple__67 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__67);
   __Pyx_GIVEREF(__pyx_tuple__67);
-  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 2016, __pyx_L1_error)
+  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 2255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__68);
   __Pyx_GIVEREF(__pyx_tuple__68);
 
-  /* "adios_mpi.pyx":2017
+  /* "adios_mpi.pyx":2256
  *                    str(ldim_).replace(' ', '').strip('(,)'),
  *                    str(gdim_).replace(' ', '').strip('(,)'),
  *                    str(offset_).replace(' ', '').strip('(,)'))             # <<<<<<<<<<<<<<
  * 
- *     def bytes(self):
+ *         if (self.transform is not None):
  */
-  __pyx_tuple__69 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_tuple__69 = PyTuple_Pack(2, __pyx_kp_s__63, __pyx_kp_s__10); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__69);
   __Pyx_GIVEREF(__pyx_tuple__69);
-  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 2017, __pyx_L1_error)
+  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s__65); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 2256, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__70);
   __Pyx_GIVEREF(__pyx_tuple__70);
 
@@ -37824,29 +41769,29 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__78);
   __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_normalize_key, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(0, 58, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2049
+  /* "adios_mpi.pyx":2291
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_tuple__80 = PyTuple_Pack(4, __pyx_n_s_fname, __pyx_n_s_varname, __pyx_n_s_f, __pyx_n_s_v); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 2049, __pyx_L1_error)
+  __pyx_tuple__80 = PyTuple_Pack(4, __pyx_n_s_fname, __pyx_n_s_varname, __pyx_n_s_f, __pyx_n_s_v); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 2291, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__80);
   __Pyx_GIVEREF(__pyx_tuple__80);
-  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_readvar_2, 2049, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 2049, __pyx_L1_error)
+  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_readvar_2, 2291, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(0, 2291, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2063
+  /* "adios_mpi.pyx":2305
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
  *     """ Return meta data of an Adios file as a Python dictionary object.
  * 
  */
-  __pyx_tuple__82 = PyTuple_Pack(3, __pyx_n_s_fname, __pyx_n_s_f, __pyx_n_s_k); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 2063, __pyx_L1_error)
+  __pyx_tuple__82 = PyTuple_Pack(3, __pyx_n_s_fname, __pyx_n_s_f, __pyx_n_s_k); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 2305, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__82);
   __Pyx_GIVEREF(__pyx_tuple__82);
-  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_bpls, 2063, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 2063, __pyx_L1_error)
+  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jyc_project_adios_devel_w, __pyx_n_s_bpls, 2305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 2305, __pyx_L1_error)
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -37968,9 +41913,9 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   /*--- Function export code ---*/
   /*--- Type init code ---*/
   __pyx_type_9adios_mpi_softdict.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_9adios_mpi_softdict) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_softdict) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
   __pyx_type_9adios_mpi_softdict.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "softdict", (PyObject *)&__pyx_type_9adios_mpi_softdict) < 0) __PYX_ERR(0, 697, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "softdict", (PyObject *)&__pyx_type_9adios_mpi_softdict) < 0) __PYX_ERR(0, 889, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_softdict = &__pyx_type_9adios_mpi_softdict;
   __pyx_vtabptr_9adios_mpi_file = &__pyx_vtable_9adios_mpi_file;
   __pyx_vtable_9adios_mpi_file.close = (PyObject *(*)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch))__pyx_f_9adios_mpi_4file_close;
@@ -37978,11 +41923,11 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   __pyx_vtable_9adios_mpi_file.release_step = (PyObject *(*)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch))__pyx_f_9adios_mpi_4file_release_step;
   __pyx_vtable_9adios_mpi_file.advance = (PyObject *(*)(struct __pyx_obj_9adios_mpi_file *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_4file_advance *__pyx_optional_args))__pyx_f_9adios_mpi_4file_advance;
   __pyx_type_9adios_mpi_file.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_9adios_mpi_file) < 0) __PYX_ERR(0, 721, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_file) < 0) __PYX_ERR(0, 913, __pyx_L1_error)
   __pyx_type_9adios_mpi_file.tp_print = 0;
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 721, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 913, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_9adios_mpi_4file_16__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_9adios_mpi_4file_16__getitem__.doc = __pyx_doc_9adios_mpi_4file_16__getitem__;
@@ -37992,7 +41937,7 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 721, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_file, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 913, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_9adios_mpi_4file_18__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_9adios_mpi_4file_18__repr__.doc = __pyx_doc_9adios_mpi_4file_18__repr__;
@@ -38000,12 +41945,12 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
     }
   }
   #endif
-  if (__Pyx_SetVtable(__pyx_type_9adios_mpi_file.tp_dict, __pyx_vtabptr_9adios_mpi_file) < 0) __PYX_ERR(0, 721, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "file", (PyObject *)&__pyx_type_9adios_mpi_file) < 0) __PYX_ERR(0, 721, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_9adios_mpi_file.tp_dict, __pyx_vtabptr_9adios_mpi_file) < 0) __PYX_ERR(0, 913, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "file", (PyObject *)&__pyx_type_9adios_mpi_file) < 0) __PYX_ERR(0, 913, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_file = &__pyx_type_9adios_mpi_file;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_blockinfo) < 0) __PYX_ERR(0, 993, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_blockinfo) < 0) __PYX_ERR(0, 1185, __pyx_L1_error)
   __pyx_type_9adios_mpi_blockinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "blockinfo", (PyObject *)&__pyx_type_9adios_mpi_blockinfo) < 0) __PYX_ERR(0, 993, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "blockinfo", (PyObject *)&__pyx_type_9adios_mpi_blockinfo) < 0) __PYX_ERR(0, 1185, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_blockinfo = &__pyx_type_9adios_mpi_blockinfo;
   __pyx_vtabptr_9adios_mpi_var = &__pyx_vtable_9adios_mpi_var;
   __pyx_vtable_9adios_mpi_var.close = (PyObject *(*)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch))__pyx_f_9adios_mpi_3var_close;
@@ -38015,21 +41960,21 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   __pyx_vtable_9adios_mpi_var.read = (PyObject *(*)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch, struct __pyx_opt_args_9adios_mpi_3var_read *__pyx_optional_args))__pyx_f_9adios_mpi_3var_read;
   __pyx_vtable_9adios_mpi_var.printself = (PyObject *(*)(struct __pyx_obj_9adios_mpi_var *, int __pyx_skip_dispatch))__pyx_f_9adios_mpi_3var_printself;
   __pyx_type_9adios_mpi_var.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_9adios_mpi_var) < 0) __PYX_ERR(0, 1028, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_var) < 0) __PYX_ERR(0, 1220, __pyx_L1_error)
   __pyx_type_9adios_mpi_var.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_9adios_mpi_var.tp_dict, __pyx_vtabptr_9adios_mpi_var) < 0) __PYX_ERR(0, 1028, __pyx_L1_error)
-  if (PyObject_SetAttrString(__pyx_m, "var", (PyObject *)&__pyx_type_9adios_mpi_var) < 0) __PYX_ERR(0, 1028, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_9adios_mpi_var.tp_dict, __pyx_vtabptr_9adios_mpi_var) < 0) __PYX_ERR(0, 1220, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "var", (PyObject *)&__pyx_type_9adios_mpi_var) < 0) __PYX_ERR(0, 1220, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_var = &__pyx_type_9adios_mpi_var;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_attr) < 0) __PYX_ERR(0, 1493, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_attr) < 0) __PYX_ERR(0, 1685, __pyx_L1_error)
   __pyx_type_9adios_mpi_attr.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_9adios_mpi_attr) < 0) __PYX_ERR(0, 1493, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "attr", (PyObject *)&__pyx_type_9adios_mpi_attr) < 0) __PYX_ERR(0, 1685, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_attr = &__pyx_type_9adios_mpi_attr;
   __pyx_type_9adios_mpi_group.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_9adios_mpi_group) < 0) __PYX_ERR(0, 1579, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_group) < 0) __PYX_ERR(0, 1771, __pyx_L1_error)
   __pyx_type_9adios_mpi_group.tp_print = 0;
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_group, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1579, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_group, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1771, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_9adios_mpi_5group_2__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_9adios_mpi_5group_2__getitem__.doc = __pyx_doc_9adios_mpi_5group_2__getitem__;
@@ -38039,7 +41984,7 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_group, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1579, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_9adios_mpi_group, "__repr__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1771, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_9adios_mpi_5group_4__repr__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_9adios_mpi_5group_4__repr__.doc = __pyx_doc_9adios_mpi_5group_4__repr__;
@@ -38047,24 +41992,24 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
     }
   }
   #endif
-  if (PyObject_SetAttrString(__pyx_m, "group", (PyObject *)&__pyx_type_9adios_mpi_group) < 0) __PYX_ERR(0, 1579, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "group", (PyObject *)&__pyx_type_9adios_mpi_group) < 0) __PYX_ERR(0, 1771, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_group = &__pyx_type_9adios_mpi_group;
   __pyx_type_9adios_mpi_smartdict.tp_base = (&PyDict_Type);
-  if (PyType_Ready(&__pyx_type_9adios_mpi_smartdict) < 0) __PYX_ERR(0, 1691, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_smartdict) < 0) __PYX_ERR(0, 1883, __pyx_L1_error)
   __pyx_type_9adios_mpi_smartdict.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_9adios_mpi_smartdict) < 0) __PYX_ERR(0, 1691, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "smartdict", (PyObject *)&__pyx_type_9adios_mpi_smartdict) < 0) __PYX_ERR(0, 1883, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_smartdict = &__pyx_type_9adios_mpi_smartdict;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_writer) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_writer) < 0) __PYX_ERR(0, 1895, __pyx_L1_error)
   __pyx_type_9adios_mpi_writer.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_9adios_mpi_writer) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "writer", (PyObject *)&__pyx_type_9adios_mpi_writer) < 0) __PYX_ERR(0, 1895, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_writer = &__pyx_type_9adios_mpi_writer;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_attrinfo) < 0) __PYX_ERR(0, 1921, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_attrinfo) < 0) __PYX_ERR(0, 2149, __pyx_L1_error)
   __pyx_type_9adios_mpi_attrinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_9adios_mpi_attrinfo) < 0) __PYX_ERR(0, 1921, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "attrinfo", (PyObject *)&__pyx_type_9adios_mpi_attrinfo) < 0) __PYX_ERR(0, 2149, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_attrinfo = &__pyx_type_9adios_mpi_attrinfo;
-  if (PyType_Ready(&__pyx_type_9adios_mpi_varinfo) < 0) __PYX_ERR(0, 1974, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_9adios_mpi_varinfo) < 0) __PYX_ERR(0, 2202, __pyx_L1_error)
   __pyx_type_9adios_mpi_varinfo.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_9adios_mpi_varinfo) < 0) __PYX_ERR(0, 1974, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "varinfo", (PyObject *)&__pyx_type_9adios_mpi_varinfo) < 0) __PYX_ERR(0, 2202, __pyx_L1_error)
   __pyx_ptype_9adios_mpi_varinfo = &__pyx_type_9adios_mpi_varinfo;
   /*--- Type import code ---*/
   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
@@ -38180,733 +42125,751 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize_key, __pyx_t_1) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":307
+  /* "adios_mpi.pyx":391
  * ## ====================
  * 
  * class DATATYPE:             # <<<<<<<<<<<<<<
  *     unknown = -1
  *     byte = 0
  */
-  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DATATYPE, __pyx_n_s_DATATYPE, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_DATATYPE, __pyx_n_s_DATATYPE, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":308
+  /* "adios_mpi.pyx":392
  * 
  * class DATATYPE:
  *     unknown = -1             # <<<<<<<<<<<<<<
  *     byte = 0
  *     short = 1
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) __PYX_ERR(0, 308, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unknown, __pyx_int_neg_1) < 0) __PYX_ERR(0, 392, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":309
+  /* "adios_mpi.pyx":393
  * class DATATYPE:
  *     unknown = -1
  *     byte = 0             # <<<<<<<<<<<<<<
  *     short = 1
  *     integer = 2
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_byte, __pyx_int_0) < 0) __PYX_ERR(0, 309, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_byte, __pyx_int_0) < 0) __PYX_ERR(0, 393, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":310
+  /* "adios_mpi.pyx":394
  *     unknown = -1
  *     byte = 0
  *     short = 1             # <<<<<<<<<<<<<<
  *     integer = 2
  *     long = 4
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_short, __pyx_int_1) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_short, __pyx_int_1) < 0) __PYX_ERR(0, 394, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":311
+  /* "adios_mpi.pyx":395
  *     byte = 0
  *     short = 1
  *     integer = 2             # <<<<<<<<<<<<<<
  *     long = 4
  *     unsigned_byte = 50
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_integer, __pyx_int_2) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_integer, __pyx_int_2) < 0) __PYX_ERR(0, 395, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":312
+  /* "adios_mpi.pyx":396
  *     short = 1
  *     integer = 2
  *     long = 4             # <<<<<<<<<<<<<<
  *     unsigned_byte = 50
  *     unsigned_short = 51
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_long, __pyx_int_4) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_long, __pyx_int_4) < 0) __PYX_ERR(0, 396, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":313
+  /* "adios_mpi.pyx":397
  *     integer = 2
  *     long = 4
  *     unsigned_byte = 50             # <<<<<<<<<<<<<<
  *     unsigned_short = 51
  *     unsigned_integer = 52
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_byte, __pyx_int_50) < 0) __PYX_ERR(0, 313, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_byte, __pyx_int_50) < 0) __PYX_ERR(0, 397, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":314
+  /* "adios_mpi.pyx":398
  *     long = 4
  *     unsigned_byte = 50
  *     unsigned_short = 51             # <<<<<<<<<<<<<<
  *     unsigned_integer = 52
  *     unsigned_long = 54
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_short, __pyx_int_51) < 0) __PYX_ERR(0, 314, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_short, __pyx_int_51) < 0) __PYX_ERR(0, 398, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":315
+  /* "adios_mpi.pyx":399
  *     unsigned_byte = 50
  *     unsigned_short = 51
  *     unsigned_integer = 52             # <<<<<<<<<<<<<<
  *     unsigned_long = 54
  *     real = 5
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_integer, __pyx_int_52) < 0) __PYX_ERR(0, 315, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_integer, __pyx_int_52) < 0) __PYX_ERR(0, 399, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":316
+  /* "adios_mpi.pyx":400
  *     unsigned_short = 51
  *     unsigned_integer = 52
  *     unsigned_long = 54             # <<<<<<<<<<<<<<
  *     real = 5
  *     double = 6
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_long, __pyx_int_54) < 0) __PYX_ERR(0, 316, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_unsigned_long, __pyx_int_54) < 0) __PYX_ERR(0, 400, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":317
+  /* "adios_mpi.pyx":401
  *     unsigned_integer = 52
  *     unsigned_long = 54
  *     real = 5             # <<<<<<<<<<<<<<
  *     double = 6
  *     long_double = 7
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_real, __pyx_int_5) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_real, __pyx_int_5) < 0) __PYX_ERR(0, 401, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":318
+  /* "adios_mpi.pyx":402
  *     unsigned_long = 54
  *     real = 5
  *     double = 6             # <<<<<<<<<<<<<<
  *     long_double = 7
  *     string = 9
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_int_6) < 0) __PYX_ERR(0, 318, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_int_6) < 0) __PYX_ERR(0, 402, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":319
+  /* "adios_mpi.pyx":403
  *     real = 5
  *     double = 6
  *     long_double = 7             # <<<<<<<<<<<<<<
  *     string = 9
  *     complex = 10
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_long_double, __pyx_int_7) < 0) __PYX_ERR(0, 319, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_long_double, __pyx_int_7) < 0) __PYX_ERR(0, 403, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":320
+  /* "adios_mpi.pyx":404
  *     double = 6
  *     long_double = 7
  *     string = 9             # <<<<<<<<<<<<<<
  *     complex = 10
  *     double_complex = 11
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_string, __pyx_int_9) < 0) __PYX_ERR(0, 320, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_string, __pyx_int_9) < 0) __PYX_ERR(0, 404, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":321
+  /* "adios_mpi.pyx":405
  *     long_double = 7
  *     string = 9
  *     complex = 10             # <<<<<<<<<<<<<<
  *     double_complex = 11
  *     string_array = 12
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_complex_2, __pyx_int_10) < 0) __PYX_ERR(0, 321, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_complex_2, __pyx_int_10) < 0) __PYX_ERR(0, 405, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":322
+  /* "adios_mpi.pyx":406
  *     string = 9
  *     complex = 10
  *     double_complex = 11             # <<<<<<<<<<<<<<
  *     string_array = 12
  * 
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_double_complex, __pyx_int_11) < 0) __PYX_ERR(0, 322, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_double_complex, __pyx_int_11) < 0) __PYX_ERR(0, 406, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":323
+  /* "adios_mpi.pyx":407
  *     complex = 10
  *     double_complex = 11
  *     string_array = 12             # <<<<<<<<<<<<<<
  * 
  * class FLAG:
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_string_array, __pyx_int_12) < 0) __PYX_ERR(0, 323, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_string_array, __pyx_int_12) < 0) __PYX_ERR(0, 407, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":307
+  /* "adios_mpi.pyx":391
  * ## ====================
  * 
  * class DATATYPE:             # <<<<<<<<<<<<<<
  *     unknown = -1
  *     byte = 0
  */
-  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_DATATYPE, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_DATATYPE, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 391, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_2) < 0) __PYX_ERR(0, 307, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE, __pyx_t_2) < 0) __PYX_ERR(0, 391, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":325
+  /* "adios_mpi.pyx":409
  *     string_array = 12
  * 
  * class FLAG:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     YES = 1
  */
-  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_FLAG, __pyx_n_s_FLAG, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_FLAG, __pyx_n_s_FLAG, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":326
+  /* "adios_mpi.pyx":410
  * 
  * class FLAG:
  *     UNKNOWN = 0             # <<<<<<<<<<<<<<
  *     YES = 1
  *     NO = 2
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 326, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 410, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":327
+  /* "adios_mpi.pyx":411
  * class FLAG:
  *     UNKNOWN = 0
  *     YES = 1             # <<<<<<<<<<<<<<
  *     NO = 2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_YES, __pyx_int_1) < 0) __PYX_ERR(0, 327, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_YES, __pyx_int_1) < 0) __PYX_ERR(0, 411, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":328
+  /* "adios_mpi.pyx":412
  *     UNKNOWN = 0
  *     YES = 1
  *     NO = 2             # <<<<<<<<<<<<<<
  * 
  * class BUFFER_ALLOC_WHEN:
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NO, __pyx_int_2) < 0) __PYX_ERR(0, 328, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NO, __pyx_int_2) < 0) __PYX_ERR(0, 412, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":325
+  /* "adios_mpi.pyx":409
  *     string_array = 12
  * 
  * class FLAG:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     YES = 1
  */
-  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_FLAG, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 325, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_FLAG, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_2) < 0) __PYX_ERR(0, 325, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLAG, __pyx_t_2) < 0) __PYX_ERR(0, 409, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":330
+  /* "adios_mpi.pyx":414
  *     NO = 2
  * 
  * class BUFFER_ALLOC_WHEN:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     NOW = 1
  */
-  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_n_s_BUFFER_ALLOC_WHEN, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_n_s_BUFFER_ALLOC_WHEN, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 414, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":331
+  /* "adios_mpi.pyx":415
  * 
  * class BUFFER_ALLOC_WHEN:
  *     UNKNOWN = 0             # <<<<<<<<<<<<<<
  *     NOW = 1
  *     LATER = 2
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 331, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_UNKNOWN, __pyx_int_0) < 0) __PYX_ERR(0, 415, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":332
+  /* "adios_mpi.pyx":416
  * class BUFFER_ALLOC_WHEN:
  *     UNKNOWN = 0
  *     NOW = 1             # <<<<<<<<<<<<<<
  *     LATER = 2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NOW, __pyx_int_1) < 0) __PYX_ERR(0, 332, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NOW, __pyx_int_1) < 0) __PYX_ERR(0, 416, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":333
+  /* "adios_mpi.pyx":417
  *     UNKNOWN = 0
  *     NOW = 1
  *     LATER = 2             # <<<<<<<<<<<<<<
  * 
  * class READ_METHOD:
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_LATER, __pyx_int_2) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_LATER, __pyx_int_2) < 0) __PYX_ERR(0, 417, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":330
+  /* "adios_mpi.pyx":414
  *     NO = 2
  * 
  * class BUFFER_ALLOC_WHEN:             # <<<<<<<<<<<<<<
  *     UNKNOWN = 0
  *     NOW = 1
  */
-  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 414, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_2) < 0) __PYX_ERR(0, 330, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_ALLOC_WHEN, __pyx_t_2) < 0) __PYX_ERR(0, 414, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":335
+  /* "adios_mpi.pyx":419
  *     LATER = 2
  * 
  * class READ_METHOD:             # <<<<<<<<<<<<<<
  *     BP            = 0
  *     BP_AGGREGATE  = 1
  */
-  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_READ_METHOD, __pyx_n_s_READ_METHOD, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_READ_METHOD, __pyx_n_s_READ_METHOD, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":336
+  /* "adios_mpi.pyx":420
  * 
  * class READ_METHOD:
  *     BP            = 0             # <<<<<<<<<<<<<<
  *     BP_AGGREGATE  = 1
  *     DATASPACES    = 3
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_BP, __pyx_int_0) < 0) __PYX_ERR(0, 336, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_BP, __pyx_int_0) < 0) __PYX_ERR(0, 420, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":337
+  /* "adios_mpi.pyx":421
  * class READ_METHOD:
  *     BP            = 0
  *     BP_AGGREGATE  = 1             # <<<<<<<<<<<<<<
  *     DATASPACES    = 3
  *     DIMES         = 4
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_BP_AGGREGATE, __pyx_int_1) < 0) __PYX_ERR(0, 337, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_BP_AGGREGATE, __pyx_int_1) < 0) __PYX_ERR(0, 421, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":338
+  /* "adios_mpi.pyx":422
  *     BP            = 0
  *     BP_AGGREGATE  = 1
  *     DATASPACES    = 3             # <<<<<<<<<<<<<<
  *     DIMES         = 4
  *     FLEXPATH      = 5
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_DATASPACES, __pyx_int_3) < 0) __PYX_ERR(0, 338, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_DATASPACES, __pyx_int_3) < 0) __PYX_ERR(0, 422, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":339
+  /* "adios_mpi.pyx":423
  *     BP_AGGREGATE  = 1
  *     DATASPACES    = 3
  *     DIMES         = 4             # <<<<<<<<<<<<<<
  *     FLEXPATH      = 5
  *     ICEE          = 6
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_DIMES, __pyx_int_4) < 0) __PYX_ERR(0, 339, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_DIMES, __pyx_int_4) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":340
+  /* "adios_mpi.pyx":424
  *     DATASPACES    = 3
  *     DIMES         = 4
  *     FLEXPATH      = 5             # <<<<<<<<<<<<<<
  *     ICEE          = 6
  * 
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) __PYX_ERR(0, 340, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_FLEXPATH, __pyx_int_5) < 0) __PYX_ERR(0, 424, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":341
+  /* "adios_mpi.pyx":425
  *     DIMES         = 4
  *     FLEXPATH      = 5
  *     ICEE          = 6             # <<<<<<<<<<<<<<
  * 
  * class LOCKMODE:
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ICEE, __pyx_int_6) < 0) __PYX_ERR(0, 341, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ICEE, __pyx_int_6) < 0) __PYX_ERR(0, 425, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":335
+  /* "adios_mpi.pyx":419
  *     LATER = 2
  * 
  * class READ_METHOD:             # <<<<<<<<<<<<<<
  *     BP            = 0
  *     BP_AGGREGATE  = 1
  */
-  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_READ_METHOD, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_READ_METHOD, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 419, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ_METHOD, __pyx_t_2) < 0) __PYX_ERR(0, 335, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READ_METHOD, __pyx_t_2) < 0) __PYX_ERR(0, 419, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":343
+  /* "adios_mpi.pyx":427
  *     ICEE          = 6
  * 
  * class LOCKMODE:             # <<<<<<<<<<<<<<
  *     NONE = 0
  *     CURRENT = 1
  */
-  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LOCKMODE, __pyx_n_s_LOCKMODE, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LOCKMODE, __pyx_n_s_LOCKMODE, (PyObject *) NULL, __pyx_n_s_adios_mpi, (PyObject *) NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "adios_mpi.pyx":344
+  /* "adios_mpi.pyx":428
  * 
  * class LOCKMODE:
  *     NONE = 0             # <<<<<<<<<<<<<<
  *     CURRENT = 1
  *     ALL =2
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NONE, __pyx_int_0) < 0) __PYX_ERR(0, 344, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_NONE, __pyx_int_0) < 0) __PYX_ERR(0, 428, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":345
+  /* "adios_mpi.pyx":429
  * class LOCKMODE:
  *     NONE = 0
  *     CURRENT = 1             # <<<<<<<<<<<<<<
  *     ALL =2
  * 
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_CURRENT, __pyx_int_1) < 0) __PYX_ERR(0, 345, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_CURRENT, __pyx_int_1) < 0) __PYX_ERR(0, 429, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":346
+  /* "adios_mpi.pyx":430
  *     NONE = 0
  *     CURRENT = 1
  *     ALL =2             # <<<<<<<<<<<<<<
  * 
  * cpdef __parse_index(index, ndim):
  */
-  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ALL, __pyx_int_2) < 0) __PYX_ERR(0, 346, __pyx_L1_error)
+  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_ALL, __pyx_int_2) < 0) __PYX_ERR(0, 430, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":343
+  /* "adios_mpi.pyx":427
  *     ICEE          = 6
  * 
  * class LOCKMODE:             # <<<<<<<<<<<<<<
  *     NONE = 0
  *     CURRENT = 1
  */
-  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LOCKMODE, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LOCKMODE, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 427, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCKMODE, __pyx_t_2) < 0) __PYX_ERR(0, 343, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCKMODE, __pyx_t_2) < 0) __PYX_ERR(0, 427, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":380
+  /* "adios_mpi.pyx":464
  * cdef MPI.Comm read_init_comm
  * 
  * cpdef init(str config, MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
  *     global init_comm
  *     init_comm = comm.Clone()
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 380, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 464, __pyx_L1_error)
   __pyx_k__7 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 380, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 464, __pyx_L1_error)
   __pyx_k__7 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":388
+  /* "adios_mpi.pyx":472
  *                    str name,
  *                    str mode,
  *                    MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
  *     cdef int64_t fd
  *     cdef int result
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 388, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 388, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 472, __pyx_L1_error)
   __pyx_k__8 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":385
+  /* "adios_mpi.pyx":469
  *     return adios_init(s2b(config), init_comm.ob_mpi)
  * 
  * cpdef int64_t open(str group_name,             # <<<<<<<<<<<<<<
  *                    str name,
  *                    str mode,
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 388, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios_mpi.pyx":388
+  /* "adios_mpi.pyx":472
  *                    str name,
  *                    str mode,
  *                    MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
  *     cdef int64_t fd
  *     cdef int result
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 388, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 472, __pyx_L1_error)
   __pyx_k__8 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":447
+  /* "adios_mpi.pyx":531
  * ## ====================
  * 
  * cpdef int init_noxml(MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
  *     global init_comm
  *     init_comm = comm.Clone()
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 447, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 447, __pyx_L1_error)
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 531, __pyx_L1_error)
   __pyx_k__9 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 447, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 447, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 531, __pyx_L1_error)
   __pyx_k__9 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":683
+  /* "adios_mpi.pyx":543
+ * cpdef int64_t declare_group(str name,
+ *                             str time_index = "",
+ *                             int stats = adios_stat_default):             # <<<<<<<<<<<<<<
+ *     cdef int64_t id = 0
+ *     adios_declare_group (&id,
+ */
+  __pyx_k__11 = adios_stat_default;
+
+  /* "adios_mpi.pyx":541
+ *                                  buffer_size)
+ * 
+ * cpdef int64_t declare_group(str name,             # <<<<<<<<<<<<<<
+ *                             str time_index = "",
+ *                             int stats = adios_stat_default):
+ */
+  __pyx_k__11 = adios_stat_default;
+
+  /* "adios_mpi.pyx":875
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",
  *                     MPI.Comm comm = MPI.COMM_WORLD,             # <<<<<<<<<<<<<<
  *                     str parameters = ""):
  *     global read_init_comm
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 683, __pyx_L1_error)
-  __pyx_k__11 = ((struct PyMPICommObject *)__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 875, __pyx_L1_error)
+  __pyx_k__12 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":682
+  /* "adios_mpi.pyx":874
  * 
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",             # <<<<<<<<<<<<<<
  *                     MPI.Comm comm = MPI.COMM_WORLD,
  *                     str parameters = ""):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "adios_mpi.pyx":683
+  /* "adios_mpi.pyx":875
  * """ Call adios_read_init_method """
  * cpdef int read_init(str method_name = "BP",
  *                     MPI.Comm comm = MPI.COMM_WORLD,             # <<<<<<<<<<<<<<
  *                     str parameters = ""):
  *     global read_init_comm
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 683, __pyx_L1_error)
-  __pyx_k__11 = ((struct PyMPICommObject *)__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 875, __pyx_L1_error)
+  __pyx_k__12 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":804
+  /* "adios_mpi.pyx":996
  *     def __init__(self, str fname,
  *                  str method_name = "BP",
  *                  MPI.Comm comm = MPI.COMM_WORLD,             # <<<<<<<<<<<<<<
  *                  is_stream = False,
  *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 804, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 996, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 804, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 996, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 804, __pyx_L1_error)
-  __pyx_k__15 = ((struct PyMPICommObject *)__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 996, __pyx_L1_error)
+  __pyx_k__16 = ((struct PyMPICommObject *)__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "adios_mpi.pyx":806
+  /* "adios_mpi.pyx":998
  *                  MPI.Comm comm = MPI.COMM_WORLD,
  *                  is_stream = False,
  *                  ADIOS_LOCKMODE lock_mode = ADIOS_LOCKMODE_ALL,             # <<<<<<<<<<<<<<
  *                  float timeout_sec = 0.0):
  *         self.fp = NULL
  */
-  __pyx_k__16 = ADIOS_LOCKMODE_ALL;
+  __pyx_k__17 = ADIOS_LOCKMODE_ALL;
 
-  /* "adios_mpi.pyx":1764
+  /* "adios_mpi.pyx":1963
  *                  bint is_noxml = True,
  *                  str mode = "w",
  *                  MPI.Comm comm = MPI.COMM_WORLD):             # <<<<<<<<<<<<<<
+ *         self.gid = 0
  *         self.fname = fname
- *         self.method = ""
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MPI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1963, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1764, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_COMM_WORLD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1963, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 1764, __pyx_L1_error)
-  __pyx_k__53 = ((struct PyMPICommObject *)__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6mpi4py_3MPI_Comm))))) __PYX_ERR(0, 1963, __pyx_L1_error)
+  __pyx_k__54 = ((struct PyMPICommObject *)__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1804
+  /* "adios_mpi.pyx":2020
  * 
  *     def define_var(self, str varname,
  *                    ldim = tuple(),             # <<<<<<<<<<<<<<
  *                    gdim = tuple(),
- *                    offset = tuple()):
+ *                    offset = tuple(),
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1804, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2020, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__54 = __pyx_t_1;
+  __pyx_k__55 = __pyx_t_1;
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1805
+  /* "adios_mpi.pyx":2021
  *     def define_var(self, str varname,
  *                    ldim = tuple(),
  *                    gdim = tuple(),             # <<<<<<<<<<<<<<
- *                    offset = tuple()):
- *         """
+ *                    offset = tuple(),
+ *                    transform = None):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1805, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2021, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__55 = __pyx_t_1;
+  __pyx_k__56 = __pyx_t_1;
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1806
+  /* "adios_mpi.pyx":2022
  *                    ldim = tuple(),
  *                    gdim = tuple(),
- *                    offset = tuple()):             # <<<<<<<<<<<<<<
+ *                    offset = tuple(),             # <<<<<<<<<<<<<<
+ *                    transform = None):
  *         """
- *         Define a variable associated with the file.
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1806, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2022, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k__56 = __pyx_t_1;
+  __pyx_k__57 = __pyx_t_1;
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1982
+  /* "adios_mpi.pyx":2218
  * 
  *     def __init__(self, str name,
  *                  ldim = tuple(),             # <<<<<<<<<<<<<<
  *                  gdim = tuple(),
  *                  offset = tuple(),
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2218, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_k__59 = __pyx_t_1;
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1983
+  /* "adios_mpi.pyx":2219
  *     def __init__(self, str name,
  *                  ldim = tuple(),
  *                  gdim = tuple(),             # <<<<<<<<<<<<<<
  *                  offset = tuple(),
- *                  value = None):
+ *                  value = None,
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1983, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2219, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_k__60 = __pyx_t_1;
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":1984
+  /* "adios_mpi.pyx":2220
  *                  ldim = tuple(),
  *                  gdim = tuple(),
  *                  offset = tuple(),             # <<<<<<<<<<<<<<
- *                  value = None):
- *         self.name = name
+ *                  value = None,
+ *                  transform = None):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1984, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyTuple_Type)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2220, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_k__61 = __pyx_t_1;
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":2038
+  /* "adios_mpi.pyx":2280
  * 
  * ## Aliases
  * File = file             # <<<<<<<<<<<<<<
  * Var = var
  * Attr = attr
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_File, ((PyObject *)__pyx_ptype_9adios_mpi_file)) < 0) __PYX_ERR(0, 2038, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_File, ((PyObject *)__pyx_ptype_9adios_mpi_file)) < 0) __PYX_ERR(0, 2280, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2039
+  /* "adios_mpi.pyx":2281
  * ## Aliases
  * File = file
  * Var = var             # <<<<<<<<<<<<<<
  * Attr = attr
  * Writer = writer
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Var, ((PyObject *)__pyx_ptype_9adios_mpi_var)) < 0) __PYX_ERR(0, 2039, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Var, ((PyObject *)__pyx_ptype_9adios_mpi_var)) < 0) __PYX_ERR(0, 2281, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2040
+  /* "adios_mpi.pyx":2282
  * File = file
  * Var = var
  * Attr = attr             # <<<<<<<<<<<<<<
  * Writer = writer
  * Attrinfo = attrinfo
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attr, ((PyObject *)__pyx_ptype_9adios_mpi_attr)) < 0) __PYX_ERR(0, 2040, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attr, ((PyObject *)__pyx_ptype_9adios_mpi_attr)) < 0) __PYX_ERR(0, 2282, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2041
+  /* "adios_mpi.pyx":2283
  * Var = var
  * Attr = attr
  * Writer = writer             # <<<<<<<<<<<<<<
  * Attrinfo = attrinfo
  * Varinfo = varinfo
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Writer, ((PyObject *)__pyx_ptype_9adios_mpi_writer)) < 0) __PYX_ERR(0, 2041, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Writer, ((PyObject *)__pyx_ptype_9adios_mpi_writer)) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2042
+  /* "adios_mpi.pyx":2284
  * Attr = attr
  * Writer = writer
  * Attrinfo = attrinfo             # <<<<<<<<<<<<<<
  * Varinfo = varinfo
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attrinfo, ((PyObject *)__pyx_ptype_9adios_mpi_attrinfo)) < 0) __PYX_ERR(0, 2042, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attrinfo, ((PyObject *)__pyx_ptype_9adios_mpi_attrinfo)) < 0) __PYX_ERR(0, 2284, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2043
+  /* "adios_mpi.pyx":2285
  * Writer = writer
  * Attrinfo = attrinfo
  * Varinfo = varinfo             # <<<<<<<<<<<<<<
  * 
  * ## ====================
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Varinfo, ((PyObject *)__pyx_ptype_9adios_mpi_varinfo)) < 0) __PYX_ERR(0, 2043, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Varinfo, ((PyObject *)__pyx_ptype_9adios_mpi_varinfo)) < 0) __PYX_ERR(0, 2285, __pyx_L1_error)
 
-  /* "adios_mpi.pyx":2049
+  /* "adios_mpi.pyx":2291
  * ## ====================
  * 
  * def readvar(fname, varname):             # <<<<<<<<<<<<<<
  *     """ Retrieve a variable value from an Adios file.
  * 
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9adios_mpi_57readvar, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2049, __pyx_L1_error)
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9adios_mpi_93readvar, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2291, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readvar_2, __pyx_t_1) < 0) __PYX_ERR(0, 2049, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readvar_2, __pyx_t_1) < 0) __PYX_ERR(0, 2291, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "adios_mpi.pyx":2063
+  /* "adios_mpi.pyx":2305
  *     return v.read(from_steps=0, nsteps=v.nsteps)
  * 
  * def bpls(fname):             # <<<<<<<<<<<<<<
  *     """ Return meta data of an Adios file as a Python dictionary object.
  * 
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9adios_mpi_59bpls, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2063, __pyx_L1_error)
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9adios_mpi_95bpls, NULL, __pyx_n_s_adios_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2305, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_1) < 0) __PYX_ERR(0, 2063, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bpls, __pyx_t_1) < 0) __PYX_ERR(0, 2305, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "adios_mpi.pyx":1
@@ -38916,9 +42879,9 @@ PyMODINIT_FUNC PyInit_adios_mpi(void)
  */
   __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_var_read_line_1264, __pyx_kp_u_Perform_read_Read_data_from_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_writer_declare_group_line_1781, __pyx_kp_u_Define_a_group_associated_with) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_writer_define_var_line_1803, __pyx_kp_u_Define_a_variable_associated_wi) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_var_read_line_1456, __pyx_kp_u_Perform_read_Read_data_from_an) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_writer_declare_group_line_1982, __pyx_kp_u_Define_a_group_associated_with) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_writer_define_var_line_2019, __pyx_kp_u_Define_a_variable_associated_wi) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
diff --git a/wrappers/numpy/adios_mpi.pyx b/wrappers/numpy/adios_mpi.pyx
index 79d8ecd..b8fb588 100644
--- a/wrappers/numpy/adios_mpi.pyx
+++ b/wrappers/numpy/adios_mpi.pyx
@@ -107,6 +107,13 @@ cdef extern from "adios_types.h":
     ctypedef enum ADIOS_FLAG:
         pass
 
+    ctypedef enum ADIOS_STATISTICS_FLAG:
+        adios_stat_no
+        adios_stat_minmax
+        adios_stat_full
+        adios_stat_default
+        adios_stat_no_do_not_use_this
+
 cdef extern from "adios.h":
     ctypedef struct MPI_Comm:
         pass
@@ -146,9 +153,9 @@ cdef extern from "adios.h":
     cdef int adios_declare_group (int64_t * id,
                                   char * name,
                                   char * time_index,
-                                  ADIOS_FLAG stats)
+                                  ADIOS_STATISTICS_FLAG stats)
 
-    cdef int adios_define_var (int64_t group_id,
+    cdef int64_t adios_define_var (int64_t group_id,
                                char * name,
                                char * path,
                                ADIOS_DATATYPES type,
@@ -156,6 +163,74 @@ cdef extern from "adios.h":
                                char * global_dimensions,
                                char * local_offsets)
 
+    ### Ab hier:
+    cdef int adios_define_schema_version (int64_t group_id, char * schema_version)
+
+    cdef int adios_define_var_mesh (int64_t group_id , const char * varname ,
+                                    const char * meshname)
+
+    cdef int adios_define_var_centering (int64_t group_id , const char * varname ,
+                                         const char * centering)
+
+    cdef int adios_define_var_timesteps (const char * timesteps , int64_t group_id ,
+                                         const char * name)
+
+    cdef int adios_define_var_timescale (const char * timescale , int64_t group_id ,
+                                         const char * name)
+    
+    cdef int adios_define_var_timeseriesformat (const char * timeseries , int64_t group_id ,
+                                                const char * name)
+    
+    cdef int adios_define_var_hyperslab (const char * hyperslab , int64_t group_id ,
+                                         const char * name)
+    
+    cdef int adios_define_mesh_timevarying (const char * timevarying , int64_t group_id ,
+                                            const char * name)
+    
+    cdef int adios_define_mesh_timesteps (const char * timesteps , int64_t group_id ,
+                                          const char * name)
+    
+    cdef int adios_define_mesh_timescale (const char * timescale , int64_t group_id ,
+                                         const char * name)
+    
+    cdef int adios_define_mesh_timeseriesformat (const char * timeseries , int64_t group_id ,
+                                                 const char * name)
+
+    cdef int adios_define_mesh_uniform (char * dimensions,
+                                   char * origin,
+                                   char * spacing,
+                                   char * maximum,
+                                   char * nspace,
+                                   int64_t group_id,
+                                   const char * name
+                                  )
+    
+    cdef int adios_define_mesh_rectilinear (char * dimensions,
+                                       char * coordinates,
+                                       char * nspace,
+                                       int64_t group_id,
+                                       const char * name
+                                      ) 
+    
+    cdef int adios_define_mesh_structured (char * dimensions,
+                                      char * points,
+                                      char * nspace,
+                                      int64_t group_id,
+                                      const char * name
+                                     )
+    
+    cdef int adios_define_mesh_unstructured (char * points,
+                                        char * data,
+                                        char * count,
+                                        char * cell_type,
+                                        char * npoints,
+                                        char * nspace,
+                                        int64_t group_id,
+                                        const char * name
+                                       )
+
+    ### Bis hier 
+
     cdef int adios_define_attribute (int64_t group,
                                      char * name,
                                      char * path,
@@ -175,6 +250,15 @@ cdef extern from "adios.h":
                                   char * parameters,
                                   char * base_path)
 
+    cdef int adios_set_transform (int64_t var_id, const char *transform_type_str)
+
+    cdef void adios_set_max_buffer_size (uint64_t max_buffer_size_MB)
+
+    cdef int adios_set_time_aggregation(int64_t groupid,
+                                        uint64_t buffersize,
+                                        int64_t syncgroupid)
+
+
 cdef extern from "adios_selection.h":
     ctypedef enum ADIOS_SELECTION_TYPE:
         ADIOS_SELECTION_BOUNDINGBOX
@@ -456,15 +540,15 @@ cpdef int allocate_buffer(int when,
 
 cpdef int64_t declare_group(str name,
                             str time_index = "",
-                            int stats = 1):
+                            int stats = adios_stat_default):
     cdef int64_t id = 0
     adios_declare_group (&id,
                          s2b(name),
                          s2b(time_index),
-                         <ADIOS_FLAG> stats)
+                         <ADIOS_STATISTICS_FLAG> stats)
     return id
 
-cpdef int define_var(int64_t group_id,
+cpdef int64_t define_var(int64_t group_id,
                      str name,
                      str path,
                      int atype,
@@ -479,6 +563,101 @@ cpdef int define_var(int64_t group_id,
                             s2b(global_dimensions),
                             s2b(local_offsets))
 
+cpdef int define_schema_version (int64_t group_id, str schema_version):
+    return adios_define_schema_version (group_id, s2b(schema_version))
+
+cpdef int define_var_mesh (int64_t group_id, str varname, str meshname):
+    return adios_define_var_mesh (group_id, s2b(varname), s2b(meshname))
+
+cpdef int define_var_centering (int64_t group_id, str varname, str centering):
+    return adios_define_var_centering (group_id, s2b(varname), s2b(centering))
+
+cpdef int define_var_timesteps (str timesteps, int64_t group_id, str name):
+    return adios_define_var_timesteps (s2b(timesteps), group_id, s2b(name))
+
+cpdef int define_var_timescale (str timescale , int64_t group_id ,str name):
+    return adios_define_var_timescale (s2b(timescale) , group_id ,s2b(name))
+                                         
+cpdef int define_var_timeseriesformat (str timeseries , int64_t group_id ,str name):
+    return adios_define_var_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+                                                
+cpdef int define_var_hyperslab (str hyperslab , int64_t group_id ,str name):
+    return adios_define_var_hyperslab (s2b(hyperslab) , group_id ,s2b(name))
+                                         
+cpdef int define_mesh_timevarying (str timevarying , int64_t group_id ,str name):
+    return adios_define_mesh_timevarying (s2b(timevarying) , group_id ,s2b(name))
+                                            
+cpdef int define_mesh_timesteps (str timesteps , int64_t group_id ,str name):
+    return adios_define_mesh_timesteps (s2b(timesteps) , group_id ,s2b(name))
+                                          
+cpdef int define_mesh_timescale (str timescale , int64_t group_id ,str name):
+    return adios_define_mesh_timescale (s2b(timescale) , group_id ,s2b(name))
+                                         
+cpdef int define_mesh_timeseriesformat (str timeseries , int64_t group_id ,str name):
+    return adios_define_mesh_timeseriesformat (s2b(timeseries) , group_id ,s2b(name))
+                                                 
+cpdef int define_mesh_uniform (str dimensions,
+                                   str origin,
+                                   str spacing,
+                                   str maximum,
+                                   str nspace,
+                                   int64_t group_id,
+                                   str name
+                                  ):
+    return adios_define_mesh_uniform (s2b(dimensions),
+                                   s2b(origin),
+                                   s2b(spacing),
+                                   s2b(maximum),
+                                   s2b(nspace),
+                                   group_id,
+                                   s2b(name)
+                                  )
+    
+cpdef int define_mesh_rectilinear (str dimensions,
+                                       str coordinates,
+                                       str nspace,
+                                       int64_t group_id,
+                                       str name
+                                      ): 
+    return adios_define_mesh_rectilinear (s2b(dimensions),
+                                       s2b(coordinates),
+                                       s2b(nspace),
+                                       group_id,
+                                       s2b(name)
+                                      ) 
+    
+cpdef int define_mesh_structured (str dimensions,
+                                      str points,
+                                      str nspace,
+                                      int64_t group_id,
+                                      str name
+                                     ):
+    return adios_define_mesh_structured (s2b(dimensions),
+                                      s2b(points),
+                                      s2b(nspace),
+                                      group_id,
+                                      s2b(name)
+                                     )
+    
+cpdef int define_mesh_unstructured (str points,
+                                        str data,
+                                        str count,
+                                        str cell_type,
+                                        str npoints,
+                                        str nspace,
+                                        int64_t group_id,
+                                        str name
+                                       ):
+    return adios_define_mesh_unstructured (s2b(points),
+                                        s2b(data),
+                                        s2b(count),
+                                        s2b(cell_type),
+                                        s2b(npoints),
+                                        s2b(nspace),
+                                        group_id,
+                                        s2b(name)
+                                       )
+
 cpdef int define_attribute (int64_t group,
                             str name,
                             str path,
@@ -545,6 +724,19 @@ cpdef int select_method (int64_t group,
                                 s2b(parameters),
                                 s2b(base_path))
 
+cpdef int set_transform (int64_t var_id, str transform_type_str):
+    return adios_set_transform (var_id, s2b(transform_type_str))
+
+cpdef void set_max_buffer_size (int64_t max_buffer_size_MB):
+    adios_set_max_buffer_size (max_buffer_size_MB)
+
+cpdef int set_time_aggregation (int64_t groupid,
+                                      uint64_t buffersize,
+                                      int64_t syncgroupid):
+    return adios_set_time_aggregation (groupid,
+                                       buffersize,
+                                       syncgroupid)
+
 
 ## ====================
 ## ADIOS Read API (V2)
@@ -842,7 +1034,7 @@ cdef class file(dict):
         self.close()
 
     def __enter__(self):
-        """ Enter for with statemetn """
+        """ Enter for with statement """
         return self
 
     def __exit__(self, exception_type, exception_value, traceback):
@@ -1728,6 +1920,8 @@ cdef class writer(object):
     cpdef dict vars
     cpdef dict attrs
 
+    cpdef uint64_t timeaggregation_buffersize
+
     property fname:
         """ The filename to write. """
         def __get__(self):
@@ -1758,10 +1952,16 @@ cdef class writer(object):
         def __get__(self):
             return self.attrs
 
+    property timeaggregation_buffersize:
+        """ Get time-aggregation buffersize. """
+        def __get__(self):
+            return self.timeaggregation_buffersize
+
     def __init__(self, str fname,
                  bint is_noxml = True,
                  str mode = "w",
                  MPI.Comm comm = MPI.COMM_WORLD):
+        self.gid = 0
         self.fname = fname
         self.method = ""
         self.method_params = ""
@@ -1770,6 +1970,7 @@ cdef class writer(object):
         self.comm = comm
         self.vars = dict()
         self.attrs = dict()
+        self.timeaggregation_buffersize = 0
 
         init_noxml(comm)
     ##def __var_factory__(self, name, value):
@@ -1778,7 +1979,7 @@ cdef class writer(object):
     ##def __attr_factory__(self, name, value):
     ##    print "attr_factory:", name, value
 
-    def declare_group(self, str gname,
+    def declare_group(self, str gname = None,
                       str method = "POSIX1",
                       str method_params = ""):
         """
@@ -1794,24 +1995,41 @@ cdef class writer(object):
         >>>  fw.declare_group('group', method='MPI', method_params='verbose=3')
 
         """
-        self.gid = declare_group(gname, "", 1)
-        self.gname = gname
+        if gname is not None:
+            self.gname = gname
+
+        if self.gname is None:
+            self.gname = "group"
+
+        self.gid = declare_group(self.gname, "", adios_stat_default)
         self.method = method
         self.method_params = method_params
         select_method(self.gid, self.method, self.method_params, "")
+        self.set_time_aggregation()
+
+    def set_time_aggregation(self, buffer_size = None):
+        """
+        Set time-aggregation buffersize.
+        """
+        if buffer_size is not None:
+            self.timeaggregation_buffersize = buffer_size
+        if self.gid > 0:
+            set_time_aggregation (self.gid, self.timeaggregation_buffersize, 0);
 
     def define_var(self, str varname,
                    ldim = tuple(),
                    gdim = tuple(),
-                   offset = tuple()):
+                   offset = tuple(),
+                   transform = None):
         """
         Define a variable associated with the file.
 
         Args:
-            varname (str): variable name.
+            varname (str): variable name
             ldim (tuple, optional): local dimension (default: tuple())
             gdim (tuple, optional): global dimension (default: tuple())
             offset (tuple, optional): offset (default: tuple())
+            transform (str): transform name
 
         Example:
 
@@ -1820,7 +2038,7 @@ cdef class writer(object):
         >>>  fw.define_var ('temperature', (2,3))
 
         """
-        self.vars[varname] = varinfo(varname, ldim, gdim, offset)
+        self.vars[varname] = varinfo(varname, ldim, gdim, offset, transform=transform)
 
     def define_attr(self, str attrname):
         """
@@ -1836,13 +2054,22 @@ cdef class writer(object):
                             str varname,
                             dtype):
         self.attrs[attrname] = attrinfo(attrname, varname, dtype, is_static=False)
+
     def __setitem__(self, name, val):
         if self.vars.has_key(name):
-            self.vars[name] = val
+            if not isinstance(val, varinfo):
+                self.vars[name].value = val
+            else:
+                self.vars[name] = val
         elif self.attrs.has_key(name):
-            self.attrs[name] = val
+            if not isinstance(val, attrinfo):
+                self.attrs[name] = attrinfo(name, val, np.array(val).dtype)
+            else:
+                self.attrs[name].value = val
         else:
-            self.vars[name] = val
+            n = np.array(val)
+            self.vars[name] = varinfo(name, n.shape)
+            self.vars[name].value = val
 
     def __getitem__(self, name):
         if self.vars.has_key(name):
@@ -1856,8 +2083,8 @@ cdef class writer(object):
         """
         Write variables and attributes to a file and close the writer.
         """
-        if self.gname is None:
-            self.declare_group("group")
+        if self.gid == 0:
+            self.declare_group()
 
         fd = open(self.gname, self.fname, self.mode)
 
@@ -1870,7 +2097,8 @@ cdef class writer(object):
                 extra_vars[key] = varinfo(key, n.shape)
                 extra_vars[key].value = val
             else:
-                if self.is_noxml: val.define(self.gid)
+                if self.is_noxml:
+                    val.define(self.gid)
 
         for key, val in extra_vars.iteritems():
             if self.is_noxml: val.define(self.gid)
@@ -1911,7 +2139,7 @@ cdef class writer(object):
                  self.mode)
 
     def __enter__(self):
-        """ Enter for with statemetn """
+        """ Enter for with statement """
         return self
 
     def __exit__(self, exception_type, exception_value, traceback):
@@ -1977,17 +2205,27 @@ cdef class varinfo(object):
     cdef public gdim
     cdef public offset
     cdef public value
+    cdef str transform
+
+    property transform:
+        """ Transform method """
+        def __get__(self):
+            return self.fname
+        def __set__(self, value):
+            self.transform = value
 
     def __init__(self, str name,
                  ldim = tuple(),
                  gdim = tuple(),
                  offset = tuple(),
-                 value = None):
+                 value = None,
+                 transform = None):
         self.name = name
         self.ldim = ldim
         self.gdim = gdim
         self.offset = offset
         self.value = value
+        self.transform = transform
 
     def define(self, int64_t gid):
         if self.value is None:
@@ -2011,11 +2249,15 @@ cdef class varinfo(object):
 
         atype = np2adiostype(val_.dtype)
         ## No space allowed
-        define_var(gid, self.name, "", atype,
+        cdef int64_t varid = 0;
+        varid = define_var(gid, self.name, "", atype,
                    str(ldim_).replace(' ', '').strip('(,)'),
                    str(gdim_).replace(' ', '').strip('(,)'),
                    str(offset_).replace(' ', '').strip('(,)'))
 
+        if (self.transform is not None):
+            set_transform(varid, self.transform)
+
     def bytes(self):
         val_ = self.value
         if not isinstance(self.value, (np.ndarray)):
@@ -2031,8 +2273,8 @@ cdef class varinfo(object):
         write(fd, self.name, val_)
 
     def __repr__(self):
-        return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, value=%r)") % \
-                (self.name, self.ldim, self.gdim, self.offset, self.value)
+        return ("AdiosVarinfo (name=%r, ldim=%r, gdim=%r, offset=%r, transform=%r, value=%r)") % \
+                (self.name, self.ldim, self.gdim, self.offset, self.transform, self.value)
 
 ## Aliases
 File = file
diff --git a/wrappers/numpy/build-and-install.sh b/wrappers/numpy/build-and-install.sh
new file mode 100755
index 0000000..8de14d3
--- /dev/null
+++ b/wrappers/numpy/build-and-install.sh
@@ -0,0 +1,14 @@
+#!/bin/bash -v
+rm -rf ./build
+sed -f adios_mpi2serial.sed adios_mpi.pyx > adios.pyx
+cython -X embedsignature=True --cplus adios.pyx    
+cython -X embedsignature=True --cplus adios_mpi.pyx    
+[ $? -ne 0 ] && exit $?
+CC=clang CXX=clang++ python setup.py install --user
+python setup_mpi.py install --user
+
+#cd doc
+#touch source/index.rst
+#make html
+#cd ..
+
diff --git a/wrappers/numpy/doc/source/build.rst b/wrappers/numpy/doc/source/build.rst
index 2043346..8b4d31b 100644
--- a/wrappers/numpy/doc/source/build.rst
+++ b/wrappers/numpy/doc/source/build.rst
@@ -12,24 +12,24 @@ Quick install with pip
 ADIOS Python wrapper can be installed with pip. Check if pip is
 installed already. Otherwise, install pip first
 ::
-   $ wget https://bootstrap.pypa.io/get-pip.py
-   $ sudo python get-pip.py
+$ wget https://bootstrap.pypa.io/get-pip.py
+$ sudo python get-pip.py
 
 Or,
 ::
-   $ python get-pip.py --user
+$ python get-pip.py --user
 
 to install in a local directory, $HOME/.local
 
 Then, install Adios and Adios-MPI wrapper as follows:
 ::
-   $ pip install adios
-   $ pip install adios_mpi
+$ pip install adios
+$ pip install adios_mpi
 
 If you want to install in a custom directory, use the following:
 ::
-   $ pip install --install-option="--prefix=$PREFIX" adios
-   $ pip install --install-option="--prefix=$PREFIX" adios_mpi
+$ pip install --install-option="--prefix=$PREFIX" adios
+$ pip install --install-option="--prefix=$PREFIX" adios_mpi
 
 
 Trouble Shooting
@@ -41,8 +41,8 @@ Custom MPICC and MPICXX
 If one needs to use a custom MPICC and MPICXX command (e.g., Titan),
 then use the following command:
 ::
-   $ pip --global-option=build_ext \
-         --global-option=--mpicc=cc --global-option=--mpicxx=CC adios
+$ pip --global-option=build_ext \
+--global-option=--mpicc=cc --global-option=--mpicxx=CC adios
 
 
 "Could not find any downloads that satisfy the requirement" with pip
@@ -50,6 +50,6 @@ then use the following command:
 
 If the error is caused by a certificate error, then, try
 ::
-   $ wget http://curl.haxx.se/ca/cacert.pem
-   $ pip --cert cacert.pem search adios
-   $ pip --cert cacert.pem install adios
+$ wget http://curl.haxx.se/ca/cacert.pem
+$ pip --cert cacert.pem search adios
+$ pip --cert cacert.pem install adios
diff --git a/wrappers/numpy/src/__init__.py b/wrappers/numpy/src/__init__.py
index d72a1b3..415bfcc 100644
--- a/wrappers/numpy/src/__init__.py
+++ b/wrappers/numpy/src/__init__.py
@@ -1,2 +1,2 @@
 from .adios import *
-__version__ = '1.9.1b19'
+__version__ = '1.11.0b1'
diff --git a/wrappers/numpy/src_mpi/__init__.py b/wrappers/numpy/src_mpi/__init__.py
index da69a47..bb65a2d 100644
--- a/wrappers/numpy/src_mpi/__init__.py
+++ b/wrappers/numpy/src_mpi/__init__.py
@@ -1,2 +1,2 @@
 from .adios_mpi import *
-__version__ = '1.9.1b19'
+__version__ = '1.11.0b1'
diff --git a/wrappers/numpy/test/test_adios_writer_unittest.py b/wrappers/numpy/test/test_adios_writer_unittest.py
index 4ccfe54..5bc17a2 100644
--- a/wrappers/numpy/test/test_adios_writer_unittest.py
+++ b/wrappers/numpy/test/test_adios_writer_unittest.py
@@ -153,5 +153,48 @@ class AdiosTestCase(ut.TestCase):
         self.assertEqual(f.nvars, 3)
         self.assertEqual(f._nvars[...], NVARS)
 
+    def test_writer_transform(self):
+        self.temp = TempFile()
+
+        NX = 10
+        val1 = np.array(list(range(NX)), dtype=np.int32)
+        val2 = np.array(list(range(5)), dtype='f8')
+
+        fw = ad.writer(self.temp.path)
+        fw.declare_group("group", method="POSIX1")
+
+        fw['NX'] = NX
+        fw['val1'] = val1
+        fw['val2'] = val2
+        fw['val1'].transform = 'identity'
+        fw.close()
+
+        f = ad.file(self.temp.path)
+        self.assertEqual(f['NX'][...], NX)
+        self.assertTrue((f['val1'][:] == val1).all())
+        self.assertTrue((f['val2'][:] == val2).all())
+
+    def test_writer_timeaggregation(self):
+        self.temp = TempFile()
+
+        NX = 10
+        val1 = np.array(list(range(NX)), dtype=np.int32)
+        val2 = np.array(list(range(5)), dtype='f8')
+
+        fw = ad.writer(self.temp.path)
+        fw.declare_group("group", method="POSIX1")
+        fw.set_time_aggregation(3200)
+
+        fw['NX'] = NX
+        fw['val1'] = val1
+        fw['val2'] = val2
+        fw.close()
+        ad.finalize()
+
+        f = ad.file(self.temp.path)
+        self.assertEqual(f['NX'][...], NX)
+        self.assertTrue((f['val1'][:] == val1).all())
+        self.assertTrue((f['val2'][:] == val2).all())
+
 if __name__ == '__main__':
     ut.main()
diff --git a/wrappers/numpy/tests/test_adios_attribute.py b/wrappers/numpy/tests/test_adios_attribute.py
index 1c87c45..3f0e9e7 100644
--- a/wrappers/numpy/tests/test_adios_attribute.py
+++ b/wrappers/numpy/tests/test_adios_attribute.py
@@ -16,7 +16,8 @@ init = "verbose=3;"
 
 ## Init
 ad.init_noxml()
-ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+ad.set_max_buffer_size (10)
+
 g = ad.declare_group("temperature", "", 1)
 ad.define_var(g, "NX", "", ad.DATATYPE.integer, "", "", "")
 ad.define_var(g, "size", "", ad.DATATYPE.integer, "", "", "")
diff --git a/wrappers/numpy/tests/test_adios_mpi_writer.py b/wrappers/numpy/tests/test_adios_mpi_writer.py
index 5efeb97..8f44e0c 100644
--- a/wrappers/numpy/tests/test_adios_mpi_writer.py
+++ b/wrappers/numpy/tests/test_adios_mpi_writer.py
@@ -5,11 +5,13 @@ Example:
 $ mpiexec -n 4 python ./test_adios_mpi_writer.py
 """
 
+""" Import ADIOS Python/Numpy wrapper """
 import adios_mpi as ad
 import numpy as np
+""" Require MPI4Py installed """
 from mpi4py import MPI
 
-## Init
+""" Init """
 comm = MPI.COMM_WORLD
 rank = comm.Get_rank()
 size = comm.Get_size()
@@ -18,17 +20,21 @@ size = comm.Get_size()
 print("\n>>> Prepare ... (rank = %d)\n" % rank)
 fname = 'adios_test_mpi_writer.bp'
 NX = 10
-t = np.array(list(range(NX*size)), dtype=np.float64) + rank*NX
+t = np.arange(NX*size, dtype=np.float64) + rank*NX
 gdim = (size, NX)
+ldim = (1, NX)
 offset = (rank, 0)
 
+""" Writing """
 print("\n>>> Writing ... (rank = %d)\n" % rank)
 ad.init_noxml()
-ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+ad.set_max_buffer_size (100);
 
 fw = ad.writer(fname, comm=comm)
 fw.declare_group('group', method='MPI')
-fw.define_var('temperature', ldim=(1,NX), gdim=gdim, offset=offset)
+#fw.define_var('temperature', ldim=(1,NX), gdim=gdim, offset=offset, transform='zfp:accuracy=0.0001')
+#fw.define_var('temperature', ldim=(1,NX), gdim=gdim, offset=offset, transform='zlib')
+fw.define_var('temperature', ldim=ldim, gdim=gdim, offset=offset, transform='none')
 
 fw['NX'] = NX
 fw['size'] = size
@@ -36,7 +42,7 @@ fw['temperature'] = t
 fw.attrs['/temperature/description'] = "Global array written from 'size' processes"
 fw.close()
 
-## Reading
+""" Reading """
 if rank == 0:
     print("\n>>> Reading ...\n")
 
@@ -48,3 +54,5 @@ if rank == 0:
         print(key, '=', val.value)
 
     print("\n>>> Done.\n")
+
+ad.finalize()
diff --git a/wrappers/numpy/tests/test_adios_writer.py b/wrappers/numpy/tests/test_adios_writer.py
index 646352a..35be3d9 100644
--- a/wrappers/numpy/tests/test_adios_writer.py
+++ b/wrappers/numpy/tests/test_adios_writer.py
@@ -2,9 +2,10 @@
 """
 Example:
 
-$ python ./test_adios_write.py
+$ python ./test_adios_writer.py
 """
 
+""" Import ADIOS Python/Numpy wrapper """
 import adios as ad
 import numpy as np
 
@@ -12,12 +13,12 @@ print("\n>>> Prepare ...\n")
 fname = 'adios_test_writer.bp'
 NX = 10
 size = 2
-t = np.array(list(range(NX*size)), dtype=np.float64)
-tt = t.reshape((size, NX))
+tt = np.arange(NX*size, dtype=np.float64).reshape((size, NX))
 
+""" Writing """
 print("\n>>> Writing ...\n")
 ad.init_noxml()
-ad.allocate_buffer (ad.BUFFER_ALLOC_WHEN.NOW, 10);
+ad.set_max_buffer_size (10)
 
 fw = ad.writer(fname)
 fw.declare_group('group', method='POSIX1')
@@ -25,10 +26,11 @@ fw.declare_group('group', method='POSIX1')
 fw['NX'] = NX
 fw['size'] = size
 fw['temperature'] = tt
+fw['temperature'].transform = "zfp:accuracy=0.001"
 fw.attrs['/temperature/description'] = "Global array written from 'size' processes"
 fw.close()
 
-## Reading
+""" Reading """
 print("\n>>> Reading ...\n")
 
 f = ad.file(fname)
@@ -38,5 +40,6 @@ for key, val in f.vars.items():
 for key, val in f.attrs.items():
     print(key, '=', val.value)
 
-## Testing
+""" Finalizing """
 print("\n>>> Done.\n")
+ad.finalize()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/adios.git



More information about the debian-science-commits mailing list